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