123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #!/bin/rc
- {switch($objtype){
- case mips
- echo TEXT $i'(SB)', 1, '$0'
- echo MOVW R1, '0(FP)'
- echo MOVW '$'$n, R1
- echo SYSCALL
- if(~ $i _SEEK || ~ $i nsec) {
- 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 || ~ $i nsec) { # 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 || ~ $i nsec) {
- 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'
- #
- # For architectures which pass the first argument
- # in a register, if the system call takes no arguments
- # there will be no 'a0+0(FP)' reserved on the stack.
- #
- if(! ~ $i nsec)
- echo MOVQ RARG, 'a0+0(FP)'
- echo MOVQ '$'$n, RARG
- echo SYSCALL
- echo RET
- case sparc
- echo TEXT $i'(SB)', 1, '$0'
- echo MOVW R7, '0(FP)'
- echo MOVW '$'$n, R7
- echo TA R0
- if(~ $i _SEEK || ~ $i nsec) {
- echo 'CMP R7,$-1
- BNE 4(PC)
- MOVW a+0(FP),R8
- MOVW R7,0(R8)
- MOVW R7,4(R8)'
- }
- echo RETURN
- case arm
- echo TEXT $i'(SB)', 1, '$0'
- echo MOVW R0, '0(FP)'
- echo MOVW '$'$n, R0
- echo SWI 0
- if(~ $i _SEEK || ~ $i nsec) {
- 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 || ~ $i nsec) {
- echo 'CMP R3,$-1
- BNE 4(PC)
- MOVW a+0(FP),R8
- MOVW R3,0(R8)
- MOVW R3,4(R8)'
- }
- echo RETURN
- case power64
- if(~ $i _SEEK)
- echo TEXT __SEEK'(SB)', 1, '$0'
- if not
- echo TEXT $i'(SB)', 1, '$0'
- echo MOVD R3, '0(FP)'
- echo MOVW '$'$n, R3
- echo SYSCALL
- echo RETURN
- }} > $i.s
- $AS $i.s
|