xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/bfin/stk3.s (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1// load up some registers.
2// setup up a global pointer table and load some state.
3// save the machine state and clear some of the values.
4// then restore and assert some of the values to ensure that
5// we maintain consitent machine state.
6
7# mach: bfin
8
9.include "testutils.inc"
10	start
11
12	R0 = 1;
13	R1 = 2;
14	R2 = 3;
15	R3 = -7;
16	R4 = 4;
17	R5 = 5;
18	R6 = 6;
19	R7 = 7;
20
21	loadsym P0, a;
22	P1.L = 0x1000;
23	_DBG P0;
24	_DBG P1;
25	SP = P0;
26	FP = P0;
27
28	CALL try;
29
30	P1 = [ P0 ++ ];
31	P2 = [ P0 ++ ];
32	P0 += 4;
33	P4 = [ P0 ++ ];
34	P5 = [ P0 ++ ];
35	[ -- SP ] = ( R7:0, P5:0 );
36	_DBG SP;
37	_DBG FP;
38	R0 = R0 ^ R0;
39	R1 = R1 ^ R1;
40	R2 = R2 ^ R2;
41	R4 = R4 ^ R4;
42	R5 = R5 ^ R5;
43	R6 = R6 ^ R6;
44	R7 = R7 ^ R7;
45	( R7:0, P5:0 ) = [ SP ++ ];
46	DBGA ( R0.L , 1 );
47	DBGA ( R1.L , 2 );
48	DBGA ( R2.L , 3 );
49	DBGA ( R3.L , 0xfff9);
50	DBGA ( R4.L , 4 );
51	DBGA ( R5.L , 5 );
52	DBGA ( R6.L , 6 );
53	DBGA ( R7.L , 7 );
54	R0 = SP;
55	loadsym R1, a;
56	CC = R0 == R1;
57	IF !CC JUMP abrt;
58	R0 = FP;
59	CC = R0 == R1;
60	CC = R0 == R1;
61	IF !CC JUMP abrt;
62	pass
63abrt:
64	fail;
65
66try:
67	LINK 0;
68	[ -- SP ] = ( R7:0, P5:0 );
69	R7 = 0x1234 (X);
70	[ -- SP ] = R7;
71	CALL bar;
72	SP += 4;
73	( R7:0, P5:0 ) = [ SP ++ ];
74	UNLINK;
75	RTS;
76
77bar:
78	LINK 0;
79	[ -- SP ] = ( R7:0, P5:0 );
80	R0 = [ FP + 8 ];
81	DBGA ( R0.L , 0x1234 );
82	( R7:0, P5:0 ) = [ SP ++ ];
83	UNLINK;
84	RTS;
85
86	.data
87_gptab:
88	.dw 0x200
89	.dw 0x000
90	.dw 0x300
91	.dw 0x400
92	.dw 0x500
93	.dw 0x600
94
95	.space (0x100)
96a:
97	.dw 1
98	.dw 2
99	.dw 3
100	.dw 4
101	.dw 5
102	.dw 6
103	.dw 7
104	.dw 8
105	.dw 9
106	.dw 0xa
107