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