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