diff options
author | fishsoupisgood <github@madingley.org> | 2019-04-29 01:17:54 +0100 |
---|---|---|
committer | fishsoupisgood <github@madingley.org> | 2019-05-27 03:43:43 +0100 |
commit | 3f2546b2ef55b661fd8dd69682b38992225e86f6 (patch) | |
tree | 65ca85f13617aee1dce474596800950f266a456c /tests/tcg/lm32/macros.inc | |
download | qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.tar.gz qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.tar.bz2 qemu-3f2546b2ef55b661fd8dd69682b38992225e86f6.zip |
Diffstat (limited to 'tests/tcg/lm32/macros.inc')
-rw-r--r-- | tests/tcg/lm32/macros.inc | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/tests/tcg/lm32/macros.inc b/tests/tcg/lm32/macros.inc new file mode 100644 index 00000000..360ad53c --- /dev/null +++ b/tests/tcg/lm32/macros.inc @@ -0,0 +1,90 @@ + +.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 |