about summary refs log tree commit diff
path: root/src/internal/powerpc64/syscall.s
diff options
context:
space:
mode:
authorBobby Bingham <koorogi@koorogi.info>2016-04-30 19:18:17 -0500
committerRich Felker <dalias@aerifal.cx>2016-05-08 22:57:40 -0400
commitc0ede9e4046a0882d83ae4b45c7dfac86fb7c15d (patch)
tree02956e3cc93a50bcc9c946fbc2bbffb883e72f2f /src/internal/powerpc64/syscall.s
parent6bc7d9c411c3a32cfa9d239b73fffb2ba66dd9ff (diff)
downloadmusl-c0ede9e4046a0882d83ae4b45c7dfac86fb7c15d.tar.gz
musl-c0ede9e4046a0882d83ae4b45c7dfac86fb7c15d.tar.xz
musl-c0ede9e4046a0882d83ae4b45c7dfac86fb7c15d.zip
add powerpc64 port
Diffstat (limited to 'src/internal/powerpc64/syscall.s')
-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