1.macro test_suite name 2.data 3status: .word result 4result: .space 20 5.text 6.global main 7.align 4 8main: 9.endm 10 11.macro reset_ps 12 movi a2, 0x4000f 13 wsr a2, ps 14 isync 15.endm 16 17.macro test_suite_end 18 reset_ps 19 movi a0, status 20 l32i a2, a0, 0 21 movi a0, result 22 sub a2, a2, a0 23 movi a3, 0 24 loopnez a2, 1f 25 l8ui a2, a0, 0 26 or a3, a3, a2 27 addi a0, a0, 1 281: 29 exit 30.endm 31 32.macro test name 33.endm 34 35.macro test_end 3699: 37 reset_ps 38 movi a2, status 39 l32i a3, a2, 0 40 addi a3, a3, 1 41 s32i a3, a2, 0 42.endm 43 44.macro exit 45 movi a2, 1 46 simcall 47.endm 48 49.macro test_fail 50 movi a2, status 51 l32i a2, a2, 0 52 movi a3, 1 53 s8i a3, a2, 0 54 j 99f 55.endm 56 57.macro assert cond, arg1, arg2 58 b\cond \arg1, \arg2, 90f 59 test_fail 6090: 61 nop 62.endm 63 64.macro set_vector vector, addr 65 movi a2, handler_\vector 66 movi a3, \addr 67 s32i a3, a2, 0 68.endm 69