# MACRO: system_call # Make a libgloss/Linux system call .macro system_call nr:req addi r12, r0, \nr; brki r14, 8; .endm # MACRO: exit .macro exit nr:req addi r3, r0, \nr; bri 0; .endm # MACRO: pass # Write 'pass' to stdout and quit .macro pass write 1, 1f, 5 exit 0 .data 1: .asciz "pass\n" .endm # MACRO: fail # Write 'fail' to stdout and quit .macro fail write 1, 1f, 5 exit 1 .data 1: .asciz "fail\n" .endm # MACRO: start # All assembler tests should start with a call to "start" .macro start .text .global _start _start: .endm # MACRO: write # Just like the write() C function; uses system calls .macro write fd:req, buf:req, count:req addi r5, r0, \fd; addi r6, r0, \buf; addi r7, r0, \count; system_call 5 .endm