summaryrefslogtreecommitdiff
path: root/src/internal
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal')
-rw-r--r--src/internal/powerpc64/syscall.s17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/internal/powerpc64/syscall.s b/src/internal/powerpc64/syscall.s
new file mode 100644
index 00000000..fe21f9e1
--- /dev/null
+++ b/src/internal/powerpc64/syscall.s
@@ -0,0 +1,17 @@
+ .global __syscall
+ .hidden __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
+ neg 3, 3 # otherwise error: return negated value.
+ blr
+ .end __syscall
+ .size __syscall, .-__syscall