to avoid compatability issues, just define nsec as _nsec. nsec is still a bad idea Reference: /n/atom/patch/applied/sys_nsec Date: Thu Jun 12 15:19:26 CES 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/libc/9syscall/mkfile Thu Jun 12 15:19:07 2014 +++ /sys/src/libc/9syscall/mkfile Thu Jun 12 15:19:08 2014 @@ -3,6 +3,7 @@ install:V: SYS=`{sed '/^#define._X[123]/d; s/#define.([A-Z0-9_]*).*/\1/' sys.h} + vlongret=() for(I in $SYS) { i=`{echo $I|tr A-Z a-z} n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' sys.h} @@ -18,7 +19,7 @@ echo MOVW R1, '0(FP)' echo MOVW '$'$n, R1 echo SYSCALL - if(~ $i seek) { + if(~ $i seek _nsec) { echo 'MOVW $-1,R5 BNE R1,R5,4(PC) MOVW a+0(FP),R5 @@ -41,7 +42,7 @@ echo ADD '$4',R29 echo SYSCALL echo ADD '$-4',R29 - if(~ $i seek) { # untested so far - geoff + if(~ $i seek _nsec) { # untested so far - geoff echo 'MOVW $-1,R5 BNE R1,R5,4(PC) MOVW a+0(FP),R5 @@ -53,7 +54,7 @@ echo TEXT $i'(SB)', 1, '$0' echo MOVL '$'$n, AX echo INT '$'64 - if(~ $i seek) { + if(~ $i seek _nsec) { echo 'CMPL AX,$-1 JNE 4(PC) MOVL a+0(FP),CX @@ -66,7 +67,13 @@ echo TEXT _seek'(SB)', 1, '$0' if not echo TEXT $i'(SB)', 1, '$0' - echo MOVQ RARG, 'a0+0(FP)' + # + # For architectures which pass the first argument + # in a register, if the system call takes no arguments + # there will be no 'a0+0(FP)' reserved on the stack. + # + if(! ~ $i _nsec) + echo MOVQ RARG, 'a0+0(FP)' echo MOVQ '$'$n, RARG echo SYSCALL echo RET @@ -75,7 +82,7 @@ echo MOVW R7, '0(FP)' echo MOVW '$'$n, R7 echo TA R0 - if(~ $i seek) { + if(~ $i seek _nsec) { echo 'CMP R7,$-1 BNE 4(PC) MOVW a+0(FP),R8 @@ -100,7 +107,7 @@ echo MOVW R0, '0(FP)' echo MOVW '$'$n, R0 echo SWI 0 - if(~ $i seek) { + if(~ $i seek _nsec) { echo 'CMP $-1,R0 BNE 4(PC) MOVW a+0(FP),R1 @@ -113,7 +120,7 @@ echo MOVW R3, '0(FP)' echo MOVW '$'$n, R3 echo SYSCALL - if(~ $i seek) { + if(~ $i seek _nsec) { echo 'CMP R3,$-1 BNE 4(PC) MOVW a+0(FP),R8 --- /sys/src/libc/9syscall/sys.h Thu Jun 12 15:19:08 2014 +++ /sys/src/libc/9syscall/sys.h Thu Jun 12 15:19:09 2014 @@ -49,3 +49,4 @@ #define PREAD 50 #define PWRITE 51 #define TSEMACQUIRE 52 +#define _NSEC 53