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