13e12c5d1SDavid du ColombierNPROC=1 23e12c5d1SDavid du Colombier</$objtype/mkfile 33e12c5d1SDavid du Colombier 4219b2ee8SDavid du Colombierinstall:V: 53e12c5d1SDavid du Colombier SYS=`{sed '/^#define._X[123]/d; s/#define.([A-Z0-9_]*).*/\1/' sys.h} 63e12c5d1SDavid du Colombier for(I in $SYS) { 73e12c5d1SDavid du Colombier i=`{echo $I|tr A-Z a-z} 83e12c5d1SDavid du Colombier n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' sys.h} 93e12c5d1SDavid du Colombier if(~ $i exits) i=_exits 103e12c5d1SDavid du Colombier {switch($objtype){ 113e12c5d1SDavid du Colombier case mips 123e12c5d1SDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 133e12c5d1SDavid du Colombier echo MOVW R1, '0(FP)' 143e12c5d1SDavid du Colombier echo MOVW '$'$n, R1 153e12c5d1SDavid du Colombier echo SYSCALL 16fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { 177dd7cddfSDavid du Colombier echo 'MOVW $-1,R5 187dd7cddfSDavid du Colombier BNE R1,R5,4(PC) 197dd7cddfSDavid du Colombier MOVW a+0(FP),R5 207dd7cddfSDavid du Colombier MOVW R1,0(R5) 217dd7cddfSDavid du Colombier MOVW R1,4(R5)' 227dd7cddfSDavid du Colombier } 237dd7cddfSDavid du Colombier echo RET 247dd7cddfSDavid du Colombier case mips2 257dd7cddfSDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 267dd7cddfSDavid du Colombier echo MOVW R1, '0(FP)' 277dd7cddfSDavid du Colombier echo MOVW '$'$n, R1 287dd7cddfSDavid du Colombier echo ADD '$4',R29 297dd7cddfSDavid du Colombier echo SYSCALL 307dd7cddfSDavid du Colombier echo ADD '$-4',R29 317dd7cddfSDavid du Colombier echo RET 327dd7cddfSDavid du Colombier case spim 337dd7cddfSDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 347dd7cddfSDavid du Colombier echo MOVW R1, '0(FP)' 357dd7cddfSDavid du Colombier echo MOVW '$'$n, R1 367dd7cddfSDavid du Colombier echo ADD '$4',R29 377dd7cddfSDavid du Colombier echo SYSCALL 387dd7cddfSDavid du Colombier echo ADD '$-4',R29 39fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { # untested so far - geoff 407ad596ffSDavid du Colombier echo 'MOVW $-1,R5 417ad596ffSDavid du Colombier BNE R1,R5,4(PC) 427ad596ffSDavid du Colombier MOVW a+0(FP),R5 437ad596ffSDavid du Colombier MOVW R1,0(R5) 447ad596ffSDavid du Colombier MOVW R1,4(R5)' 457ad596ffSDavid du Colombier } 463e12c5d1SDavid du Colombier echo RET 473e12c5d1SDavid du Colombier case 386 483e12c5d1SDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 493e12c5d1SDavid du Colombier echo MOVL '$'$n, AX 503e12c5d1SDavid du Colombier echo INT '$'64 51fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { 527dd7cddfSDavid du Colombier echo 'CMPL AX,$-1 537dd7cddfSDavid du Colombier JNE 4(PC) 547dd7cddfSDavid du Colombier MOVL a+0(FP),CX 557dd7cddfSDavid du Colombier MOVL AX,0(CX) 567dd7cddfSDavid du Colombier MOVL AX,4(CX)' 577dd7cddfSDavid du Colombier } 583e12c5d1SDavid du Colombier echo RET 595e91980fSDavid du Colombier case amd64 605e91980fSDavid du Colombier if(~ $i seek) 615e91980fSDavid du Colombier echo TEXT _seek'(SB)', 1, '$0' 625e91980fSDavid du Colombier if not 635e91980fSDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 64c02f0a41SDavid du Colombier # 65c02f0a41SDavid du Colombier # For architectures which pass the first argument 66c02f0a41SDavid du Colombier # in a register, if the system call takes no arguments 67c02f0a41SDavid du Colombier # there will be no 'a0+0(FP)' reserved on the stack. 68c02f0a41SDavid du Colombier # 69*c9e00483SDavid du Colombier if(! ~ $i nsec) 705e91980fSDavid du Colombier echo MOVQ RARG, 'a0+0(FP)' 715e91980fSDavid du Colombier echo MOVQ '$'$n, RARG 725e91980fSDavid du Colombier echo SYSCALL 735e91980fSDavid du Colombier echo RET 74fa925c05SDavid du Colombier case sparc 753e12c5d1SDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 763e12c5d1SDavid du Colombier echo MOVW R7, '0(FP)' 773e12c5d1SDavid du Colombier echo MOVW '$'$n, R7 783e12c5d1SDavid du Colombier echo TA R0 79fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { 807dd7cddfSDavid du Colombier echo 'CMP R7,$-1 817dd7cddfSDavid du Colombier BNE 4(PC) 827dd7cddfSDavid du Colombier MOVW a+0(FP),R8 837dd7cddfSDavid du Colombier MOVW R7,0(R8) 847dd7cddfSDavid du Colombier MOVW R7,4(R8)' 857dd7cddfSDavid du Colombier } 863e12c5d1SDavid du Colombier echo RETURN 877dd7cddfSDavid du Colombier case arm 887dd7cddfSDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 897dd7cddfSDavid du Colombier echo MOVW R0, '0(FP)' 907dd7cddfSDavid du Colombier echo MOVW '$'$n, R0 917dd7cddfSDavid du Colombier echo SWI 0 92fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { 937ad596ffSDavid du Colombier echo 'CMP $-1,R0 947ad596ffSDavid du Colombier BNE 4(PC) 957ad596ffSDavid du Colombier MOVW a+0(FP),R1 967ad596ffSDavid du Colombier MOVW R0,0(R1) 977ad596ffSDavid du Colombier MOVW R0,4(R1)' 987ad596ffSDavid du Colombier } 997dd7cddfSDavid du Colombier echo RET 1007dd7cddfSDavid du Colombier case power 1017dd7cddfSDavid du Colombier echo TEXT $i'(SB)', 1, '$0' 1027dd7cddfSDavid du Colombier echo MOVW R3, '0(FP)' 1037dd7cddfSDavid du Colombier echo MOVW '$'$n, R3 1047dd7cddfSDavid du Colombier echo SYSCALL 105fac6300fSDavid du Colombier if(~ $i seek || ~ $i nsec) { 1067dd7cddfSDavid du Colombier echo 'CMP R3,$-1 1077dd7cddfSDavid du Colombier BNE 4(PC) 1087dd7cddfSDavid du Colombier MOVW a+0(FP),R8 1097dd7cddfSDavid du Colombier MOVW R3,0(R8) 1107dd7cddfSDavid du Colombier MOVW R3,4(R8)' 1117dd7cddfSDavid du Colombier } 1127dd7cddfSDavid du Colombier echo RETURN 1133e12c5d1SDavid du Colombier }} > $i.s 1143e12c5d1SDavid du Colombier $AS $i.s 1153e12c5d1SDavid du Colombier } 1163e12c5d1SDavid du Colombier ar vu /$objtype/lib/libc.a *.$O 1173e12c5d1SDavid du Colombier rm -f *.$O *.s 1183e12c5d1SDavid du Colombier 1193e12c5d1SDavid du Colombiernuke clean:V: 1203e12c5d1SDavid du Colombier rm -f *.[$OS] 1213e12c5d1SDavid du Colombier 1223e12c5d1SDavid du Colombierinstallall:V: 1233e12c5d1SDavid du Colombier for(objtype in $CPUS) mk install 1243ff48bf5SDavid du Colombier 1253ff48bf5SDavid du Colombierupdate:V: 1263ff48bf5SDavid du Colombier update $UPDATEFLAGS mkfile sys.h 127