1#include "core-isa.h" 2 3.macro test_suite name 4.data 5status: .word result 6result: .space 256 7.text 8.global main 9.align 4 10main: 11.endm 12 13.macro reset_ps 14 movi a2, 0x4000f 15 wsr a2, ps 16 isync 17.endm 18 19.macro test_suite_end 20 reset_ps 21 movi a0, status 22 l32i a2, a0, 0 23 movi a0, result 24 sub a2, a2, a0 25 movi a3, 0 26 loopnez a2, 1f 27 l8ui a2, a0, 0 28 or a3, a3, a2 29 addi a0, a0, 1 301: 31 exit 32.endm 33 34.macro print text 35.data 3697: .ascii "\text\n" 3798: 38 .align 4 39.text 40 movi a2, 4 41 movi a3, 2 42 movi a4, 97b 43 movi a5, 98b 44 sub a5, a5, a4 45 simcall 46.endm 47 48.macro test_init 49.endm 50 51.macro test name 52 //print test_\name 53 test_init 54test_\name: 55.global test_\name 56.endm 57 58.macro test_end 5999: 60 reset_ps 61 movi a2, status 62 l32i a3, a2, 0 63 addi a3, a3, 1 64 s32i a3, a2, 0 65.endm 66 67.macro exit 68 movi a2, 1 69 simcall 70.endm 71 72.macro test_fail 73 movi a2, status 74 l32i a2, a2, 0 75 movi a3, 1 76 s8i a3, a2, 0 77 j 99f 78.endm 79 80.macro assert cond, arg1, arg2 81 b\cond \arg1, \arg2, 90f 82 test_fail 8390: 84 nop 85.endm 86 87.macro set_vector vector, addr 88 movi a2, handler_\vector 89 movi a3, \addr 90 s32i a3, a2, 0 91.endm 92