]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/9syscall/mkfile
081310e34091d69536d6d6ca2a983e4c6f527a8b
[plan9front.git] / sys / src / libc / 9syscall / mkfile
1 NPROC=1
2 </$objtype/mkfile
3
4 install: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 68000 68020
12                         echo TEXT $i'(SB)', 1, '$0'
13                         echo MOVL '$'$n, R0
14                         echo TRAP '$0'
15                         echo RTS
16                 case mips
17                         echo TEXT $i'(SB)', 1, '$0'
18                         echo MOVW R1, '0(FP)'
19                         echo MOVW '$'$n, R1
20                         echo SYSCALL
21                         if(~ $i seek) {
22                                 echo 'MOVW $-1,R5
23                                 BNE R1,R5,4(PC)
24                                 MOVW a+0(FP),R5
25                                 MOVW R1,0(R5)
26                                 MOVW R1,4(R5)'
27                         }
28                         echo RET
29                 case mips2
30                         echo TEXT $i'(SB)', 1, '$0'
31                         echo MOVW R1, '0(FP)'
32                         echo MOVW '$'$n, R1
33                         echo ADD '$4',R29
34                         echo SYSCALL
35                         echo ADD '$-4',R29
36                         echo RET
37                 case spim
38                         echo TEXT $i'(SB)', 1, '$0'
39                         echo MOVW R1, '0(FP)'
40                         echo MOVW '$'$n, R1
41                         echo ADD '$4',R29
42                         echo SYSCALL
43                         echo ADD '$-4',R29
44                         if(~ $i seek) {         # untested so far - geoff
45                                 echo 'MOVW $-1,R5
46                                 BNE R1,R5,4(PC)
47                                 MOVW a+0(FP),R5
48                                 MOVW R1,0(R5)
49                                 MOVW R1,4(R5)'
50                         }
51                         echo RET
52                 case 386
53                         echo TEXT $i'(SB)', 1, '$0'
54                         echo MOVL '$'$n, AX
55                         echo INT '$'64
56                         if(~ $i seek) {
57                                 echo 'CMPL AX,$-1
58                                 JNE 4(PC)
59                                 MOVL a+0(FP),CX
60                                 MOVL AX,0(CX)
61                                 MOVL AX,4(CX)'
62                         }
63                         echo RET
64                 case amd64
65                         if(~ $i seek)
66                                 echo TEXT _seek'(SB)', 1, '$0'
67                         if not
68                                 echo TEXT $i'(SB)', 1, '$0'
69                         echo MOVQ RARG, 'a0+0(FP)'
70                         echo MOVQ '$'$n, RARG
71                         echo SYSCALL
72                         echo RET
73                 case sparc sparc64
74                         echo TEXT $i'(SB)', 1, '$0'
75                         echo MOVW R7, '0(FP)'
76                         echo MOVW '$'$n, R7
77                         echo TA R0
78                         if(~ $i seek) {
79                                 echo 'CMP R7,$-1
80                                 BNE 4(PC)
81                                 MOVW a+0(FP),R8
82                                 MOVW R7,0(R8)
83                                 MOVW R7,4(R8)'
84                         }
85                         echo RETURN
86                 case 3210
87                         echo TEXT $i'(SB)', 1, '$0'
88                         echo MOVW R3, '0(FP)'
89                         echo MOVW '$'$n, R3
90                         echo WORD '$0x06000000'
91                         echo RETURN
92                 case 29000
93                         echo TEXT $i'(SB)', 1, '$0'
94                         echo MOVL R69, '0(FP)'
95                         echo MOVL '$'$n, R69
96                         echo EMULATE 0
97                         echo RET
98                 case arm
99                         echo TEXT $i'(SB)', 1, '$0'
100                         echo MOVW R0, '0(FP)'
101                         echo MOVW '$'$n, R0
102                         echo SWI 0
103                         if(~ $i seek) {
104                                 echo 'CMP $-1,R0
105                                 BNE 4(PC)
106                                 MOVW a+0(FP),R1
107                                 MOVW R0,0(R1)
108                                 MOVW R0,4(R1)'
109                         }
110                         echo RET
111                 case power
112                         echo TEXT $i'(SB)', 1, '$0'
113                         echo MOVW R3, '0(FP)'
114                         echo MOVW '$'$n, R3
115                         echo SYSCALL
116                         if(~ $i seek) {
117                                 echo 'CMP R3,$-1
118                                 BNE 4(PC)
119                                 MOVW a+0(FP),R8
120                                 MOVW R3,0(R8)
121                                 MOVW R3,4(R8)'
122                         }
123                         echo RETURN
124                 case alpha
125                         j=$i
126                         if(~ $i seek) j=_seek
127                         echo TEXT $j'(SB)', 1, '$0'
128                         echo MOVL R0, '0(FP)'
129                         echo MOVQ '$'$n, R0
130                         echo CALL_PAL '$'0x83
131                         echo RET
132                 }} > $i.s
133                 $AS $i.s
134         }
135         ar vu /$objtype/lib/libc.a *.$O
136         rm -f *.$O *.s
137
138 nuke clean:V:
139         rm -f *.[$OS]
140
141 installall:V:
142         for(objtype in $CPUS) mk install
143
144 update:V:
145         update $UPDATEFLAGS mkfile sys.h