Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / lm32 / macros.inc
diff --git a/qemu/tests/tcg/lm32/macros.inc b/qemu/tests/tcg/lm32/macros.inc
new file mode 100644 (file)
index 0000000..360ad53
--- /dev/null
@@ -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