diff options
Diffstat (limited to 'sim/testsuite/sim/fr30/call.cgs')
-rw-r--r-- | sim/testsuite/sim/fr30/call.cgs | 69 |
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 |