summaryrefslogtreecommitdiff
path: root/sim/testsuite/sim/fr30/call.cgs
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/sim/fr30/call.cgs')
-rw-r--r--sim/testsuite/sim/fr30/call.cgs69
1 files changed, 69 insertions, 0 deletions
diff --git a/sim/testsuite/sim/fr30/call.cgs b/sim/testsuite/sim/fr30/call.cgs
new file mode 100644
index 00000000000..413840ed350
--- /dev/null
+++ b/sim/testsuite/sim/fr30/call.cgs
@@ -0,0 +1,69 @@
+# fr30 testcase for call @$Ri
+# mach(): fr30
+
+ .include "testutils.inc"
+
+ START
+
+ .text
+ .global call
+
+ ; Test call $Ri
+ mvi_h_gr 0xdeadbeef,r9
+ mvi_h_gr #func1,r0
+ set_cc 0x0f ; condition codes shouldn't change
+call1:
+ call @r0
+ test_h_gr 0xbeefdead,r9
+ pass
+
+func1:
+ test_cc 1 1 1 1
+ mvi_h_gr #call1,r7
+ inci_h_gr 2,r7
+ testr_h_dr r7,rp
+ save_rp
+
+ mvi_h_gr #func2,r0
+ set_cc 0x0f ; condition codes shouldn't change
+call2:
+ call:d @r0
+ ldi:8 1,r0 ; Must assume this works
+ restore_rp
+ ret
+func2:
+ test_cc 1 1 1 1
+ mvi_h_gr #call2,r7
+ inci_h_gr 4,r7
+ testr_h_dr r7,rp
+ testr_h_gr 1,r0
+ save_rp
+
+ set_cc 0x0f ; condition codes shouldn't change
+call3:
+ call func3
+ restore_rp
+ ret
+func3:
+ test_cc 1 1 1 1
+ mvi_h_gr #call3,r7
+ inci_h_gr 2,r7
+ testr_h_dr r7,rp
+ save_rp
+
+ set_cc 0x0f ; condition codes shouldn't change
+call4:
+ call:d func4
+ ldi:8 1,r0 ; Must assume this works
+ restore_rp
+ ret
+func4:
+ test_cc 1 1 1 1
+ mvi_h_gr #call4,r7
+ inci_h_gr 4,r7
+ testr_h_dr r7,rp
+ testr_h_gr 1,r0
+ mvi_h_gr 0xbeefdead,r9
+ ret
+
+ fail