1# mach: bfin 2 3.include "testutils.inc" 4 start 5 6 7// load up some registers. 8// setup up a global pointer table and load some state. 9// save the machine state and clear some of the values. 10// then restore and assert some of the values to ensure that 11// we maintain consitent machine state. 12 13 R0 = 1; 14 R1 = 2; 15 R2 = 3; 16 R3 = -7; 17 R4 = 4; 18 R5 = 5; 19 R6 = 6; 20 R7 = 7; 21 22 loadsym P0, a; 23 _DBG P0; 24 SP = P0; 25 FP = P0; 26 P1 = [ P0 ++ ]; 27 P2 = [ P0 ++ ]; 28 P0 += 4; 29 P4 = [ P0 ++ ]; 30 P5 = [ P0 ++ ]; 31 [ -- SP ] = ( R7:0, P5:0 ); 32 _DBG SP; 33 _DBG FP; 34 R0 = R0 ^ R0; 35 R1 = R1 ^ R1; 36 R2 = R2 ^ R2; 37 R4 = R4 ^ R4; 38 R5 = R5 ^ R5; 39 R6 = R6 ^ R6; 40 R7 = R7 ^ R7; 41 ( R7:0, P5:0 ) = [ SP ++ ]; 42 DBGA ( R0.L , 1 ); 43 DBGA ( R2.L , 3 ); 44 DBGA ( R7.L , 7 ); 45 R0 = SP; 46 loadsym R1, a; 47 CC = R0 == R1; 48 IF !CC JUMP abrt; 49 R0 = FP; 50 CC = R0 == R1; 51 CC = R0 == R1; 52 IF !CC JUMP abrt; 53 54 pass 55abrt: 56 fail 57 58 .data 59_gptab: 60 .dw 0x200 61 .dw 0x000 62 .dw 0x300 63 .dw 0x400 64 .dw 0x500 65 .dw 0x600 66 67 .space (0x100) 68a: 69 .dw 1 70 .dw 2 71 .dw 3 72 .dw 4 73 .dw 5 74 .dw 6 75 .dw 7 76 .dw 8 77 .dw 9 78 .dw 0xa 79