summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2012-11-09 23:36:55 +0100
committerrofl0r <retnyg@gmx.net>2012-11-13 19:12:25 +0100
commit1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch)
treed3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /src/internal
parent7669d1e334e6b96455eece78da43bf830b93d697 (diff)
downloadmusl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.gz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.bz2
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.tar.xz
musl-1c8eb8bad791fe9d01d0d4ab77882db634fa933d.zip
PPC port cleaned up, static linking works well now.
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/powerpc/syscall.s18
-rw-r--r--src/internal/ppc/syscall.S24
2 files changed, 18 insertions, 24 deletions
diff --git a/src/internal/powerpc/syscall.s b/src/internal/powerpc/syscall.s
new file mode 100644
index 00000000..bca620db
--- /dev/null
+++ b/src/internal/powerpc/syscall.s
@@ -0,0 +1,18 @@
+ .global __syscall
+ .type __syscall,@function
+__syscall:
+ mr 0, 3 # Save the system call number
+ mr 3, 4 # Shift the arguments: arg1
+ mr 4, 5 # arg2
+ mr 5, 6 # arg3
+ mr 6, 7 # arg4
+ mr 7, 8 # arg5
+ mr 8, 9 # arg6
+ sc
+ bnslr+ # return if not summary overflow
+ #else error:
+ # return negated value.
+ neg 3, 3
+ blr
+ .end __syscall
+ .size __syscall, .-__syscall
diff --git a/src/internal/ppc/syscall.S b/src/internal/ppc/syscall.S
deleted file mode 100644
index e56abc6f..00000000
--- a/src/internal/ppc/syscall.S
+++ /dev/null
@@ -1,24 +0,0 @@
-#include <bits/asm.h>
- .global __syscall
- .type __syscall,@function
-__syscall:
- mflr r0
- stw r0, -4(r1) // Save the return address.
- mr r0, r3 // Save the system call number
- mr r3, r4 // Shift the arguments: arg1
- mr r4, r5 // arg2
- mr r5, r6 // arg3
- mr r6, r7 // arg4
- mr r7, r8 // arg5
- mr r8, r9 // arg6
- sc
- mfcr r0 // Check for an error
- rlwinm r4, r0, r0, 3, 3 // by checking for bit 28.
- cmplwi r0, r4, 0 // It is an error if non-zero.
- beq r0, 1f // Jump if not an error.
- neg r3, r3 // Negate the error number.
-1: lwz r0, -4(r1) // Restore the return address.
- mtlr r0
- blr
- .end __syscall
- .size __syscall, .-__syscall