1*f43f8ee6SDavid du Colombier#include "/sys/src/libc/9syscall/sys.h" 2*f43f8ee6SDavid du Colombier 3*f43f8ee6SDavid du Colombier/* 4*f43f8ee6SDavid du Colombier * we pass in the argument of the exec parameters as 0(FP) 5*f43f8ee6SDavid du Colombier */ 6*f43f8ee6SDavid du Colombier 7*f43f8ee6SDavid du ColombierTEXT main(SB),$8 8*f43f8ee6SDavid du Colombier 9*f43f8ee6SDavid du Colombier MOVW $setR30(SB), R30 10*f43f8ee6SDavid du Colombier 11*f43f8ee6SDavid du Colombier MOVW $boot(SB), R1 12*f43f8ee6SDavid du Colombier ADD $12, R29, R2 /* get a pointer to 0(FP) */ 13*f43f8ee6SDavid du Colombier MOVW R1, 4(R29) 14*f43f8ee6SDavid du Colombier MOVW R2, 8(R29) 15*f43f8ee6SDavid du Colombier JAL exec(SB) 16*f43f8ee6SDavid du Colombier 17*f43f8ee6SDavid du Colombier MOVW $(1<<4), R1 18*f43f8ee6SDavid du Colombier MOVW R1, 4(R29) 19*f43f8ee6SDavid du Colombier MOVW $RFORK, R1 20*f43f8ee6SDavid du Colombier SYSCALL 21*f43f8ee6SDavid du Colombier MOVW $RFORK, R1 22*f43f8ee6SDavid du Colombier SYSCALL 23*f43f8ee6SDavid du Colombier MOVW $RFORK, R1 24*f43f8ee6SDavid du Colombier SYSCALL 25*f43f8ee6SDavid du Colombieragain: 26*f43f8ee6SDavid du Colombier ADDU $1, R2 27*f43f8ee6SDavid du Colombier MOVW $0, R1 /* print r1 */ 28*f43f8ee6SDavid du Colombier SYSCALL 29*f43f8ee6SDavid du Colombier MOVW $5000000, R3 30*f43f8ee6SDavid du Colombierfoo: 31*f43f8ee6SDavid du Colombier SUBU $1, R3 32*f43f8ee6SDavid du Colombier BNE R3, foo 33*f43f8ee6SDavid du Colombier JMP again 34*f43f8ee6SDavid du Colombier 35*f43f8ee6SDavid du ColombierTEXT exec(SB), $0 36*f43f8ee6SDavid du Colombier MOVW $EXEC, R1 37*f43f8ee6SDavid du Colombier SYSCALL 38*f43f8ee6SDavid du Colombier RET 39*f43f8ee6SDavid du Colombier 40*f43f8ee6SDavid du ColombierDATA boot+0(SB)/5,$"/boot" 41*f43f8ee6SDavid du ColombierDATA boot+5(SB)/5,$"/boot" 42*f43f8ee6SDavid du ColombierDATA bootv+0(SB)/4,$boot+6(SB) 43*f43f8ee6SDavid du ColombierGLOBL boot+0(SB),$11 44*f43f8ee6SDavid du ColombierGLOBL bootv+0(SB),$8 45