Home | History | Annotate | Line # | Download | only in bfin
stk4.s revision 1.1.1.1
      1  1.1  christos // load up some registers.
      2  1.1  christos // setup up a global pointer table and load some state.
      3  1.1  christos // save the machine state and clear some of the values.
      4  1.1  christos // then restore and assert some of the values to ensure that
      5  1.1  christos // we maintain consitent machine state.
      6  1.1  christos # mach: bfin
      7  1.1  christos 
      8  1.1  christos .include "testutils.inc"
      9  1.1  christos 	start
     10  1.1  christos 
     11  1.1  christos 	R0 = 1;
     12  1.1  christos 	R1 = 2;
     13  1.1  christos 	R2 = 3;
     14  1.1  christos 	R3 = -7;
     15  1.1  christos 	R4 = 4;
     16  1.1  christos 	R5 = 5;
     17  1.1  christos 	R6 = 6;
     18  1.1  christos 	R7 = 7;
     19  1.1  christos 
     20  1.1  christos 	loadsym P0, a;
     21  1.1  christos 	P1.L = 0x1000;
     22  1.1  christos 	_DBG P0;
     23  1.1  christos 	_DBG P1;
     24  1.1  christos 	SP = P0;
     25  1.1  christos 	FP = P0;
     26  1.1  christos 
     27  1.1  christos 	CALL try;
     28  1.1  christos 
     29  1.1  christos 	P1 = [ P0 ++ ];
     30  1.1  christos 	P2 = [ P0 ++ ];
     31  1.1  christos 	P0 += 4;
     32  1.1  christos 	P4 = [ P0 ++ ];
     33  1.1  christos 	P5 = [ P0 ++ ];
     34  1.1  christos 	[ -- SP ] = ( R7:0, P5:0 );
     35  1.1  christos 	_DBG SP;
     36  1.1  christos 	_DBG FP;
     37  1.1  christos 	R0 = R0 ^ R0;
     38  1.1  christos 	R1 = R1 ^ R1;
     39  1.1  christos 	R2 = R2 ^ R2;
     40  1.1  christos 	R4 = R4 ^ R4;
     41  1.1  christos 	R5 = R5 ^ R5;
     42  1.1  christos 	R6 = R6 ^ R6;
     43  1.1  christos 	R7 = R7 ^ R7;
     44  1.1  christos 	( R7:0, P5:0 ) = [ SP ++ ];
     45  1.1  christos 	DBGA ( R0.L , 1 );
     46  1.1  christos 	DBGA ( R1.L , 2 );
     47  1.1  christos 	DBGA ( R2.L , 3 );
     48  1.1  christos 	DBGA ( R3.L , 0xfff9 );
     49  1.1  christos 	DBGA ( R4.L , 4 );
     50  1.1  christos 	DBGA ( R5.L , 5 );
     51  1.1  christos 	DBGA ( R6.L , 6 );
     52  1.1  christos 	DBGA ( R7.L , 7 );
     53  1.1  christos 	R0 = SP;
     54  1.1  christos 	loadsym R1, a;
     55  1.1  christos 	CC = R0 == R1;
     56  1.1  christos 	IF !CC JUMP abrt;
     57  1.1  christos 	R0 = FP;
     58  1.1  christos 	CC = R0 == R1;
     59  1.1  christos 	CC = R0 == R1;
     60  1.1  christos 	IF !CC JUMP abrt;
     61  1.1  christos 	pass
     62  1.1  christos abrt:
     63  1.1  christos 	fail;
     64  1.1  christos 
     65  1.1  christos try:
     66  1.1  christos 	LINK 0;
     67  1.1  christos 	[ -- SP ] = ( R7:0, P5:0 );
     68  1.1  christos 	R7 = 0x1234 (X);
     69  1.1  christos 	[ -- SP ] = R7;
     70  1.1  christos 	CALL bar;
     71  1.1  christos 	R7 = [ SP ++ ];
     72  1.1  christos 	( R7:0, P5:0 ) = [ SP ++ ];
     73  1.1  christos 	UNLINK;
     74  1.1  christos 	RTS;
     75  1.1  christos 
     76  1.1  christos bar:
     77  1.1  christos 	LINK 0;
     78  1.1  christos 	[ -- SP ] = ( R7:0, P5:0 );
     79  1.1  christos 	R0 = [ FP + 8 ];
     80  1.1  christos 	DBGA ( R0.L , 0x1234 );
     81  1.1  christos 	CALL foo;
     82  1.1  christos 	( R7:0, P5:0 ) = [ SP ++ ];
     83  1.1  christos 	UNLINK;
     84  1.1  christos 	RTS;
     85  1.1  christos 
     86  1.1  christos foo:
     87  1.1  christos 	DBGA ( R0.L , 0x1234 );
     88  1.1  christos 	RTS;
     89  1.1  christos 
     90  1.1  christos 	.data
     91  1.1  christos _gptab:
     92  1.1  christos 	.dw 0x200
     93  1.1  christos 	.dw 0x000
     94  1.1  christos 	.dw 0x300
     95  1.1  christos 	.dw 0x400
     96  1.1  christos 	.dw 0x500
     97  1.1  christos 	.dw 0x600
     98  1.1  christos 
     99  1.1  christos 	.space (0x100)
    100  1.1  christos a:
    101  1.1  christos 	.dw 1
    102  1.1  christos 	.dw 2
    103  1.1  christos 	.dw 3
    104  1.1  christos 	.dw 4
    105  1.1  christos 	.dw 5
    106  1.1  christos 	.dw 6
    107  1.1  christos 	.dw 7
    108  1.1  christos 	.dw 8
    109  1.1  christos 	.dw 9
    110  1.1  christos 	.dw 0xa
    111