Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / tcg / lm32 / helper.S
diff --git a/qemu/tests/tcg/lm32/helper.S b/qemu/tests/tcg/lm32/helper.S
new file mode 100644 (file)
index 0000000..3351d41
--- /dev/null
@@ -0,0 +1,65 @@
+.text
+.global _start, _write, _exit
+.global _tc_fail, _tc_pass
+
+_write:
+       addi sp, sp, -4
+       sw (sp+4), r8
+       mvi r8, 5
+       scall
+       lw r8, (sp+4)
+       addi sp, sp, 4
+       ret
+
+_exit:
+       mvi r8, 1
+       scall
+1:
+       bi 1b
+
+_tc_pass:
+.data
+1:
+       .ascii "OK\n"
+2:
+.text
+       addi sp, sp, -16
+       sw (sp+4), ra
+       sw (sp+8), r1
+       sw (sp+12), r2
+       sw (sp+16), r3
+       mvi r1, 1
+       mvhi r2, hi(1b)
+       ori r2, r2, lo(1b)
+       mvi r3, (2b - 1b)
+       calli _write
+       lw r3, (sp+16)
+       lw r2, (sp+12)
+       lw r1, (sp+8)
+       lw ra, (sp+4)
+       addi sp, sp, 16
+       ret
+
+_tc_fail:
+.data
+1:
+       .ascii "FAILED\n"
+2:
+.text
+       addi sp, sp, -16
+       sw (sp+4), ra
+       sw (sp+8), r1
+       sw (sp+12), r2
+       sw (sp+16), r3
+       sw (sp+4), ra
+       mvi r1, 1
+       mvhi r2, hi(1b)
+       ori r2, r2, lo(1b)
+       mvi r3, (2b - 1b)
+       calli _write
+       lw r3, (sp+16)
+       lw r2, (sp+12)
+       lw r1, (sp+8)
+       lw ra, (sp+4)
+       addi sp, sp, 16
+       ret