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