1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
3 M68000 Hi-Performance Microprocessor Division
4 M68060 Software Package
5 Production Release P1.00 -- October 10, 1994
6 
7 M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
8 
9 THE SOFTWARE is provided on an "AS IS" basis and without warranty.
10 To the maximum extent permitted by applicable law,
11 MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
12 INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
13 and any warranty against infringement with regard to the SOFTWARE
14 (INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
15 
16 To the maximum extent permitted by applicable law,
17 IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
18 (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
19 BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
20 ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
21 Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.
22 
23 You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
24 so long as this entire notice is retained without alteration in any modified and/or
25 redistributed versions, and that such modified versions are clearly identified as such.
26 No licenses are granted by implication, estoppel or otherwise under any patents
27 or trademarks of Motorola, Inc.
28 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29 #############################################
30 set	SREGS,		-64
31 set	IREGS,		-128
32 set	IFPREGS,	-224
33 set	SFPREGS,	-320
34 set	IFPCREGS,	-332
35 set	SFPCREGS,	-344
36 set	ICCR,		-346
37 set	SCCR,		-348
38 set	TESTCTR,	-352
39 set	DATA,		-384
40 
41 #############################################
42 TESTTOP:
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 
52 start_str:
53 	string		"Testing 68060 FPSP started:\n"
54 
55 start_str_unimp:
56 	string		"Testing 68060 FPSP unimplemented instruction started:\n"
57 
58 start_str_enable:
59 	string		"Testing 68060 FPSP exception enabled started:\n"
60 
61 pass_str:
62 	string		"passed\n"
63 
64 fail_str:
65 	string		" failed\n"
66 
67 	align		0x4
68 chk_test:
69 	tst.l		%d0
70 	bne.b		test_fail
71 test_pass:
72 	pea		pass_str(%pc)
73 	bsr.l		_print_str
74 	addq.l		&0x4,%sp
75 	rts
76 test_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 
232 unimp_str:
233 	string		"\tUnimplemented FP instructions..."
234 
235 	align		0x4
236 unimp_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
253 unimp_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 
276 unimp_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
293 unimp_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
317 unimp_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
330 unimp_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
354 unimp_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
370 unimp_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
390 unimp_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
406 unimp_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
427 unimp_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
442 unimp_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 
466 effadd_str:
467 	string		"\tUnimplemented <ea>..."
468 
469 	align		0x4
470 effadd_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
485 effadd_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 
508 effadd_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
521 effadd_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 
544 fmovml_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 
574 fmovml_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 
604 fmovml_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 
634 fmovml_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
666 fmovmx_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 
720 fmovmx_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 
776 fmovmx_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.
826 ovfl_nm_str:
827 	string		"\tNon-maskable overflow..."
828 
829 	align		0x4
830 ovfl_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
848 ovfl_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.
877 ovfl_str:
878 	string		"\tEnabled overflow..."
879 
880 	align		0x4
881 ovfl_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
900 ovfl_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.
929 unfl_str:
930 	string		"\tEnabled underflow..."
931 
932 	align		0x4
933 unfl_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
952 unfl_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.
981 unfl_nm_str:
982 	string		"\tNon-maskable underflow..."
983 
984 	align		0x4
985 unfl_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
1003 unfl_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 
1031 inex_str:
1032 	string		"\tEnabled inexact..."
1033 
1034 	align		0x4
1035 inex_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
1054 inex_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 
1082 snan_str:
1083 	string		"\tEnabled SNAN..."
1084 
1085 	align		0x4
1086 snan_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
1105 snan_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 
1133 operr_str:
1134 	string		"\tEnabled OPERR..."
1135 
1136 	align		0x4
1137 operr_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
1156 operr_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 
1184 dz_str:
1185 	string		"\tEnabled DZ..."
1186 
1187 	align		0x4
1188 dz_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
1207 dz_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 
1235 unsupp_str:
1236 	string		"\tUnimplemented data type/format..."
1237 
1238 # an unnormalized number
1239 	align		0x4
1240 unsupp_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
1257 unsupp_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
1281 unsupp_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
1299 unsupp_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
1323 unsupp_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
1340 unsupp_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 
1369 chkregs:
1370 	lea		IREGS(%a6),%a0
1371 	lea		SREGS(%a6),%a1
1372 	mov.l		&14,%d0
1373 chkregs_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 
1386 chkregs_error:
1387 	movq.l		&0x1,%d0
1388 	rts
1389 
1390 error:
1391 	mov.l		TESTCTR(%a6),%d1
1392 	movq.l		&0x1,%d0
1393 	rts
1394 
1395 chkfpregs:
1396 	lea		IFPREGS(%a6),%a0
1397 	lea		SFPREGS(%a6),%a1
1398 	mov.l		&23,%d0
1399 chkfpregs_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 
1416 chkfpregs_error:
1417 	movq.l		&0x1,%d0
1418 	rts
1419 
1420 DEF_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 
1427 DEF_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 
1437 DEF_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