aboutsummaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/stk.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bfin/stk.s')
-rw-r--r--sim/testsuite/bfin/stk.s78
1 files changed, 78 insertions, 0 deletions
diff --git a/sim/testsuite/bfin/stk.s b/sim/testsuite/bfin/stk.s
new file mode 100644
index 0000000..451a11e
--- /dev/null
+++ b/sim/testsuite/bfin/stk.s
@@ -0,0 +1,78 @@
+# mach: bfin
+
+.include "testutils.inc"
+ start
+
+
+// load up some registers.
+// setup up a global pointer table and load some state.
+// save the machine state and clear some of the values.
+// then restore and assert some of the values to ensure that
+// we maintain consitent machine state.
+
+ R0 = 1;
+ R1 = 2;
+ R2 = 3;
+ R3 = -7;
+ R4 = 4;
+ R5 = 5;
+ R6 = 6;
+ R7 = 7;
+
+ loadsym P0, a;
+ _DBG P0;
+ SP = P0;
+ FP = P0;
+ P1 = [ P0 ++ ];
+ P2 = [ P0 ++ ];
+ P0 += 4;
+ P4 = [ P0 ++ ];
+ P5 = [ P0 ++ ];
+ [ -- SP ] = ( R7:0, P5:0 );
+ _DBG SP;
+ _DBG FP;
+ R0 = R0 ^ R0;
+ R1 = R1 ^ R1;
+ R2 = R2 ^ R2;
+ R4 = R4 ^ R4;
+ R5 = R5 ^ R5;
+ R6 = R6 ^ R6;
+ R7 = R7 ^ R7;
+ ( R7:0, P5:0 ) = [ SP ++ ];
+ DBGA ( R0.L , 1 );
+ DBGA ( R2.L , 3 );
+ DBGA ( R7.L , 7 );
+ R0 = SP;
+ loadsym R1, a;
+ CC = R0 == R1;
+ IF !CC JUMP abrt;
+ R0 = FP;
+ CC = R0 == R1;
+ CC = R0 == R1;
+ IF !CC JUMP abrt;
+
+ pass
+abrt:
+ fail
+
+ .data
+_gptab:
+ .dw 0x200
+ .dw 0x000
+ .dw 0x300
+ .dw 0x400
+ .dw 0x500
+ .dw 0x600
+
+ .space (0x100)
+a:
+ .dw 1
+ .dw 2
+ .dw 3
+ .dw 4
+ .dw 5
+ .dw 6
+ .dw 7
+ .dw 8
+ .dw 9
+ .dw 0xa