Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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 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
 
119
nuke clean:V:
120
	rm -f *.[$OS]
121
 
122
installall:V:
123
	for(objtype in $CPUS) mk install
124
 
125
update:V:
126
	update $UPDATEFLAGS mkfile sys.h