4e7d30a22a
Instead of the lm32-sys device, use semihosting to print to the host console and exit the test. Signed-off-by: Michael Walle <michael@walle.cc>
91 lines
1.1 KiB
PHP
91 lines
1.1 KiB
PHP
|
|
.equ MAX_TESTNAME_LEN, 32
|
|
.macro test_name name
|
|
.data
|
|
tn_\name:
|
|
.ascii "\name"
|
|
.space MAX_TESTNAME_LEN - (. - tn_\name), ' '
|
|
.text
|
|
.global \name
|
|
\name:
|
|
addi sp, sp, -12
|
|
sw (sp+4), r1
|
|
sw (sp+8), r2
|
|
sw (sp+12), r3
|
|
mvi r1, 1
|
|
mvhi r2, hi(tn_\name)
|
|
ori r2, r2, lo(tn_\name)
|
|
mvi r3, MAX_TESTNAME_LEN
|
|
calli _write
|
|
lw r3, (sp+12)
|
|
lw r2, (sp+8)
|
|
lw r1, (sp+4)
|
|
addi sp, sp, 12
|
|
.endm
|
|
|
|
.macro load reg val
|
|
mvhi \reg, hi(\val)
|
|
ori \reg, \reg, lo(\val)
|
|
.endm
|
|
|
|
.macro tc_pass
|
|
calli _tc_pass
|
|
.endm
|
|
|
|
.macro tc_fail
|
|
addi r12, r12, 1
|
|
calli _tc_fail
|
|
.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:
|
|
mvi r12, 0
|
|
.endm
|
|
|
|
.macro end
|
|
mv r1, r12
|
|
calli _exit
|
|
.endm
|
|
|
|
# base +
|
|
# 0 ctrl
|
|
# 4 pass/fail
|
|
# 8 ptr to test name
|