1*48596154Schristos# mach: bfin
2*48596154Schristos
3*48596154Schristos.include "testutils.inc"
4*48596154Schristos	start
5*48596154Schristos
6*48596154Schristos
7*48596154Schristos	r0.l = 0x1111;
8*48596154Schristos	r0.h = 0x0011;
9*48596154Schristos	r1.l = 0x2222;
10*48596154Schristos	r1.h = 0x0022;
11*48596154Schristos	r2.l = 0x3333;
12*48596154Schristos	r2.h = 0x0033;
13*48596154Schristos	r3.l = 0x4444;
14*48596154Schristos	r3.h = 0x0044;
15*48596154Schristos	r4.l = 0x5555;
16*48596154Schristos	r4.h = 0x0055;
17*48596154Schristos	r5.l = 0x6666;
18*48596154Schristos	r5.h = 0x0066;
19*48596154Schristos	r6.l = 0x7777;
20*48596154Schristos	r6.h = 0x0077;
21*48596154Schristos	r7.l = 0x8888;
22*48596154Schristos	r7.h = 0x0088;
23*48596154Schristos	p1.l = 0x5a5a;
24*48596154Schristos	p1.h = 0x005a;
25*48596154Schristos	p2.l = 0x6363;
26*48596154Schristos	p2.h = 0x0063;
27*48596154Schristos	p3.l = 0x7777;
28*48596154Schristos	p3.h = 0x0077;
29*48596154Schristos	p4.l = 0x7878;
30*48596154Schristos	p4.h = 0x0078;
31*48596154Schristos	p5.l = 0x3e3e;
32*48596154Schristos	p5.h = 0x003e;
33*48596154Schristos	sp = 0x4000(x);
34*48596154Schristos
35*48596154Schristos	jump.s prog_start;
36*48596154Schristos
37*48596154Schristos	nop;
38*48596154Schristos	nop;	// ADD reg update to roll back
39*48596154Schristos	nop;
40*48596154Schristos
41*48596154Schristosprog_start:
42*48596154Schristos	nop;
43*48596154Schristos	[--sp] = r0;
44*48596154Schristos	[--sp] = r1;
45*48596154Schristos	[--sp] = r2;
46*48596154Schristos	[--sp] = r3;
47*48596154Schristos	[--sp] = r4;
48*48596154Schristos	[--sp] = r5;
49*48596154Schristos	[--sp] = r6;
50*48596154Schristos	[--sp] = r7;
51*48596154Schristos	[--sp] = p0;
52*48596154Schristos	[--sp] = p1;
53*48596154Schristos	[--sp] = p2;
54*48596154Schristos	[--sp] = p3;
55*48596154Schristos	[--sp] = p4;
56*48596154Schristos	[--sp] = p5;
57*48596154Schristos
58*48596154Schristos	nop;
59*48596154Schristos	nop;
60*48596154Schristos	nop;
61*48596154Schristos	nop;
62*48596154Schristos	r0.l = 0xdead;
63*48596154Schristos	r0.h = 0xdead;
64*48596154Schristos	r1.l = 0xdead;
65*48596154Schristos	r1.h = 0xdead;
66*48596154Schristos	r2.l = 0xdead;
67*48596154Schristos	r2.h = 0xdead;
68*48596154Schristos	r3.l = 0xdead;
69*48596154Schristos	r3.h = 0xdead;
70*48596154Schristos	r4.l = 0xdead;
71*48596154Schristos	r4.h = 0xdead;
72*48596154Schristos	r5.l = 0xdead;
73*48596154Schristos	r5.h = 0xdead;
74*48596154Schristos	r6.l = 0xdead;
75*48596154Schristos	r6.h = 0xdead;
76*48596154Schristos	r7.l = 0xdead;
77*48596154Schristos	r7.h = 0xdead;
78*48596154Schristos	p1.l = 0xdead;
79*48596154Schristos	p1.h = 0xdead;
80*48596154Schristos	p2.l = 0xdead;
81*48596154Schristos	p2.h = 0xdead;
82*48596154Schristos	p3.l = 0xdead;
83*48596154Schristos	p3.h = 0xdead;
84*48596154Schristos	p4.l = 0xdead;
85*48596154Schristos	p4.h = 0xdead;
86*48596154Schristos	p5.l = 0xdead;
87*48596154Schristos	p5.h = 0xdead;
88*48596154Schristos	nop;
89*48596154Schristos	nop;
90*48596154Schristos	nop;
91*48596154Schristos	r0 = [sp++];
92*48596154Schristos	r1 = [sp++];
93*48596154Schristos	r2 = [sp++];
94*48596154Schristos	r3 = [sp++];
95*48596154Schristos	r4 = [sp++];
96*48596154Schristos	r5 = [sp++];
97*48596154Schristos	r6 = [sp++];
98*48596154Schristos	r7 = [sp++];
99*48596154Schristos	p0 = [sp++];
100*48596154Schristos	p1 = [sp++];
101*48596154Schristos	p2 = [sp++];
102*48596154Schristos	p3 = [sp++];
103*48596154Schristos	p4 = [sp++];
104*48596154Schristos	p5 = [sp++];
105*48596154Schristos
106*48596154Schristos	nop;
107*48596154Schristos	nop;
108*48596154Schristos	nop;
109*48596154Schristos	nop;
110*48596154Schristos	nop;
111*48596154Schristos	nop;
112*48596154Schristos	nop;
113*48596154Schristos_tp1:
114*48596154Schristos	nop;
115*48596154Schristos	nop;
116*48596154Schristos	nop;
117*48596154Schristos	nop;
118*48596154Schristos	nop;
119*48596154Schristos	nop;
120*48596154Schristos	nop;
121*48596154Schristos	[--sp] = r0;
122*48596154Schristos	[--sp] = r1;
123*48596154Schristos	[--sp] = r2;
124*48596154Schristos	[--sp] = r3;
125*48596154Schristos	[--sp] = r4;
126*48596154Schristos	[--sp] = r5;
127*48596154Schristos	[--sp] = r6;
128*48596154Schristos	[--sp] = r7;
129*48596154Schristos	[--sp] = p0;
130*48596154Schristos	[--sp] = p1;
131*48596154Schristos	[--sp] = p2;
132*48596154Schristos	[--sp] = p3;
133*48596154Schristos	[--sp] = p4;
134*48596154Schristos	[--sp] = p5;
135*48596154Schristos
136*48596154Schristos	nop;
137*48596154Schristos	nop;
138*48596154Schristos	nop;
139*48596154Schristos	nop;
140*48596154Schristos	r0.l = 0xdead;
141*48596154Schristos	r0.h = 0xdead;
142*48596154Schristos	r1.l = 0xdead;
143*48596154Schristos	r1.h = 0xdead;
144*48596154Schristos	r2.l = 0xdead;
145*48596154Schristos	r2.h = 0xdead;
146*48596154Schristos	r3.l = 0xdead;
147*48596154Schristos	r3.h = 0xdead;
148*48596154Schristos	r4.l = 0xdead;
149*48596154Schristos	r4.h = 0xdead;
150*48596154Schristos	r5.l = 0xdead;
151*48596154Schristos	r5.h = 0xdead;
152*48596154Schristos	r6.l = 0xdead;
153*48596154Schristos	r6.h = 0xdead;
154*48596154Schristos	r7.l = 0xdead;
155*48596154Schristos	r7.h = 0xdead;
156*48596154Schristos	p1.l = 0xdead;
157*48596154Schristos	p1.h = 0xdead;
158*48596154Schristos	p2.l = 0xdead;
159*48596154Schristos	p2.h = 0xdead;
160*48596154Schristos	p3.l = 0xdead;
161*48596154Schristos	p3.h = 0xdead;
162*48596154Schristos	p4.l = 0xdead;
163*48596154Schristos	p4.h = 0xdead;
164*48596154Schristos	p5.l = 0xdead;
165*48596154Schristos	p5.h = 0xdead;
166*48596154Schristos	nop;
167*48596154Schristos	nop;
168*48596154Schristos	nop;
169*48596154Schristos	r0 = [sp++];
170*48596154Schristos	r1 = [sp++];
171*48596154Schristos	r2 = [sp++];
172*48596154Schristos	r3 = [sp++];
173*48596154Schristos	r4 = [sp++];
174*48596154Schristos	r5 = [sp++];
175*48596154Schristos	r6 = [sp++];
176*48596154Schristos	r7 = [sp++];
177*48596154Schristos	p0 = [sp++];
178*48596154Schristos	p1 = [sp++];
179*48596154Schristos	a0.x = [sp++];
180*48596154Schristos
181*48596154Schristos	a1.w = r0;	//preserve r0
182*48596154Schristos
183*48596154Schristos	r0 = a0.x;
184*48596154Schristos	DBGA(r0.l,0x0063);
185*48596154Schristos
186*48596154Schristos	a0.w = [sp++];
187*48596154Schristos	r0 = a0.w;
188*48596154Schristos	DBGA(r0.l,0x7777);
189*48596154Schristos	DBGA(r0.h,0x0077);
190*48596154Schristos
191*48596154Schristos	a0 = a1;	//perserver r0, still
192*48596154Schristos
193*48596154Schristos	a1.x = [sp++];
194*48596154Schristos	r0 = a1.x;
195*48596154Schristos	DBGA(r0.l,0x0078);
196*48596154Schristos
197*48596154Schristos	a1.w = [sp++];
198*48596154Schristos	r0 = a1.w;
199*48596154Schristos	DBGA(r0.l,0x3e3e);
200*48596154Schristos	DBGA(r0.h,0x003e);
201*48596154Schristos
202*48596154Schristos	r0 = a0.w;	//restore r0
203*48596154Schristos
204*48596154Schristos	nop;
205*48596154Schristos	nop;
206*48596154Schristos	nop;
207*48596154Schristos	nop;
208*48596154Schristos	nop;
209*48596154Schristos	nop;
210*48596154Schristos	nop;
211*48596154Schristos_tp2:
212*48596154Schristos	nop;
213*48596154Schristos	nop;
214*48596154Schristos	nop;
215*48596154Schristos	[--sp] = r0;
216*48596154Schristos	[--sp] = r1;
217*48596154Schristos	[--sp] = r2;
218*48596154Schristos	[--sp] = r3;
219*48596154Schristos	[--sp] = a0.x;
220*48596154Schristos	[--sp] = a0.w;
221*48596154Schristos	[--sp] = a1.x;
222*48596154Schristos	[--sp] = a1.w;
223*48596154Schristos	[--sp] = p0;
224*48596154Schristos	[--sp] = p1;
225*48596154Schristos	[--sp] = p2;
226*48596154Schristos	[--sp] = p3;
227*48596154Schristos	[--sp] = p4;
228*48596154Schristos	[--sp] = p5;
229*48596154Schristos
230*48596154Schristos	nop;
231*48596154Schristos	nop;
232*48596154Schristos	nop;
233*48596154Schristos	nop;
234*48596154Schristos	r0.l = 0xdead;
235*48596154Schristos	r0.h = 0xdead;
236*48596154Schristos	r1.l = 0xdead;
237*48596154Schristos	r1.h = 0xdead;
238*48596154Schristos	r2.l = 0xdead;
239*48596154Schristos	r2.h = 0xdead;
240*48596154Schristos	r3.l = 0xdead;
241*48596154Schristos	r3.h = 0xdead;
242*48596154Schristos	r4.l = 0xdead;
243*48596154Schristos	r4.h = 0xdead;
244*48596154Schristos	r5.l = 0xdead;
245*48596154Schristos	r5.h = 0xdead;
246*48596154Schristos	r6.l = 0xdead;
247*48596154Schristos	r6.h = 0xdead;
248*48596154Schristos	r7.l = 0xdead;
249*48596154Schristos	r7.h = 0xdead;
250*48596154Schristos	p1.l = 0xdead;
251*48596154Schristos	p1.h = 0xdead;
252*48596154Schristos	p2.l = 0xdead;
253*48596154Schristos	p2.h = 0xdead;
254*48596154Schristos	p3.l = 0xdead;
255*48596154Schristos	p3.h = 0xdead;
256*48596154Schristos	p4.l = 0xdead;
257*48596154Schristos	p4.h = 0xdead;
258*48596154Schristos	p5.l = 0xdead;
259*48596154Schristos	p5.h = 0xdead;
260*48596154Schristos	nop;
261*48596154Schristos	nop;
262*48596154Schristos	nop;
263*48596154Schristos	r0 = [sp++];
264*48596154Schristos	r1 = [sp++];
265*48596154Schristos	r2 = [sp++];
266*48596154Schristos	r3 = [sp++];
267*48596154Schristos	r4 = [sp++];
268*48596154Schristos	r5 = [sp++];
269*48596154Schristos	r6 = [sp++];
270*48596154Schristos	r7 = [sp++];
271*48596154Schristos	p0 = [sp++];
272*48596154Schristos	p1 = [sp++];
273*48596154Schristos	p2 = [sp++];
274*48596154Schristos	p3 = [sp++];
275*48596154Schristos	p4 = [sp++];
276*48596154Schristos	p5 = [sp++];
277*48596154Schristos
278*48596154Schristos	nop;
279*48596154Schristos	nop;
280*48596154Schristos	nop;
281*48596154Schristos	nop;
282*48596154Schristos	nop;
283*48596154Schristos	nop;
284*48596154Schristos	nop;
285*48596154Schristos_tp3:
286*48596154Schristos	nop;
287*48596154Schristos	nop;
288*48596154Schristos	nop;
289*48596154Schristos	nop;
290*48596154Schristos	nop;
291*48596154Schristos_halt:
292*48596154Schristos	pass;
293