diff options
Diffstat (limited to 'sim/testsuite/bfin/stk.s')
-rw-r--r-- | sim/testsuite/bfin/stk.s | 78 |
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 |