summaryrefslogtreecommitdiff
path: root/sim/testsuite/bfin/stk6.s
blob: 89a5e6046955bcad29de3a19520e350c988ea111 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// setup a dummy stack and put values in memory 0,1,2,3...n
// then restore registers with pop instruction.
# mach: bfin

.include "testutils.inc"
	start

	SP += -12;

	P1 = SP;
	R1 = 0;
	P5.L = 0xdead;
	SP += -((8+5)*4);	// lets move the stack pointer and include the current location. i.e. 5
	P4 = (8+6);		// 8 data registers and 6 pointer registers are being stored.
	LSETUP ( ls0 , le0 ) LC0 = P4;
ls0:
	R1 += 1;
le0:
	[ P1-- ] = R1;

	( R7:0, P5:0 ) = [ SP ++ ];

	DBGA ( R0.L , 1 );
	DBGA ( R1.L , 2 );
	DBGA ( R2.L , 3 );
	DBGA ( R3.L , 4 );
	DBGA ( R4.L , 5 );
	DBGA ( R5.L , 6 );
	DBGA ( R6.L , 7 );
	DBGA ( R7.L , 8 );
	R0 = P0;	DBGA ( R0.L , 9 );
	R0 = P1;	DBGA ( R0.L , 10 );
	R0 = P2;	DBGA ( R0.L , 11 );
	R0 = P3;	DBGA ( R0.L , 12 );
	R0 = P4;	DBGA ( R0.L , 13 );
	R0 = P5;	DBGA ( R0.L , 14 );
	R0 = 1;

	[ -- SP ] = ( R7:0, P5:0 );
	( R7:0, P5:0 ) = [ SP ++ ];

	DBGA ( R0.L , 1 );
	DBGA ( R1.L , 2 );
	DBGA ( R2.L , 3 );
	DBGA ( R3.L , 4 );
	DBGA ( R4.L , 5 );
	DBGA ( R5.L , 6 );
	DBGA ( R6.L , 7 );
	DBGA ( R7.L , 8 );
	R0 = P0;	DBGA ( R0.L , 9 );
	R0 = P1;	DBGA ( R0.L , 10 );
	R0 = P2;	DBGA ( R0.L , 11 );
	R0 = P3;	DBGA ( R0.L , 12 );
	R0 = P4;	DBGA ( R0.L , 13 );
	R0 = P5;	DBGA ( R0.L , 14 );
	R0 = 1;

	pass