xref: /openbmc/linux/arch/m68k/ifpsp060/src/ftest.S (revision bef7a78d)
1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
3M68000 Hi-Performance Microprocessor Division
4M68060 Software Package
5Production Release P1.00 -- October 10, 1994
6
7M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
8
9THE SOFTWARE is provided on an "AS IS" basis and without warranty.
10To the maximum extent permitted by applicable law,
11MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
12INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
13and any warranty against infringement with regard to the SOFTWARE
14(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
15
16To the maximum extent permitted by applicable law,
17IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
18(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
19BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
20ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
21Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.
22
23You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
24so long as this entire notice is retained without alteration in any modified and/or
25redistributed versions, and that such modified versions are clearly identified as such.
26No licenses are granted by implication, estoppel or otherwise under any patents
27or trademarks of Motorola, Inc.
28~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29#############################################
30set	SREGS,		-64
31set	IREGS,		-128
32set	IFPREGS,	-224
33set	SFPREGS,	-320
34set	IFPCREGS,	-332
35set	SFPCREGS,	-344
36set	ICCR,		-346
37set	SCCR,		-348
38set	TESTCTR,	-352
39set	DATA,		-384
40
41#############################################
42TESTTOP:
43	bra.l		_060TESTS_
44	short		0x0000
45
46	bra.l		_060TESTS_unimp
47	short		0x0000
48
49	bra.l		_060TESTS_enable
50	short		0x0000
51
52start_str:
53	string		"Testing 68060 FPSP started:\n"
54
55start_str_unimp:
56	string		"Testing 68060 FPSP unimplemented instruction started:\n"
57
58start_str_enable:
59	string		"Testing 68060 FPSP exception enabled started:\n"
60
61pass_str:
62	string		"passed\n"
63
64fail_str:
65	string		" failed\n"
66
67	align		0x4
68chk_test:
69	tst.l		%d0
70	bne.b		test_fail
71test_pass:
72	pea		pass_str(%pc)
73	bsr.l		_print_str
74	addq.l		&0x4,%sp
75	rts
76test_fail:
77	mov.l		%d1,-(%sp)
78	bsr.l		_print_num
79	addq.l		&0x4,%sp
80
81	pea		fail_str(%pc)
82	bsr.l		_print_str
83	addq.l		&0x4,%sp
84	rts
85
86#############################################
87_060TESTS_:
88	link		%a6,&-384
89
90	movm.l		&0x3f3c,-(%sp)
91	fmovm.x		&0xff,-(%sp)
92
93	pea		start_str(%pc)
94	bsr.l		_print_str
95	addq.l		&0x4,%sp
96
97### effadd
98	clr.l		TESTCTR(%a6)
99	pea		effadd_str(%pc)
100	bsr.l		_print_str
101	addq.l		&0x4,%sp
102
103	bsr.l		effadd_0
104
105	bsr.l		chk_test
106
107### unsupp
108	clr.l		TESTCTR(%a6)
109	pea		unsupp_str(%pc)
110	bsr.l		_print_str
111	addq.l		&0x4,%sp
112
113	bsr.l		unsupp_0
114
115	bsr.l		chk_test
116
117### ovfl non-maskable
118	clr.l		TESTCTR(%a6)
119	pea		ovfl_nm_str(%pc)
120	bsr.l		_print_str
121	bsr.l		ovfl_nm_0
122
123	bsr.l		chk_test
124
125### unfl non-maskable
126	clr.l		TESTCTR(%a6)
127	pea		unfl_nm_str(%pc)
128	bsr.l		_print_str
129	bsr.l		unfl_nm_0
130
131	bsr.l		chk_test
132
133	movm.l		(%sp)+,&0x3cfc
134	fmovm.x		(%sp)+,&0xff
135
136	unlk		%a6
137	rts
138
139_060TESTS_unimp:
140	link		%a6,&-384
141
142	movm.l		&0x3f3c,-(%sp)
143	fmovm.x		&0xff,-(%sp)
144
145	pea		start_str_unimp(%pc)
146	bsr.l		_print_str
147	addq.l		&0x4,%sp
148
149### unimp
150	clr.l		TESTCTR(%a6)
151	pea		unimp_str(%pc)
152	bsr.l		_print_str
153	addq.l		&0x4,%sp
154
155	bsr.l		unimp_0
156
157	bsr.l		chk_test
158
159	movm.l		(%sp)+,&0x3cfc
160	fmovm.x		(%sp)+,&0xff
161
162	unlk		%a6
163	rts
164
165_060TESTS_enable:
166	link		%a6,&-384
167
168	movm.l		&0x3f3c,-(%sp)
169	fmovm.x		&0xff,-(%sp)
170
171	pea		start_str_enable(%pc)
172	bsr.l		_print_str
173	addq.l		&0x4,%sp
174
175### snan
176	clr.l		TESTCTR(%a6)
177	pea		snan_str(%pc)
178	bsr.l		_print_str
179	bsr.l		snan_0
180
181	bsr.l		chk_test
182
183### operr
184	clr.l		TESTCTR(%a6)
185	pea		operr_str(%pc)
186	bsr.l		_print_str
187	bsr.l		operr_0
188
189	bsr.l		chk_test
190
191### ovfl
192	clr.l		TESTCTR(%a6)
193	pea		ovfl_str(%pc)
194	bsr.l		_print_str
195	bsr.l		ovfl_0
196
197	bsr.l		chk_test
198
199### unfl
200	clr.l		TESTCTR(%a6)
201	pea		unfl_str(%pc)
202	bsr.l		_print_str
203	bsr.l		unfl_0
204
205	bsr.l		chk_test
206
207### dz
208	clr.l		TESTCTR(%a6)
209	pea		dz_str(%pc)
210	bsr.l		_print_str
211	bsr.l		dz_0
212
213	bsr.l		chk_test
214
215### inexact
216	clr.l		TESTCTR(%a6)
217	pea		inex_str(%pc)
218	bsr.l		_print_str
219	bsr.l		inex_0
220
221	bsr.l		chk_test
222
223	movm.l		(%sp)+,&0x3cfc
224	fmovm.x		(%sp)+,&0xff
225
226	unlk		%a6
227	rts
228
229#############################################
230#############################################
231
232unimp_str:
233	string		"\tUnimplemented FP instructions..."
234
235	align		0x4
236unimp_0:
237	addq.l		&0x1,TESTCTR(%a6)
238
239	movm.l		DEF_REGS(%pc),&0x3fff
240	fmovm.x		DEF_FPREGS(%pc),&0xff
241	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
242
243	mov.w		&0x0000,ICCR(%a6)
244	movm.l		&0x7fff,IREGS(%a6)
245	fmovm.x		&0xff,IFPREGS(%a6)
246	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
247
248	mov.l		&0x40000000,DATA+0x0(%a6)
249	mov.l		&0xc90fdaa2,DATA+0x4(%a6)
250	mov.l		&0x2168c235,DATA+0x8(%a6)
251
252	mov.w		&0x0000,%cc
253unimp_0_pc:
254	fsin.x		DATA(%a6),%fp0
255
256	mov.w		%cc,SCCR(%a6)
257	movm.l		&0x7fff,SREGS(%a6)
258	fmovm.x		&0xff,SFPREGS(%a6)
259	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
260
261	mov.l		&0xbfbf0000,IFPREGS+0x0(%a6)
262	mov.l		&0x80000000,IFPREGS+0x4(%a6)
263	mov.l		&0x00000000,IFPREGS+0x8(%a6)
264	mov.l		&0x08000208,IFPCREGS+0x4(%a6)
265	lea		unimp_0_pc(%pc),%a0
266	mov.l		%a0,IFPCREGS+0x8(%a6)
267
268	bsr.l		chkregs
269	tst.b		%d0
270	bne.l		error
271
272	bsr.l		chkfpregs
273	tst.b		%d0
274	bne.l		error
275
276unimp_1:
277	addq.l		&0x1,TESTCTR(%a6)
278
279	movm.l		DEF_REGS(%pc),&0x3fff
280	fmovm.x		DEF_FPREGS(%pc),&0xff
281	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
282
283	mov.w		&0x0000,ICCR(%a6)
284	movm.l		&0x7fff,IREGS(%a6)
285	fmovm.x		&0xff,IFPREGS(%a6)
286	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
287
288	mov.l		&0x3ffe0000,DATA+0x0(%a6)
289	mov.l		&0xc90fdaa2,DATA+0x4(%a6)
290	mov.l		&0x2168c235,DATA+0x8(%a6)
291
292	mov.w		&0x0000,%cc
293unimp_1_pc:
294	ftan.x		DATA(%a6),%fp0
295
296	mov.w		%cc,SCCR(%a6)
297	movm.l		&0x7fff,SREGS(%a6)
298	fmovm.x		&0xff,SFPREGS(%a6)
299	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
300
301	mov.l		&0x3fff0000,IFPREGS+0x0(%a6)
302	mov.l		&0x80000000,IFPREGS+0x4(%a6)
303	mov.l		&0x00000000,IFPREGS+0x8(%a6)
304	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
305	lea		unimp_1_pc(%pc),%a0
306	mov.l		%a0,IFPCREGS+0x8(%a6)
307
308	bsr.l		chkregs
309	tst.b		%d0
310	bne.l		error
311
312	bsr.l		chkfpregs
313	tst.b		%d0
314	bne.l		error
315
316# fmovecr
317unimp_2:
318	addq.l		&0x1,TESTCTR(%a6)
319
320	movm.l		DEF_REGS(%pc),&0x3fff
321	fmovm.x		DEF_FPREGS(%pc),&0xff
322	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
323
324	mov.w		&0x0000,ICCR(%a6)
325	movm.l		&0x7fff,IREGS(%a6)
326	fmovm.x		&0xff,IFPREGS(%a6)
327	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
328
329	mov.w		&0x0000,%cc
330unimp_2_pc:
331	fmovcr.x	&0x31,%fp0
332
333	mov.w		%cc,SCCR(%a6)
334	movm.l		&0x7fff,SREGS(%a6)
335	fmovm.x		&0xff,SFPREGS(%a6)
336	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
337
338	mov.l		&0x40000000,IFPREGS+0x0(%a6)
339	mov.l		&0x935d8ddd,IFPREGS+0x4(%a6)
340	mov.l		&0xaaa8ac17,IFPREGS+0x8(%a6)
341	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
342	lea		unimp_2_pc(%pc),%a0
343	mov.l		%a0,IFPCREGS+0x8(%a6)
344
345	bsr.l		chkregs
346	tst.b		%d0
347	bne.l		error
348
349	bsr.l		chkfpregs
350	tst.b		%d0
351	bne.l		error
352
353# fscc
354unimp_3:
355	addq.l		&0x1,TESTCTR(%a6)
356
357	movm.l		DEF_REGS(%pc),&0x3fff
358	fmovm.x		DEF_FPREGS(%pc),&0xff
359	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
360
361	fmov.l		&0x0f000000,%fpsr
362	mov.l		&0x00,%d7
363
364	mov.w		&0x0000,ICCR(%a6)
365	movm.l		&0x7fff,IREGS(%a6)
366	fmovm.x		&0xff,IFPREGS(%a6)
367	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
368
369	mov.w		&0x0000,%cc
370unimp_3_pc:
371	fsgt		%d7
372
373	mov.w		%cc,SCCR(%a6)
374	movm.l		&0x7fff,SREGS(%a6)
375	fmovm.x		&0xff,SFPREGS(%a6)
376	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
377	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
378	lea		unimp_3_pc(%pc),%a0
379	mov.l		%a0,IFPCREGS+0x8(%a6)
380
381	bsr.l		chkregs
382	tst.b		%d0
383	bne.l		error
384
385	bsr.l		chkfpregs
386	tst.b		%d0
387	bne.l		error
388
389# fdbcc
390unimp_4:
391	addq.l		&0x1,TESTCTR(%a6)
392
393	movm.l		DEF_REGS(%pc),&0x3fff
394	fmovm.x		DEF_FPREGS(%pc),&0xff
395	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
396
397	fmov.l		&0x0f000000,%fpsr
398	mov.l		&0x2,%d7
399
400	mov.w		&0x0000,ICCR(%a6)
401	movm.l		&0x7fff,IREGS(%a6)
402	fmovm.x		&0xff,IFPREGS(%a6)
403	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
404
405	mov.w		&0x0000,%cc
406unimp_4_pc:
407	fdbgt.w		%d7,unimp_4_pc
408
409	mov.w		%cc,SCCR(%a6)
410	movm.l		&0x7fff,SREGS(%a6)
411	fmovm.x		&0xff,SFPREGS(%a6)
412	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
413	mov.w		&0xffff,IREGS+28+2(%a6)
414	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
415	lea		unimp_4_pc(%pc),%a0
416	mov.l		%a0,IFPCREGS+0x8(%a6)
417
418	bsr.l		chkregs
419	tst.b		%d0
420	bne.l		error
421
422	bsr.l		chkfpregs
423	tst.b		%d0
424	bne.l		error
425
426# ftrapcc
427unimp_5:
428	addq.l		&0x1,TESTCTR(%a6)
429
430	movm.l		DEF_REGS(%pc),&0x3fff
431	fmovm.x		DEF_FPREGS(%pc),&0xff
432	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
433
434	fmov.l		&0x0f000000,%fpsr
435
436	mov.w		&0x0000,ICCR(%a6)
437	movm.l		&0x7fff,IREGS(%a6)
438	fmovm.x		&0xff,IFPREGS(%a6)
439	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
440
441	mov.w		&0x0000,%cc
442unimp_5_pc:
443	ftpgt.l		&0xabcdef01
444
445	mov.w		%cc,SCCR(%a6)
446	movm.l		&0x7fff,SREGS(%a6)
447	fmovm.x		&0xff,SFPREGS(%a6)
448	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
449	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
450	lea		unimp_5_pc(%pc),%a0
451	mov.l		%a0,IFPCREGS+0x8(%a6)
452
453	bsr.l		chkregs
454	tst.b		%d0
455	bne.l		error
456
457	bsr.l		chkfpregs
458	tst.b		%d0
459	bne.l		error
460
461	clr.l		%d0
462	rts
463
464#############################################
465
466effadd_str:
467	string		"\tUnimplemented <ea>..."
468
469	align		0x4
470effadd_0:
471	addq.l		&0x1,TESTCTR(%a6)
472
473	movm.l		DEF_REGS(%pc),&0x3fff
474	fmovm.x		DEF_FPREGS(%pc),&0xff
475	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
476
477	mov.w		&0x0000,ICCR(%a6)
478	movm.l		&0x7fff,IREGS(%a6)
479	fmovm.x		&0xff,IFPREGS(%a6)
480	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
481
482	fmov.b		&0x2,%fp0
483
484	mov.w		&0x0000,%cc
485effadd_0_pc:
486	fmul.x		&0xc00000008000000000000000,%fp0
487
488	mov.w		%cc,SCCR(%a6)
489	movm.l		&0x7fff,SREGS(%a6)
490	fmovm.x		&0xff,SFPREGS(%a6)
491	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
492
493	mov.l		&0xc0010000,IFPREGS+0x0(%a6)
494	mov.l		&0x80000000,IFPREGS+0x4(%a6)
495	mov.l		&0x00000000,IFPREGS+0x8(%a6)
496	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
497	lea		effadd_0_pc(%pc),%a0
498	mov.l		%a0,IFPCREGS+0x8(%a6)
499
500	bsr.l		chkregs
501	tst.b		%d0
502	bne.l		error
503
504	bsr.l		chkfpregs
505	tst.b		%d0
506	bne.l		error
507
508effadd_1:
509	addq.l		&0x1,TESTCTR(%a6)
510
511	movm.l		DEF_REGS(%pc),&0x3fff
512	fmovm.x		DEF_FPREGS(%pc),&0xff
513	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
514
515	mov.w		&0x0000,ICCR(%a6)
516	movm.l		&0x7fff,IREGS(%a6)
517	fmovm.x		&0xff,IFPREGS(%a6)
518	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
519
520	mov.w		&0x0000,%cc
521effadd_1_pc:
522	fabs.p		&0xc12300012345678912345678,%fp0
523
524	mov.w		%cc,SCCR(%a6)
525	movm.l		&0x7fff,SREGS(%a6)
526	fmovm.x		&0xff,SFPREGS(%a6)
527	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
528
529	mov.l		&0x3e660000,IFPREGS+0x0(%a6)
530	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6)
531	mov.l		&0xd14035bc,IFPREGS+0x8(%a6)
532	mov.l		&0x00000108,IFPCREGS+0x4(%a6)
533	lea		effadd_1_pc(%pc),%a0
534	mov.l		%a0,IFPCREGS+0x8(%a6)
535
536	bsr.l		chkregs
537	tst.b		%d0
538	bne.l		error
539
540	bsr.l		chkfpregs
541	tst.b		%d0
542	bne.l		error
543
544fmovml_0:
545	addq.l		&0x1,TESTCTR(%a6)
546
547	movm.l		DEF_REGS(%pc),&0x3fff
548	fmovm.x		DEF_FPREGS(%pc),&0xff
549	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
550
551	mov.w		&0x0000,ICCR(%a6)
552	mov.w		&0x0000,%cc
553	movm.l		&0x7fff,IREGS(%a6)
554	fmovm.x		&0xff,IFPREGS(%a6)
555	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
556
557	fmovm.l		&0xffffffffffffffff,%fpcr,%fpsr
558
559	mov.w		%cc,SCCR(%a6)
560	movm.l		&0x7fff,SREGS(%a6)
561	fmovm.x		&0xff,SFPREGS(%a6)
562	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
563	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
564	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
565
566	bsr.l		chkregs
567	tst.b		%d0
568	bne.l		error
569
570	bsr.l		chkfpregs
571	tst.b		%d0
572	bne.l		error
573
574fmovml_1:
575	addq.l		&0x1,TESTCTR(%a6)
576
577	movm.l		DEF_REGS(%pc),&0x3fff
578	fmovm.x		DEF_FPREGS(%pc),&0xff
579	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
580
581	mov.w		&0x0000,ICCR(%a6)
582	mov.w		&0x0000,%cc
583	movm.l		&0x7fff,IREGS(%a6)
584	fmovm.x		&0xff,IFPREGS(%a6)
585	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
586
587	fmovm.l		&0xffffffffffffffff,%fpcr,%fpiar
588
589	mov.w		%cc,SCCR(%a6)
590	movm.l		&0x7fff,SREGS(%a6)
591	fmovm.x		&0xff,SFPREGS(%a6)
592	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
593	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
594	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
595
596	bsr.l		chkregs
597	tst.b		%d0
598	bne.l		error
599
600	bsr.l		chkfpregs
601	tst.b		%d0
602	bne.l		error
603
604fmovml_2:
605	addq.l		&0x1,TESTCTR(%a6)
606
607	movm.l		DEF_REGS(%pc),&0x3fff
608	fmovm.x		DEF_FPREGS(%pc),&0xff
609	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
610
611	mov.w		&0x0000,ICCR(%a6)
612	mov.w		&0x0000,%cc
613	movm.l		&0x7fff,IREGS(%a6)
614	fmovm.x		&0xff,IFPREGS(%a6)
615	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
616
617	fmovm.l		&0xffffffffffffffff,%fpsr,%fpiar
618
619	mov.w		%cc,SCCR(%a6)
620	movm.l		&0x7fff,SREGS(%a6)
621	fmovm.x		&0xff,SFPREGS(%a6)
622	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
623	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
624	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
625
626	bsr.l		chkregs
627	tst.b		%d0
628	bne.l		error
629
630	bsr.l		chkfpregs
631	tst.b		%d0
632	bne.l		error
633
634fmovml_3:
635	addq.l		&0x1,TESTCTR(%a6)
636
637	movm.l		DEF_REGS(%pc),&0x3fff
638	fmovm.x		DEF_FPREGS(%pc),&0xff
639	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
640
641	mov.w		&0x0000,ICCR(%a6)
642	mov.w		&0x0000,%cc
643	movm.l		&0x7fff,IREGS(%a6)
644	fmovm.x		&0xff,IFPREGS(%a6)
645	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
646
647	fmovm.l		&0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar
648
649	mov.w		%cc,SCCR(%a6)
650	movm.l		&0x7fff,SREGS(%a6)
651	fmovm.x		&0xff,SFPREGS(%a6)
652	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
653	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
654	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
655	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
656
657	bsr.l		chkregs
658	tst.b		%d0
659	bne.l		error
660
661	bsr.l		chkfpregs
662	tst.b		%d0
663	bne.l		error
664
665# fmovmx dynamic
666fmovmx_0:
667	addq.l		&0x1,TESTCTR(%a6)
668
669	movm.l		DEF_REGS(%pc),&0x3fff
670	fmovm.x		DEF_FPREGS(%pc),&0xff
671	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
672
673	fmov.b		&0x1,%fp0
674	fmov.b		&0x2,%fp1
675	fmov.b		&0x3,%fp2
676	fmov.b		&0x4,%fp3
677	fmov.b		&0x5,%fp4
678	fmov.b		&0x6,%fp5
679	fmov.b		&0x7,%fp6
680	fmov.b		&0x8,%fp7
681
682	fmov.l		&0x0,%fpiar
683	mov.l		&0xffffffaa,%d0
684
685	mov.w		&0x0000,ICCR(%a6)
686	movm.l		&0xffff,IREGS(%a6)
687
688	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
689	fmovm.x		&0xff,IFPREGS(%a6)
690
691	mov.w		&0x0000,%cc
692
693	fmovm.x		%d0,-(%sp)
694
695	mov.w		%cc,SCCR(%a6)
696
697	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
698
699	fmov.s		&0x7f800000,%fp1
700	fmov.s		&0x7f800000,%fp3
701	fmov.s		&0x7f800000,%fp5
702	fmov.s		&0x7f800000,%fp7
703
704	fmov.x		(%sp)+,%fp1
705	fmov.x		(%sp)+,%fp3
706	fmov.x		(%sp)+,%fp5
707	fmov.x		(%sp)+,%fp7
708
709	movm.l		&0xffff,SREGS(%a6)
710	fmovm.x		&0xff,SFPREGS(%a6)
711
712	bsr.l		chkregs
713	tst.b		%d0
714	bne.l		error
715
716	bsr.l		chkfpregs
717	tst.b		%d0
718	bne.l		error
719
720fmovmx_1:
721	addq.l		&0x1,TESTCTR(%a6)
722
723	movm.l		DEF_REGS(%pc),&0x3fff
724	fmovm.x		DEF_FPREGS(%pc),&0xff
725	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
726
727	fmov.b		&0x1,%fp0
728	fmov.b		&0x2,%fp1
729	fmov.b		&0x3,%fp2
730	fmov.b		&0x4,%fp3
731	fmov.b		&0x5,%fp4
732	fmov.b		&0x6,%fp5
733	fmov.b		&0x7,%fp6
734	fmov.b		&0x8,%fp7
735
736	fmov.x		%fp6,-(%sp)
737	fmov.x		%fp4,-(%sp)
738	fmov.x		%fp2,-(%sp)
739	fmov.x		%fp0,-(%sp)
740
741	fmovm.x		&0xff,IFPREGS(%a6)
742
743	fmov.s		&0x7f800000,%fp6
744	fmov.s		&0x7f800000,%fp4
745	fmov.s		&0x7f800000,%fp2
746	fmov.s		&0x7f800000,%fp0
747
748	fmov.l		&0x0,%fpiar
749	fmov.l		&0x0,%fpsr
750	mov.l		&0xffffffaa,%d0
751
752	mov.w		&0x0000,ICCR(%a6)
753	movm.l		&0xffff,IREGS(%a6)
754
755	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
756
757	mov.w		&0x0000,%cc
758
759	fmovm.x		(%sp)+,%d0
760
761	mov.w		%cc,SCCR(%a6)
762
763	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
764
765	movm.l		&0xffff,SREGS(%a6)
766	fmovm.x		&0xff,SFPREGS(%a6)
767
768	bsr.l		chkregs
769	tst.b		%d0
770	bne.l		error
771
772	bsr.l		chkfpregs
773	tst.b		%d0
774	bne.l		error
775
776fmovmx_2:
777	addq.l		&0x1,TESTCTR(%a6)
778
779	movm.l		DEF_REGS(%pc),&0x3fff
780	fmovm.x		DEF_FPREGS(%pc),&0xff
781	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
782
783	fmov.b		&0x1,%fp0
784	fmov.b		&0x2,%fp1
785	fmov.b		&0x3,%fp2
786	fmov.b		&0x4,%fp3
787	fmov.b		&0x5,%fp4
788	fmov.b		&0x6,%fp5
789	fmov.b		&0x7,%fp6
790	fmov.b		&0x8,%fp7
791
792	fmov.l		&0x0,%fpiar
793	mov.l		&0xffffff00,%d0
794
795	mov.w		&0x0000,ICCR(%a6)
796	movm.l		&0xffff,IREGS(%a6)
797
798	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
799	fmovm.x		&0xff,IFPREGS(%a6)
800
801	mov.w		&0x0000,%cc
802
803	fmovm.x		%d0,-(%sp)
804
805	mov.w		%cc,SCCR(%a6)
806
807	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
808
809	movm.l		&0xffff,SREGS(%a6)
810	fmovm.x		&0xff,SFPREGS(%a6)
811
812	bsr.l		chkregs
813	tst.b		%d0
814	bne.l		error
815
816	bsr.l		chkfpregs
817	tst.b		%d0
818	bne.l		error
819
820	clr.l		%d0
821	rts
822
823###########################################################
824
825# This test will take a non-maskable overflow directly.
826ovfl_nm_str:
827	string		"\tNon-maskable overflow..."
828
829	align		0x4
830ovfl_nm_0:
831	addq.l		&0x1,TESTCTR(%a6)
832
833	movm.l		DEF_REGS(%pc),&0x3fff
834	fmovm.x		DEF_FPREGS(%pc),&0xff
835	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
836
837	mov.w		&0x0000,ICCR(%a6)
838	movm.l		&0x7fff,IREGS(%a6)
839	fmovm.x		&0xff,IFPREGS(%a6)
840	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
841
842	fmov.b		&0x2,%fp0
843	mov.l		&0x7ffe0000,DATA+0x0(%a6)
844	mov.l		&0x80000000,DATA+0x4(%a6)
845	mov.l		&0x00000000,DATA+0x8(%a6)
846
847	mov.w		&0x0000,%cc
848ovfl_nm_0_pc:
849	fmul.x		DATA(%a6),%fp0
850
851	mov.w		%cc,SCCR(%a6)
852	movm.l		&0x7fff,SREGS(%a6)
853	fmovm.x		&0xff,SFPREGS(%a6)
854	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
855
856	mov.l		&0x7fff0000,IFPREGS+0x0(%a6)
857	mov.l		&0x00000000,IFPREGS+0x4(%a6)
858	mov.l		&0x00000000,IFPREGS+0x8(%a6)
859	mov.l		&0x02001048,IFPCREGS+0x4(%a6)
860	lea		ovfl_nm_0_pc(%pc),%a0
861	mov.l		%a0,IFPCREGS+0x8(%a6)
862
863	bsr.l		chkregs
864	tst.b		%d0
865	bne.l		error
866
867	bsr.l		chkfpregs
868	tst.b		%d0
869	bne.l		error
870
871	clr.l		%d0
872	rts
873
874###########################################################
875
876# This test will take an overflow directly.
877ovfl_str:
878	string		"\tEnabled overflow..."
879
880	align		0x4
881ovfl_0:
882	addq.l		&0x1,TESTCTR(%a6)
883
884	movm.l		DEF_REGS(%pc),&0x3fff
885	fmovm.x		DEF_FPREGS(%pc),&0xff
886	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
887
888	mov.w		&0x0000,ICCR(%a6)
889	movm.l		&0x7fff,IREGS(%a6)
890	fmovm.x		&0xff,IFPREGS(%a6)
891	fmov.l		&0x00001000,%fpcr
892	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
893
894	fmov.b		&0x2,%fp0
895	mov.l		&0x7ffe0000,DATA+0x0(%a6)
896	mov.l		&0x80000000,DATA+0x4(%a6)
897	mov.l		&0x00000000,DATA+0x8(%a6)
898
899	mov.w		&0x0000,%cc
900ovfl_0_pc:
901	fmul.x		DATA(%a6),%fp0
902
903	mov.w		%cc,SCCR(%a6)
904	movm.l		&0x7fff,SREGS(%a6)
905	fmovm.x		&0xff,SFPREGS(%a6)
906	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
907
908	mov.l		&0x7fff0000,IFPREGS+0x0(%a6)
909	mov.l		&0x00000000,IFPREGS+0x4(%a6)
910	mov.l		&0x00000000,IFPREGS+0x8(%a6)
911	mov.l		&0x02001048,IFPCREGS+0x4(%a6)
912	lea		ovfl_0_pc(%pc),%a0
913	mov.l		%a0,IFPCREGS+0x8(%a6)
914
915	bsr.l		chkregs
916	tst.b		%d0
917	bne.l		error
918
919	bsr.l		chkfpregs
920	tst.b		%d0
921	bne.l		error
922
923	clr.l		%d0
924	rts
925
926#####################################################################
927
928# This test will take an underflow directly.
929unfl_str:
930	string		"\tEnabled underflow..."
931
932	align		0x4
933unfl_0:
934	addq.l		&0x1,TESTCTR(%a6)
935
936	movm.l		DEF_REGS(%pc),&0x3fff
937	fmovm.x		DEF_FPREGS(%pc),&0xff
938	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
939
940	mov.w		&0x0000,ICCR(%a6)
941	movm.l		&0x7fff,IREGS(%a6)
942	fmovm.x		&0xff,IFPREGS(%a6)
943	fmov.l		&0x00000800,%fpcr
944	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
945
946	mov.l		&0x00000000,DATA+0x0(%a6)
947	mov.l		&0x80000000,DATA+0x4(%a6)
948	mov.l		&0x00000000,DATA+0x8(%a6)
949	fmovm.x		DATA(%a6),&0x80
950
951	mov.w		&0x0000,%cc
952unfl_0_pc:
953	fdiv.b		&0x2,%fp0
954
955	mov.w		%cc,SCCR(%a6)
956	movm.l		&0x7fff,SREGS(%a6)
957	fmovm.x		&0xff,SFPREGS(%a6)
958	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
959
960	mov.l		&0x00000000,IFPREGS+0x0(%a6)
961	mov.l		&0x40000000,IFPREGS+0x4(%a6)
962	mov.l		&0x00000000,IFPREGS+0x8(%a6)
963	mov.l		&0x00000800,IFPCREGS+0x4(%a6)
964	lea		unfl_0_pc(%pc),%a0
965	mov.l		%a0,IFPCREGS+0x8(%a6)
966
967	bsr.l		chkregs
968	tst.b		%d0
969	bne.l		error
970
971	bsr.l		chkfpregs
972	tst.b		%d0
973	bne.l		error
974
975	clr.l		%d0
976	rts
977
978#####################################################################
979
980# This test will take a non-maskable underflow directly.
981unfl_nm_str:
982	string		"\tNon-maskable underflow..."
983
984	align		0x4
985unfl_nm_0:
986	addq.l		&0x1,TESTCTR(%a6)
987
988	movm.l		DEF_REGS(%pc),&0x3fff
989	fmovm.x		DEF_FPREGS(%pc),&0xff
990	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
991
992	mov.w		&0x0000,ICCR(%a6)
993	movm.l		&0x7fff,IREGS(%a6)
994	fmovm.x		&0xff,IFPREGS(%a6)
995	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
996
997	mov.l		&0x00000000,DATA+0x0(%a6)
998	mov.l		&0x80000000,DATA+0x4(%a6)
999	mov.l		&0x00000000,DATA+0x8(%a6)
1000	fmovm.x		DATA(%a6),&0x80
1001
1002	mov.w		&0x0000,%cc
1003unfl_nm_0_pc:
1004	fdiv.b		&0x2,%fp0
1005
1006	mov.w		%cc,SCCR(%a6)
1007	movm.l		&0x7fff,SREGS(%a6)
1008	fmovm.x		&0xff,SFPREGS(%a6)
1009	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1010
1011	mov.l		&0x00000000,IFPREGS+0x0(%a6)
1012	mov.l		&0x40000000,IFPREGS+0x4(%a6)
1013	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1014	mov.l		&0x00000800,IFPCREGS+0x4(%a6)
1015	lea		unfl_nm_0_pc(%pc),%a0
1016	mov.l		%a0,IFPCREGS+0x8(%a6)
1017
1018	bsr.l		chkregs
1019	tst.b		%d0
1020	bne.l		error
1021
1022	bsr.l		chkfpregs
1023	tst.b		%d0
1024	bne.l		error
1025
1026	clr.l		%d0
1027	rts
1028
1029#####################################################################
1030
1031inex_str:
1032	string		"\tEnabled inexact..."
1033
1034	align		0x4
1035inex_0:
1036	addq.l		&0x1,TESTCTR(%a6)
1037
1038	movm.l		DEF_REGS(%pc),&0x3fff
1039	fmovm.x		DEF_FPREGS(%pc),&0xff
1040	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1041
1042	mov.w		&0x0000,ICCR(%a6)
1043	movm.l		&0x7fff,IREGS(%a6)
1044	fmovm.x		&0xff,IFPREGS(%a6)
1045	fmov.l		&0x00000200,%fpcr		# enable inexact
1046	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1047
1048	mov.l		&0x50000000,DATA+0x0(%a6)
1049	mov.l		&0x80000000,DATA+0x4(%a6)
1050	mov.l		&0x00000000,DATA+0x8(%a6)
1051	fmovm.x		DATA(%a6),&0x80
1052
1053	mov.w		&0x0000,%cc
1054inex_0_pc:
1055	fadd.b		&0x2,%fp0
1056
1057	mov.w		%cc,SCCR(%a6)
1058	movm.l		&0x7fff,SREGS(%a6)
1059	fmovm.x		&0xff,SFPREGS(%a6)
1060	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1061
1062	mov.l		&0x50000000,IFPREGS+0x0(%a6)
1063	mov.l		&0x80000000,IFPREGS+0x4(%a6)
1064	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1065	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
1066	lea		inex_0_pc(%pc),%a0
1067	mov.l		%a0,IFPCREGS+0x8(%a6)
1068
1069	bsr.l		chkregs
1070	tst.b		%d0
1071	bne.l		error
1072
1073	bsr.l		chkfpregs
1074	tst.b		%d0
1075	bne.l		error
1076
1077	clr.l		%d0
1078	rts
1079
1080#####################################################################
1081
1082snan_str:
1083	string		"\tEnabled SNAN..."
1084
1085	align		0x4
1086snan_0:
1087	addq.l		&0x1,TESTCTR(%a6)
1088
1089	movm.l		DEF_REGS(%pc),&0x3fff
1090	fmovm.x		DEF_FPREGS(%pc),&0xff
1091	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1092
1093	mov.w		&0x0000,ICCR(%a6)
1094	movm.l		&0x7fff,IREGS(%a6)
1095	fmovm.x		&0xff,IFPREGS(%a6)
1096	fmov.l		&0x00004000,%fpcr		# enable SNAN
1097	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1098
1099	mov.l		&0xffff0000,DATA+0x0(%a6)
1100	mov.l		&0x00000000,DATA+0x4(%a6)
1101	mov.l		&0x00000001,DATA+0x8(%a6)
1102	fmovm.x		DATA(%a6),&0x80
1103
1104	mov.w		&0x0000,%cc
1105snan_0_pc:
1106	fadd.b		&0x2,%fp0
1107
1108	mov.w		%cc,SCCR(%a6)
1109	movm.l		&0x7fff,SREGS(%a6)
1110	fmovm.x		&0xff,SFPREGS(%a6)
1111	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1112
1113	mov.l		&0xffff0000,IFPREGS+0x0(%a6)
1114	mov.l		&0x00000000,IFPREGS+0x4(%a6)
1115	mov.l		&0x00000001,IFPREGS+0x8(%a6)
1116	mov.l		&0x09004080,IFPCREGS+0x4(%a6)
1117	lea		snan_0_pc(%pc),%a0
1118	mov.l		%a0,IFPCREGS+0x8(%a6)
1119
1120	bsr.l		chkregs
1121	tst.b		%d0
1122	bne.l		error
1123
1124	bsr.l		chkfpregs
1125	tst.b		%d0
1126	bne.l		error
1127
1128	clr.l		%d0
1129	rts
1130
1131#####################################################################
1132
1133operr_str:
1134	string		"\tEnabled OPERR..."
1135
1136	align		0x4
1137operr_0:
1138	addq.l		&0x1,TESTCTR(%a6)
1139
1140	movm.l		DEF_REGS(%pc),&0x3fff
1141	fmovm.x		DEF_FPREGS(%pc),&0xff
1142	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1143
1144	mov.w		&0x0000,ICCR(%a6)
1145	movm.l		&0x7fff,IREGS(%a6)
1146	fmovm.x		&0xff,IFPREGS(%a6)
1147	fmov.l		&0x00002000,%fpcr		# enable OPERR
1148	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1149
1150	mov.l		&0xffff0000,DATA+0x0(%a6)
1151	mov.l		&0x00000000,DATA+0x4(%a6)
1152	mov.l		&0x00000000,DATA+0x8(%a6)
1153	fmovm.x		DATA(%a6),&0x80
1154
1155	mov.w		&0x0000,%cc
1156operr_0_pc:
1157	fadd.s		&0x7f800000,%fp0
1158
1159	mov.w		%cc,SCCR(%a6)
1160	movm.l		&0x7fff,SREGS(%a6)
1161	fmovm.x		&0xff,SFPREGS(%a6)
1162	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1163
1164	mov.l		&0xffff0000,IFPREGS+0x0(%a6)
1165	mov.l		&0x00000000,IFPREGS+0x4(%a6)
1166	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1167	mov.l		&0x01002080,IFPCREGS+0x4(%a6)
1168	lea		operr_0_pc(%pc),%a0
1169	mov.l		%a0,IFPCREGS+0x8(%a6)
1170
1171	bsr.l		chkregs
1172	tst.b		%d0
1173	bne.l		error
1174
1175	bsr.l		chkfpregs
1176	tst.b		%d0
1177	bne.l		error
1178
1179	clr.l		%d0
1180	rts
1181
1182#####################################################################
1183
1184dz_str:
1185	string		"\tEnabled DZ..."
1186
1187	align		0x4
1188dz_0:
1189	addq.l		&0x1,TESTCTR(%a6)
1190
1191	movm.l		DEF_REGS(%pc),&0x3fff
1192	fmovm.x		DEF_FPREGS(%pc),&0xff
1193	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1194
1195	mov.w		&0x0000,ICCR(%a6)
1196	movm.l		&0x7fff,IREGS(%a6)
1197	fmovm.x		&0xff,IFPREGS(%a6)
1198	fmov.l		&0x00000400,%fpcr		# enable DZ
1199	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1200
1201	mov.l		&0x40000000,DATA+0x0(%a6)
1202	mov.l		&0x80000000,DATA+0x4(%a6)
1203	mov.l		&0x00000000,DATA+0x8(%a6)
1204	fmovm.x		DATA(%a6),&0x80
1205
1206	mov.w		&0x0000,%cc
1207dz_0_pc:
1208	fdiv.b		&0x0,%fp0
1209
1210	mov.w		%cc,SCCR(%a6)
1211	movm.l		&0x7fff,SREGS(%a6)
1212	fmovm.x		&0xff,SFPREGS(%a6)
1213	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1214
1215	mov.l		&0x40000000,IFPREGS+0x0(%a6)
1216	mov.l		&0x80000000,IFPREGS+0x4(%a6)
1217	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1218	mov.l		&0x02000410,IFPCREGS+0x4(%a6)
1219	lea		dz_0_pc(%pc),%a0
1220	mov.l		%a0,IFPCREGS+0x8(%a6)
1221
1222	bsr.l		chkregs
1223	tst.b		%d0
1224	bne.l		error
1225
1226	bsr.l		chkfpregs
1227	tst.b		%d0
1228	bne.l		error
1229
1230	clr.l		%d0
1231	rts
1232
1233#####################################################################
1234
1235unsupp_str:
1236	string		"\tUnimplemented data type/format..."
1237
1238# an unnormalized number
1239	align		0x4
1240unsupp_0:
1241	addq.l		&0x1,TESTCTR(%a6)
1242
1243	movm.l		DEF_REGS(%pc),&0x3fff
1244	fmovm.x		DEF_FPREGS(%pc),&0xff
1245	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1246
1247	mov.w		&0x0000,ICCR(%a6)
1248	movm.l		&0x7fff,IREGS(%a6)
1249	fmovm.x		&0xff,IFPREGS(%a6)
1250	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1251
1252	mov.l		&0xc03f0000,DATA+0x0(%a6)
1253	mov.l		&0x00000000,DATA+0x4(%a6)
1254	mov.l		&0x00000001,DATA+0x8(%a6)
1255	fmov.b		&0x2,%fp0
1256	mov.w		&0x0000,%cc
1257unsupp_0_pc:
1258	fmul.x		DATA(%a6),%fp0
1259
1260	mov.w		%cc,SCCR(%a6)
1261	movm.l		&0x7fff,SREGS(%a6)
1262	fmovm.x		&0xff,SFPREGS(%a6)
1263	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1264
1265	mov.l		&0xc0010000,IFPREGS+0x0(%a6)
1266	mov.l		&0x80000000,IFPREGS+0x4(%a6)
1267	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1268	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
1269	lea		unsupp_0_pc(%pc),%a0
1270	mov.l		%a0,IFPCREGS+0x8(%a6)
1271
1272	bsr.l		chkregs
1273	tst.b		%d0
1274	bne.l		error
1275
1276	bsr.l		chkfpregs
1277	tst.b		%d0
1278	bne.l		error
1279
1280# a denormalized number
1281unsupp_1:
1282	addq.l		&0x1,TESTCTR(%a6)
1283
1284	movm.l		DEF_REGS(%pc),&0x3fff
1285	fmovm.x		DEF_FPREGS(%pc),&0xff
1286	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1287
1288	mov.w		&0x0000,ICCR(%a6)
1289	movm.l		&0x7fff,IREGS(%a6)
1290	fmovm.x		&0xff,IFPREGS(%a6)
1291	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1292
1293	mov.l		&0x80000000,DATA+0x0(%a6)
1294	mov.l		&0x01000000,DATA+0x4(%a6)
1295	mov.l		&0x00000000,DATA+0x8(%a6)
1296	fmov.l		&0x7fffffff,%fp0
1297
1298	mov.w		&0x0000,%cc
1299unsupp_1_pc:
1300	fmul.x		DATA(%a6),%fp0
1301
1302	mov.w		%cc,SCCR(%a6)
1303	movm.l		&0x7fff,SREGS(%a6)
1304	fmovm.x		&0xff,SFPREGS(%a6)
1305	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1306
1307	mov.l		&0x80170000,IFPREGS+0x0(%a6)
1308	mov.l		&0xfffffffe,IFPREGS+0x4(%a6)
1309	mov.l		&0x00000000,IFPREGS+0x8(%a6)
1310	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
1311	lea		unsupp_1_pc(%pc),%a0
1312	mov.l		%a0,IFPCREGS+0x8(%a6)
1313
1314	bsr.l		chkregs
1315	tst.b		%d0
1316	bne.l		error
1317
1318	bsr.l		chkfpregs
1319	tst.b		%d0
1320	bne.l		error
1321
1322# packed
1323unsupp_2:
1324	addq.l		&0x1,TESTCTR(%a6)
1325
1326	movm.l		DEF_REGS(%pc),&0x3fff
1327	fmovm.x		DEF_FPREGS(%pc),&0xff
1328	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1329
1330	mov.w		&0x0000,ICCR(%a6)
1331	movm.l		&0x7fff,IREGS(%a6)
1332	fmovm.x		&0xff,IFPREGS(%a6)
1333	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1334
1335	mov.l		&0xc1230001,DATA+0x0(%a6)
1336	mov.l		&0x23456789,DATA+0x4(%a6)
1337	mov.l		&0x12345678,DATA+0x8(%a6)
1338
1339	mov.w		&0x0000,%cc
1340unsupp_2_pc:
1341	fabs.p		DATA(%a6),%fp0
1342
1343	mov.w		%cc,SCCR(%a6)
1344	movm.l		&0x7fff,SREGS(%a6)
1345	fmovm.x		&0xff,SFPREGS(%a6)
1346	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1347
1348	mov.l		&0x3e660000,IFPREGS+0x0(%a6)
1349	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6)
1350	mov.l		&0xd14035bc,IFPREGS+0x8(%a6)
1351	mov.l		&0x00000108,IFPCREGS+0x4(%a6)
1352	lea		unsupp_2_pc(%pc),%a0
1353	mov.l		%a0,IFPCREGS+0x8(%a6)
1354
1355	bsr.l		chkregs
1356	tst.b		%d0
1357	bne.l		error
1358
1359	bsr.l		chkfpregs
1360	tst.b		%d0
1361	bne.l		error
1362
1363	clr.l		%d0
1364	rts
1365
1366###########################################################
1367###########################################################
1368
1369chkregs:
1370	lea		IREGS(%a6),%a0
1371	lea		SREGS(%a6),%a1
1372	mov.l		&14,%d0
1373chkregs_loop:
1374	cmp.l		(%a0)+,(%a1)+
1375	bne.l		chkregs_error
1376	dbra.w		%d0,chkregs_loop
1377
1378	mov.w		ICCR(%a6),%d0
1379	mov.w		SCCR(%a6),%d1
1380	cmp.w		%d0,%d1
1381	bne.l		chkregs_error
1382
1383	clr.l		%d0
1384	rts
1385
1386chkregs_error:
1387	movq.l		&0x1,%d0
1388	rts
1389
1390error:
1391	mov.l		TESTCTR(%a6),%d1
1392	movq.l		&0x1,%d0
1393	rts
1394
1395chkfpregs:
1396	lea		IFPREGS(%a6),%a0
1397	lea		SFPREGS(%a6),%a1
1398	mov.l		&23,%d0
1399chkfpregs_loop:
1400	cmp.l		(%a0)+,(%a1)+
1401	bne.l		chkfpregs_error
1402	dbra.w		%d0,chkfpregs_loop
1403
1404	lea		IFPCREGS(%a6),%a0
1405	lea		SFPCREGS(%a6),%a1
1406	cmp.l		(%a0)+,(%a1)+
1407	bne.l		chkfpregs_error
1408	cmp.l		(%a0)+,(%a1)+
1409	bne.l		chkfpregs_error
1410	cmp.l		(%a0)+,(%a1)+
1411	bne.l		chkfpregs_error
1412
1413	clr.l		%d0
1414	rts
1415
1416chkfpregs_error:
1417	movq.l		&0x1,%d0
1418	rts
1419
1420DEF_REGS:
1421	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1422	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1423
1424	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1425	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1426
1427DEF_FPREGS:
1428	long		0x7fff0000, 0xffffffff, 0xffffffff
1429	long		0x7fff0000, 0xffffffff, 0xffffffff
1430	long		0x7fff0000, 0xffffffff, 0xffffffff
1431	long		0x7fff0000, 0xffffffff, 0xffffffff
1432	long		0x7fff0000, 0xffffffff, 0xffffffff
1433	long		0x7fff0000, 0xffffffff, 0xffffffff
1434	long		0x7fff0000, 0xffffffff, 0xffffffff
1435	long		0x7fff0000, 0xffffffff, 0xffffffff
1436
1437DEF_FPCREGS:
1438	long		0x00000000, 0x00000000, 0x00000000
1439
1440############################################################
1441
1442_print_str:
1443	mov.l		%d0,-(%sp)
1444	mov.l		(TESTTOP-0x80+0x0,%pc),%d0
1445	pea		(TESTTOP-0x80,%pc,%d0)
1446	mov.l		0x4(%sp),%d0
1447	rtd		&0x4
1448
1449_print_num:
1450	mov.l		%d0,-(%sp)
1451	mov.l		(TESTTOP-0x80+0x4,%pc),%d0
1452	pea		(TESTTOP-0x80,%pc,%d0)
1453	mov.l		0x4(%sp),%d0
1454	rtd		&0x4
1455
1456############################################################
1457