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