1NPROC=1 2</$objtype/mkfile 3 4install:V: 5 SYS=`{sed '/^#define._X[123]/d; s/#define.([A-Z0-9_]*).*/\1/' sys.h} 6 for(I in $SYS) { 7 i=`{echo $I|tr A-Z a-z} 8 n=`{sed -n '/[ ]'$I'[ ]/s/.* //p' sys.h} 9 if(~ $i exits) i=_exits 10 {switch($objtype){ 11 case mips 12 echo TEXT $i'(SB)', 1, '$0' 13 echo MOVW R1, '0(FP)' 14 echo MOVW '$'$n, R1 15 echo SYSCALL 16 if(~ $i seek || ~ $i nsec) { 17 echo 'MOVW $-1,R5 18 BNE R1,R5,4(PC) 19 MOVW a+0(FP),R5 20 MOVW R1,0(R5) 21 MOVW R1,4(R5)' 22 } 23 echo RET 24 case mips2 25 echo TEXT $i'(SB)', 1, '$0' 26 echo MOVW R1, '0(FP)' 27 echo MOVW '$'$n, R1 28 echo ADD '$4',R29 29 echo SYSCALL 30 echo ADD '$-4',R29 31 echo RET 32 case spim 33 echo TEXT $i'(SB)', 1, '$0' 34 echo MOVW R1, '0(FP)' 35 echo MOVW '$'$n, R1 36 echo ADD '$4',R29 37 echo SYSCALL 38 echo ADD '$-4',R29 39 if(~ $i seek || ~ $i nsec) { # untested so far - geoff 40 echo 'MOVW $-1,R5 41 BNE R1,R5,4(PC) 42 MOVW a+0(FP),R5 43 MOVW R1,0(R5) 44 MOVW R1,4(R5)' 45 } 46 echo RET 47 case 386 48 echo TEXT $i'(SB)', 1, '$0' 49 echo MOVL '$'$n, AX 50 echo INT '$'64 51 if(~ $i seek || ~ $i nsec) { 52 echo 'CMPL AX,$-1 53 JNE 4(PC) 54 MOVL a+0(FP),CX 55 MOVL AX,0(CX) 56 MOVL AX,4(CX)' 57 } 58 echo RET 59 case amd64 60 if(~ $i seek) 61 echo TEXT _seek'(SB)', 1, '$0' 62 if not 63 echo TEXT $i'(SB)', 1, '$0' 64 # 65 # For architectures which pass the first argument 66 # in a register, if the system call takes no arguments 67 # there will be no 'a0+0(FP)' reserved on the stack. 68 # 69 if(! ~ $i nsec) 70 echo MOVQ RARG, 'a0+0(FP)' 71 echo MOVQ '$'$n, RARG 72 echo SYSCALL 73 echo RET 74 case sparc 75 echo TEXT $i'(SB)', 1, '$0' 76 echo MOVW R7, '0(FP)' 77 echo MOVW '$'$n, R7 78 echo TA R0 79 if(~ $i seek || ~ $i nsec) { 80 echo 'CMP R7,$-1 81 BNE 4(PC) 82 MOVW a+0(FP),R8 83 MOVW R7,0(R8) 84 MOVW R7,4(R8)' 85 } 86 echo RETURN 87 case arm 88 echo TEXT $i'(SB)', 1, '$0' 89 echo MOVW R0, '0(FP)' 90 echo MOVW '$'$n, R0 91 echo SWI 0 92 if(~ $i seek || ~ $i nsec) { 93 echo 'CMP $-1,R0 94 BNE 4(PC) 95 MOVW a+0(FP),R1 96 MOVW R0,0(R1) 97 MOVW R0,4(R1)' 98 } 99 echo RET 100 case power 101 echo TEXT $i'(SB)', 1, '$0' 102 echo MOVW R3, '0(FP)' 103 echo MOVW '$'$n, R3 104 echo SYSCALL 105 if(~ $i seek || ~ $i nsec) { 106 echo 'CMP R3,$-1 107 BNE 4(PC) 108 MOVW a+0(FP),R8 109 MOVW R3,0(R8) 110 MOVW R3,4(R8)' 111 } 112 echo RETURN 113 }} > $i.s 114 $AS $i.s 115 } 116 ar vu /$objtype/lib/libc.a *.$O 117 rm -f *.$O *.s 118 119nuke clean:V: 120 rm -f *.[$OS] 121 122installall:V: 123 for(objtype in $CPUS) mk install 124 125update:V: 126 update $UPDATEFLAGS mkfile sys.h 127