# ! Declare segments (the order is important). .sect .text .sect .rom .sect .data .sect .bss .sect .text #define EINVAL 22 ! Perform a Linux system call. .define __syscall __syscall: lw r2, 0(sp) ! syscall number addiu r2, r2, 4000 ! MIPS uses non-standard numbers lw r4, 4(sp) lw r5, 8(sp) lw r6, 12(sp) syscall 0 beq r7, zero, exit ! branch on success nop /* The result (in r2) is the errno. */ lui at, ha16[_errno] sw r2, lo16[_errno] (at) li r2, -1 exit: jr ra nop