diff options
author | rofl0r <retnyg@gmx.net> | 2012-11-09 23:36:55 +0100 |
---|---|---|
committer | rofl0r <retnyg@gmx.net> | 2012-11-13 19:12:25 +0100 |
commit | 1c8eb8bad791fe9d01d0d4ab77882db634fa933d (patch) | |
tree | d3faf83663c1383f7ea16a0e6c68b3e2f4cc968a /src/internal | |
parent | 7669d1e334e6b96455eece78da43bf830b93d697 (diff) | |
download | musl-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.s | 18 | ||||
-rw-r--r-- | src/internal/ppc/syscall.S | 24 |
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 |