diff --git a/tests/tcg/cr16c/macros.inc b/tests/tcg/cr16c/macros.inc index 4979add0c7..530ee2bc36 100644 --- a/tests/tcg/cr16c/macros.inc +++ b/tests/tcg/cr16c/macros.inc @@ -52,6 +52,10 @@ excp UND .endm +.macro FAIL + br .fail +.endm + .macro FAIL_HANDLER .fail: movw $1, r0 diff --git a/tests/tcg/cr16c/test10-pushpop.S b/tests/tcg/cr16c/test10-pushpop.S new file mode 100644 index 0000000000..8ef80b3e06 --- /dev/null +++ b/tests/tcg/cr16c/test10-pushpop.S @@ -0,0 +1,35 @@ +#include "macros.inc" + +.global _start + +.text +_start: + /* Initialize registers */ + RESET + + movd $0x4000, (sp) +begin: + /** BAL **/ + bal (ra), sub1 + + movw $0x1234, r1 + movw $0x4242, r2 + bal (ra), sub2 + EXPECT 0x1234, r1 + EXPECT 0x4242, r2 + + ENDING + FAIL_HANDLER + +sub1: + jump (ra) /* should return */ + FAIL + + +sub2: + PUSH $0x2, r1, ra + movw $-1, r1 + movw $-1, r2 + POPRET $0x2, r1, ra /* should return */ + FAIL +