xref: /plan9/sys/src/libc/9syscall/mkfile (revision c9e00483fb8d8427d96c68a6dde1d66afc3d135c)
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