.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 |