.macro test_name name .data tn_\name: .asciz "\name" .text mvhi r13, hi(tn_\name) ori r13, r13, lo(tn_\name) sw (r12+8), r13 .endm .macro load reg val mvhi \reg, hi(\val) ori \reg, \reg, lo(\val) .endm .macro tc_pass mvi r13, 0 sw (r12+4), r13 .endm .macro tc_fail mvi r13, 1 sw (r12+4), r13 .endm .macro check_r3 val mvhi r13, hi(\val) ori r13, r13, lo(\val) be r3, r13, 1f tc_fail bi 2f 1: tc_pass 2: .endm .macro check_mem adr val mvhi r13, hi(\adr) ori r13, r13, lo(\adr) mvhi r14, hi(\val) ori r14, r14, lo(\val) lw r13, (r13+0) be r13, r14, 1f tc_fail bi 2f 1: tc_pass 2: .endm .macro check_excp excp andi r13, r25, \excp bne r13, r0, 1f tc_fail bi 2f 1: tc_pass 2: .endm .macro start .global _main .text _main: mvhi r12, hi(0xffff0000) # base address of test block ori r12, r12, lo(0xffff0000) .endm .macro end sw (r12+0), r0 1: bi 1b .endm # base + # 0 ctrl # 4 pass/fail # 8 ptr to test name