summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-11-14 14:01:39 -0500
committerRich Felker <dalias@aerifal.cx>2012-11-14 14:01:39 -0500
commitc6d441e3a246370d9c459396ec22b096db93850e (patch)
treefa3d4a4ca03531ceab9e60abb50e37780fce60ed /src/internal
parentc4a35f8c2a4b1a7e62a4b9e5b2748fb4fbcace79 (diff)
parent1c8eb8bad791fe9d01d0d4ab77882db634fa933d (diff)
downloadmusl-c6d441e3a246370d9c459396ec22b096db93850e.tar.gz
Merge remote-tracking branch 'ppc-port/ppc-squashed'
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/powerpc/syscall.s18
1 files changed, 18 insertions, 0 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