mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-21 04:42:53 +08:00
111 lines
1.5 KiB
ArmAsm
111 lines
1.5 KiB
ArmAsm
|
// 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.
|
||
|
# mach: bfin
|
||
|
|
||
|
.include "testutils.inc"
|
||
|
start
|
||
|
|
||
|
R0 = 1;
|
||
|
R1 = 2;
|
||
|
R2 = 3;
|
||
|
R3 = -7;
|
||
|
R4 = 4;
|
||
|
R5 = 5;
|
||
|
R6 = 6;
|
||
|
R7 = 7;
|
||
|
|
||
|
loadsym P0, a;
|
||
|
P1.L = 0x1000;
|
||
|
_DBG P0;
|
||
|
_DBG P1;
|
||
|
SP = P0;
|
||
|
FP = P0;
|
||
|
|
||
|
CALL try;
|
||
|
|
||
|
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 ( R1.L , 2 );
|
||
|
DBGA ( R2.L , 3 );
|
||
|
DBGA ( R3.L , 0xfff9 );
|
||
|
DBGA ( R4.L , 4 );
|
||
|
DBGA ( R5.L , 5 );
|
||
|
DBGA ( R6.L , 6 );
|
||
|
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;
|
||
|
|
||
|
try:
|
||
|
LINK 0;
|
||
|
[ -- SP ] = ( R7:0, P5:0 );
|
||
|
R7 = 0x1234 (X);
|
||
|
[ -- SP ] = R7;
|
||
|
CALL bar;
|
||
|
R7 = [ SP ++ ];
|
||
|
( R7:0, P5:0 ) = [ SP ++ ];
|
||
|
UNLINK;
|
||
|
RTS;
|
||
|
|
||
|
bar:
|
||
|
LINK 0;
|
||
|
[ -- SP ] = ( R7:0, P5:0 );
|
||
|
R0 = [ FP + 8 ];
|
||
|
DBGA ( R0.L , 0x1234 );
|
||
|
CALL foo;
|
||
|
( R7:0, P5:0 ) = [ SP ++ ];
|
||
|
UNLINK;
|
||
|
RTS;
|
||
|
|
||
|
foo:
|
||
|
DBGA ( R0.L , 0x1234 );
|
||
|
RTS;
|
||
|
|
||
|
.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
|