blob: 1f947915d81e1d945a6aa36014e45c7b9e707376 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
3M68000 Hi-Performance Microprocessor Division
4M68060 Software Package
5Production Release P1.00 -- October 10, 1994
6
Jan Engelhardt96de0e22007-10-19 23:21:04 +02007M68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved.
Linus Torvalds1da177e2005-04-16 15:20:36 -07008
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############################################################