1// setup a dummy stack and put values in memory 0,1,2,3...n 2// then restore registers with pop instruction. 3# mach: bfin 4 5.include "testutils.inc" 6 start 7 8 SP += -12; 9 10 P1 = SP; 11 R1 = 0; 12 P5.L = 0xdead; 13 SP += -((8+5)*4); // lets move the stack pointer and include the current location. i.e. 5 14 P4 = (8+6); // 8 data registers and 6 pointer registers are being stored. 15 LSETUP ( ls0 , le0 ) LC0 = P4; 16ls0: 17 R1 += 1; 18le0: 19 [ P1-- ] = R1; 20 21 ( R7:0, P5:0 ) = [ SP ++ ]; 22 23 DBGA ( R0.L , 1 ); 24 DBGA ( R1.L , 2 ); 25 DBGA ( R2.L , 3 ); 26 DBGA ( R3.L , 4 ); 27 DBGA ( R4.L , 5 ); 28 DBGA ( R5.L , 6 ); 29 DBGA ( R6.L , 7 ); 30 DBGA ( R7.L , 8 ); 31 R0 = P0; DBGA ( R0.L , 9 ); 32 R0 = P1; DBGA ( R0.L , 10 ); 33 R0 = P2; DBGA ( R0.L , 11 ); 34 R0 = P3; DBGA ( R0.L , 12 ); 35 R0 = P4; DBGA ( R0.L , 13 ); 36 R0 = P5; DBGA ( R0.L , 14 ); 37 R0 = 1; 38 39 [ -- SP ] = ( R7:0, P5:0 ); 40 ( R7:0, P5:0 ) = [ SP ++ ]; 41 42 DBGA ( R0.L , 1 ); 43 DBGA ( R1.L , 2 ); 44 DBGA ( R2.L , 3 ); 45 DBGA ( R3.L , 4 ); 46 DBGA ( R4.L , 5 ); 47 DBGA ( R5.L , 6 ); 48 DBGA ( R6.L , 7 ); 49 DBGA ( R7.L , 8 ); 50 R0 = P0; DBGA ( R0.L , 9 ); 51 R0 = P1; DBGA ( R0.L , 10 ); 52 R0 = P2; DBGA ( R0.L , 11 ); 53 R0 = P3; DBGA ( R0.L , 12 ); 54 R0 = P4; DBGA ( R0.L , 13 ); 55 R0 = P5; DBGA ( R0.L , 14 ); 56 R0 = 1; 57 58 pass 59