Module Name: src
Committed By: matt
Date: Sat Feb 1 20:26:21 UTC 2014
Modified Files:
src/lib/libc/arch/powerpc/sys: __syscall.S syscall.S
Log Message:
Since powerpc passes 8 arguments in registers and the syscall number in r0,
shuffle register argument so the kernel won't need to access the stack to
retrieve that last argument.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/arch/powerpc/sys/__syscall.S
cvs rdiff -u -r1.2 -r1.3 src/lib/libc/arch/powerpc/sys/syscall.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/arch/powerpc/sys/__syscall.S
diff -u src/lib/libc/arch/powerpc/sys/__syscall.S:1.1 src/lib/libc/arch/powerpc/sys/__syscall.S:1.2
--- src/lib/libc/arch/powerpc/sys/__syscall.S:1.1 Wed Dec 13 07:50:48 2000
+++ src/lib/libc/arch/powerpc/sys/__syscall.S Sat Feb 1 20:26:21 2014
@@ -1,5 +1,22 @@
-/* $NetBSD: __syscall.S,v 1.1 2000/12/13 07:50:48 matt Exp $ */
+/* $NetBSD: __syscall.S,v 1.2 2014/02/01 20:26:21 matt Exp $ */
-#include "SYS.h"
+#include <powerpc/asm.h>
-RSYSCALL(__syscall)
+ .text
+ .align 2
+ENTRY(__syscall)
+ mr %r0,%r3 /* syscall number */
+ mr %r3,%r4
+ mr %r4,%r5
+ mr %r5,%r6
+ mr %r6,%r7
+ mr %r7,%r8
+ mr %r8,%r9
+ mr %r9,%r10
+ lwz %r10,8(%r1) /* final argument is on the stack */
+ sc
+ bnslr
+ b _C_LABEL(__cerror)
+END(__syscall)
+
+STRONG_ALIAS(syscall, __syscall)
Index: src/lib/libc/arch/powerpc/sys/syscall.S
diff -u src/lib/libc/arch/powerpc/sys/syscall.S:1.2 src/lib/libc/arch/powerpc/sys/syscall.S:1.3
--- src/lib/libc/arch/powerpc/sys/syscall.S:1.2 Mon May 25 15:28:04 1998
+++ src/lib/libc/arch/powerpc/sys/syscall.S Sat Feb 1 20:26:21 2014
@@ -1,5 +1,3 @@
-/* $NetBSD: syscall.S,v 1.2 1998/05/25 15:28:04 ws Exp $ */
+/* $NetBSD: syscall.S,v 1.3 2014/02/01 20:26:21 matt Exp $ */
-#include "SYS.h"
-
-RSYSCALL(syscall)
+/* aliased to __syscall */