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 */

Reply via email to