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