neighbor state switching
[cor_2_6_31.git] / arch / m68k / ifpsp060 / src / ftest.S
blob1f947915d81e1d945a6aa36014e45c7b9e707376
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
7 M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
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.
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.
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
41 #############################################
42 TESTTOP:
43         bra.l           _060TESTS_
44         short           0x0000
46         bra.l           _060TESTS_unimp
47         short           0x0000
49         bra.l           _060TESTS_enable
50         short           0x0000
52 start_str:
53         string          "Testing 68060 FPSP started:\n"
55 start_str_unimp:
56         string          "Testing 68060 FPSP unimplemented instruction started:\n"
58 start_str_enable:
59         string          "Testing 68060 FPSP exception enabled started:\n"
61 pass_str:
62         string          "passed\n"
64 fail_str:
65         string          " failed\n"
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
81         pea             fail_str(%pc)
82         bsr.l           _print_str
83         addq.l          &0x4,%sp
84         rts
86 #############################################
87 _060TESTS_:
88         link            %a6,&-384
90         movm.l          &0x3f3c,-(%sp)
91         fmovm.x         &0xff,-(%sp)
93         pea             start_str(%pc)
94         bsr.l           _print_str
95         addq.l          &0x4,%sp
97 ### effadd
98         clr.l           TESTCTR(%a6)
99         pea             effadd_str(%pc)
100         bsr.l           _print_str
101         addq.l          &0x4,%sp
103         bsr.l           effadd_0
105         bsr.l           chk_test
107 ### unsupp
108         clr.l           TESTCTR(%a6)
109         pea             unsupp_str(%pc)
110         bsr.l           _print_str
111         addq.l          &0x4,%sp
113         bsr.l           unsupp_0
115         bsr.l           chk_test
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
123         bsr.l           chk_test
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
131         bsr.l           chk_test
133         movm.l          (%sp)+,&0x3cfc
134         fmovm.x         (%sp)+,&0xff
136         unlk            %a6
137         rts
139 _060TESTS_unimp:
140         link            %a6,&-384
142         movm.l          &0x3f3c,-(%sp)
143         fmovm.x         &0xff,-(%sp)
145         pea             start_str_unimp(%pc)
146         bsr.l           _print_str
147         addq.l          &0x4,%sp
149 ### unimp
150         clr.l           TESTCTR(%a6)
151         pea             unimp_str(%pc)
152         bsr.l           _print_str
153         addq.l          &0x4,%sp
155         bsr.l           unimp_0
157         bsr.l           chk_test
159         movm.l          (%sp)+,&0x3cfc
160         fmovm.x         (%sp)+,&0xff
162         unlk            %a6
163         rts
165 _060TESTS_enable:
166         link            %a6,&-384
168         movm.l          &0x3f3c,-(%sp)
169         fmovm.x         &0xff,-(%sp)
171         pea             start_str_enable(%pc)
172         bsr.l           _print_str
173         addq.l          &0x4,%sp
175 ### snan
176         clr.l           TESTCTR(%a6)
177         pea             snan_str(%pc)
178         bsr.l           _print_str
179         bsr.l           snan_0
181         bsr.l           chk_test
183 ### operr
184         clr.l           TESTCTR(%a6)
185         pea             operr_str(%pc)
186         bsr.l           _print_str
187         bsr.l           operr_0
189         bsr.l           chk_test
191 ### ovfl
192         clr.l           TESTCTR(%a6)
193         pea             ovfl_str(%pc)
194         bsr.l           _print_str
195         bsr.l           ovfl_0
197         bsr.l           chk_test
199 ### unfl
200         clr.l           TESTCTR(%a6)
201         pea             unfl_str(%pc)
202         bsr.l           _print_str
203         bsr.l           unfl_0
205         bsr.l           chk_test
207 ### dz
208         clr.l           TESTCTR(%a6)
209         pea             dz_str(%pc)
210         bsr.l           _print_str
211         bsr.l           dz_0
213         bsr.l           chk_test
215 ### inexact
216         clr.l           TESTCTR(%a6)
217         pea             inex_str(%pc)
218         bsr.l           _print_str
219         bsr.l           inex_0
221         bsr.l           chk_test
223         movm.l          (%sp)+,&0x3cfc
224         fmovm.x         (%sp)+,&0xff
226         unlk            %a6
227         rts
229 #############################################
230 #############################################
232 unimp_str:
233         string          "\tUnimplemented FP instructions..."
235         align           0x4
236 unimp_0:
237         addq.l          &0x1,TESTCTR(%a6)
239         movm.l          DEF_REGS(%pc),&0x3fff
240         fmovm.x         DEF_FPREGS(%pc),&0xff
241         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
248         mov.l           &0x40000000,DATA+0x0(%a6)
249         mov.l           &0xc90fdaa2,DATA+0x4(%a6)
250         mov.l           &0x2168c235,DATA+0x8(%a6)
252         mov.w           &0x0000,%cc
253 unimp_0_pc:
254         fsin.x          DATA(%a6),%fp0
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)
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)
268         bsr.l           chkregs
269         tst.b           %d0
270         bne.l           error
272         bsr.l           chkfpregs
273         tst.b           %d0
274         bne.l           error
276 unimp_1:
277         addq.l          &0x1,TESTCTR(%a6)
279         movm.l          DEF_REGS(%pc),&0x3fff
280         fmovm.x         DEF_FPREGS(%pc),&0xff
281         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
288         mov.l           &0x3ffe0000,DATA+0x0(%a6)
289         mov.l           &0xc90fdaa2,DATA+0x4(%a6)
290         mov.l           &0x2168c235,DATA+0x8(%a6)
292         mov.w           &0x0000,%cc
293 unimp_1_pc:
294         ftan.x          DATA(%a6),%fp0
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)
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)
308         bsr.l           chkregs
309         tst.b           %d0
310         bne.l           error
312         bsr.l           chkfpregs
313         tst.b           %d0
314         bne.l           error
316 # fmovecr
317 unimp_2:
318         addq.l          &0x1,TESTCTR(%a6)
320         movm.l          DEF_REGS(%pc),&0x3fff
321         fmovm.x         DEF_FPREGS(%pc),&0xff
322         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
329         mov.w           &0x0000,%cc
330 unimp_2_pc:
331         fmovcr.x        &0x31,%fp0
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)
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)
345         bsr.l           chkregs
346         tst.b           %d0
347         bne.l           error
349         bsr.l           chkfpregs
350         tst.b           %d0
351         bne.l           error
353 # fscc
354 unimp_3:
355         addq.l          &0x1,TESTCTR(%a6)
357         movm.l          DEF_REGS(%pc),&0x3fff
358         fmovm.x         DEF_FPREGS(%pc),&0xff
359         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
361         fmov.l          &0x0f000000,%fpsr
362         mov.l           &0x00,%d7
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)
369         mov.w           &0x0000,%cc
370 unimp_3_pc:
371         fsgt            %d7
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)
381         bsr.l           chkregs
382         tst.b           %d0
383         bne.l           error
385         bsr.l           chkfpregs
386         tst.b           %d0
387         bne.l           error
389 # fdbcc
390 unimp_4:
391         addq.l          &0x1,TESTCTR(%a6)
393         movm.l          DEF_REGS(%pc),&0x3fff
394         fmovm.x         DEF_FPREGS(%pc),&0xff
395         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
397         fmov.l          &0x0f000000,%fpsr
398         mov.l           &0x2,%d7
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)
405         mov.w           &0x0000,%cc
406 unimp_4_pc:
407         fdbgt.w         %d7,unimp_4_pc
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)
418         bsr.l           chkregs
419         tst.b           %d0
420         bne.l           error
422         bsr.l           chkfpregs
423         tst.b           %d0
424         bne.l           error
426 # ftrapcc
427 unimp_5:
428         addq.l          &0x1,TESTCTR(%a6)
430         movm.l          DEF_REGS(%pc),&0x3fff
431         fmovm.x         DEF_FPREGS(%pc),&0xff
432         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
434         fmov.l          &0x0f000000,%fpsr
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)
441         mov.w           &0x0000,%cc
442 unimp_5_pc:
443         ftpgt.l         &0xabcdef01
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)
453         bsr.l           chkregs
454         tst.b           %d0
455         bne.l           error
457         bsr.l           chkfpregs
458         tst.b           %d0
459         bne.l           error
461         clr.l           %d0
462         rts
464 #############################################
466 effadd_str:
467         string          "\tUnimplemented <ea>..."
469         align           0x4
470 effadd_0:
471         addq.l          &0x1,TESTCTR(%a6)
473         movm.l          DEF_REGS(%pc),&0x3fff
474         fmovm.x         DEF_FPREGS(%pc),&0xff
475         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
482         fmov.b          &0x2,%fp0
484         mov.w           &0x0000,%cc
485 effadd_0_pc:
486         fmul.x          &0xc00000008000000000000000,%fp0
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)
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)
500         bsr.l           chkregs
501         tst.b           %d0
502         bne.l           error
504         bsr.l           chkfpregs
505         tst.b           %d0
506         bne.l           error
508 effadd_1:
509         addq.l          &0x1,TESTCTR(%a6)
511         movm.l          DEF_REGS(%pc),&0x3fff
512         fmovm.x         DEF_FPREGS(%pc),&0xff
513         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
520         mov.w           &0x0000,%cc
521 effadd_1_pc:
522         fabs.p          &0xc12300012345678912345678,%fp0
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)
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)
536         bsr.l           chkregs
537         tst.b           %d0
538         bne.l           error
540         bsr.l           chkfpregs
541         tst.b           %d0
542         bne.l           error
544 fmovml_0:
545         addq.l          &0x1,TESTCTR(%a6)
547         movm.l          DEF_REGS(%pc),&0x3fff
548         fmovm.x         DEF_FPREGS(%pc),&0xff
549         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
557         fmovm.l         &0xffffffffffffffff,%fpcr,%fpsr
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)
566         bsr.l           chkregs
567         tst.b           %d0
568         bne.l           error
570         bsr.l           chkfpregs
571         tst.b           %d0
572         bne.l           error
574 fmovml_1:
575         addq.l          &0x1,TESTCTR(%a6)
577         movm.l          DEF_REGS(%pc),&0x3fff
578         fmovm.x         DEF_FPREGS(%pc),&0xff
579         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
587         fmovm.l         &0xffffffffffffffff,%fpcr,%fpiar
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)
596         bsr.l           chkregs
597         tst.b           %d0
598         bne.l           error
600         bsr.l           chkfpregs
601         tst.b           %d0
602         bne.l           error
604 fmovml_2:
605         addq.l          &0x1,TESTCTR(%a6)
607         movm.l          DEF_REGS(%pc),&0x3fff
608         fmovm.x         DEF_FPREGS(%pc),&0xff
609         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
617         fmovm.l         &0xffffffffffffffff,%fpsr,%fpiar
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)
626         bsr.l           chkregs
627         tst.b           %d0
628         bne.l           error
630         bsr.l           chkfpregs
631         tst.b           %d0
632         bne.l           error
634 fmovml_3:
635         addq.l          &0x1,TESTCTR(%a6)
637         movm.l          DEF_REGS(%pc),&0x3fff
638         fmovm.x         DEF_FPREGS(%pc),&0xff
639         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
647         fmovm.l         &0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar
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)
657         bsr.l           chkregs
658         tst.b           %d0
659         bne.l           error
661         bsr.l           chkfpregs
662         tst.b           %d0
663         bne.l           error
665 # fmovmx dynamic
666 fmovmx_0:
667         addq.l          &0x1,TESTCTR(%a6)
669         movm.l          DEF_REGS(%pc),&0x3fff
670         fmovm.x         DEF_FPREGS(%pc),&0xff
671         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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
682         fmov.l          &0x0,%fpiar
683         mov.l           &0xffffffaa,%d0
685         mov.w           &0x0000,ICCR(%a6)
686         movm.l          &0xffff,IREGS(%a6)
688         fmovm.l         %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
689         fmovm.x         &0xff,IFPREGS(%a6)
691         mov.w           &0x0000,%cc
693         fmovm.x         %d0,-(%sp)
695         mov.w           %cc,SCCR(%a6)
697         fmovm.l         %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
699         fmov.s          &0x7f800000,%fp1
700         fmov.s          &0x7f800000,%fp3
701         fmov.s          &0x7f800000,%fp5
702         fmov.s          &0x7f800000,%fp7
704         fmov.x          (%sp)+,%fp1
705         fmov.x          (%sp)+,%fp3
706         fmov.x          (%sp)+,%fp5
707         fmov.x          (%sp)+,%fp7
709         movm.l          &0xffff,SREGS(%a6)
710         fmovm.x         &0xff,SFPREGS(%a6)
712         bsr.l           chkregs
713         tst.b           %d0
714         bne.l           error
716         bsr.l           chkfpregs
717         tst.b           %d0
718         bne.l           error
720 fmovmx_1:
721         addq.l          &0x1,TESTCTR(%a6)
723         movm.l          DEF_REGS(%pc),&0x3fff
724         fmovm.x         DEF_FPREGS(%pc),&0xff
725         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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
736         fmov.x          %fp6,-(%sp)
737         fmov.x          %fp4,-(%sp)
738         fmov.x          %fp2,-(%sp)
739         fmov.x          %fp0,-(%sp)
741         fmovm.x         &0xff,IFPREGS(%a6)
743         fmov.s          &0x7f800000,%fp6
744         fmov.s          &0x7f800000,%fp4
745         fmov.s          &0x7f800000,%fp2
746         fmov.s          &0x7f800000,%fp0
748         fmov.l          &0x0,%fpiar
749         fmov.l          &0x0,%fpsr
750         mov.l           &0xffffffaa,%d0
752         mov.w           &0x0000,ICCR(%a6)
753         movm.l          &0xffff,IREGS(%a6)
755         fmovm.l         %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
757         mov.w           &0x0000,%cc
759         fmovm.x         (%sp)+,%d0
761         mov.w           %cc,SCCR(%a6)
763         fmovm.l         %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
765         movm.l          &0xffff,SREGS(%a6)
766         fmovm.x         &0xff,SFPREGS(%a6)
768         bsr.l           chkregs
769         tst.b           %d0
770         bne.l           error
772         bsr.l           chkfpregs
773         tst.b           %d0
774         bne.l           error
776 fmovmx_2:
777         addq.l          &0x1,TESTCTR(%a6)
779         movm.l          DEF_REGS(%pc),&0x3fff
780         fmovm.x         DEF_FPREGS(%pc),&0xff
781         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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
792         fmov.l          &0x0,%fpiar
793         mov.l           &0xffffff00,%d0
795         mov.w           &0x0000,ICCR(%a6)
796         movm.l          &0xffff,IREGS(%a6)
798         fmovm.l         %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
799         fmovm.x         &0xff,IFPREGS(%a6)
801         mov.w           &0x0000,%cc
803         fmovm.x         %d0,-(%sp)
805         mov.w           %cc,SCCR(%a6)
807         fmovm.l         %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
809         movm.l          &0xffff,SREGS(%a6)
810         fmovm.x         &0xff,SFPREGS(%a6)
812         bsr.l           chkregs
813         tst.b           %d0
814         bne.l           error
816         bsr.l           chkfpregs
817         tst.b           %d0
818         bne.l           error
820         clr.l           %d0
821         rts
823 ###########################################################
825 # This test will take a non-maskable overflow directly.
826 ovfl_nm_str:
827         string          "\tNon-maskable overflow..."
829         align           0x4
830 ovfl_nm_0:
831         addq.l          &0x1,TESTCTR(%a6)
833         movm.l          DEF_REGS(%pc),&0x3fff
834         fmovm.x         DEF_FPREGS(%pc),&0xff
835         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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)
847         mov.w           &0x0000,%cc
848 ovfl_nm_0_pc:
849         fmul.x          DATA(%a6),%fp0
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)
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)
863         bsr.l           chkregs
864         tst.b           %d0
865         bne.l           error
867         bsr.l           chkfpregs
868         tst.b           %d0
869         bne.l           error
871         clr.l           %d0
872         rts
874 ###########################################################
876 # This test will take an overflow directly.
877 ovfl_str:
878         string          "\tEnabled overflow..."
880         align           0x4
881 ovfl_0:
882         addq.l          &0x1,TESTCTR(%a6)
884         movm.l          DEF_REGS(%pc),&0x3fff
885         fmovm.x         DEF_FPREGS(%pc),&0xff
886         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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)
899         mov.w           &0x0000,%cc
900 ovfl_0_pc:
901         fmul.x          DATA(%a6),%fp0
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)
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)
915         bsr.l           chkregs
916         tst.b           %d0
917         bne.l           error
919         bsr.l           chkfpregs
920         tst.b           %d0
921         bne.l           error
923         clr.l           %d0
924         rts
926 #####################################################################
928 # This test will take an underflow directly.
929 unfl_str:
930         string          "\tEnabled underflow..."
932         align           0x4
933 unfl_0:
934         addq.l          &0x1,TESTCTR(%a6)
936         movm.l          DEF_REGS(%pc),&0x3fff
937         fmovm.x         DEF_FPREGS(%pc),&0xff
938         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
951         mov.w           &0x0000,%cc
952 unfl_0_pc:
953         fdiv.b          &0x2,%fp0
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)
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)
967         bsr.l           chkregs
968         tst.b           %d0
969         bne.l           error
971         bsr.l           chkfpregs
972         tst.b           %d0
973         bne.l           error
975         clr.l           %d0
976         rts
978 #####################################################################
980 # This test will take a non-maskable underflow directly.
981 unfl_nm_str:
982         string          "\tNon-maskable underflow..."
984         align           0x4
985 unfl_nm_0:
986         addq.l          &0x1,TESTCTR(%a6)
988         movm.l          DEF_REGS(%pc),&0x3fff
989         fmovm.x         DEF_FPREGS(%pc),&0xff
990         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1002         mov.w           &0x0000,%cc
1003 unfl_nm_0_pc:
1004         fdiv.b          &0x2,%fp0
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)
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)
1018         bsr.l           chkregs
1019         tst.b           %d0
1020         bne.l           error
1022         bsr.l           chkfpregs
1023         tst.b           %d0
1024         bne.l           error
1026         clr.l           %d0
1027         rts
1029 #####################################################################
1031 inex_str:
1032         string          "\tEnabled inexact..."
1034         align           0x4
1035 inex_0:
1036         addq.l          &0x1,TESTCTR(%a6)
1038         movm.l          DEF_REGS(%pc),&0x3fff
1039         fmovm.x         DEF_FPREGS(%pc),&0xff
1040         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1053         mov.w           &0x0000,%cc
1054 inex_0_pc:
1055         fadd.b          &0x2,%fp0
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)
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)
1069         bsr.l           chkregs
1070         tst.b           %d0
1071         bne.l           error
1073         bsr.l           chkfpregs
1074         tst.b           %d0
1075         bne.l           error
1077         clr.l           %d0
1078         rts
1080 #####################################################################
1082 snan_str:
1083         string          "\tEnabled SNAN..."
1085         align           0x4
1086 snan_0:
1087         addq.l          &0x1,TESTCTR(%a6)
1089         movm.l          DEF_REGS(%pc),&0x3fff
1090         fmovm.x         DEF_FPREGS(%pc),&0xff
1091         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1104         mov.w           &0x0000,%cc
1105 snan_0_pc:
1106         fadd.b          &0x2,%fp0
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)
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)
1120         bsr.l           chkregs
1121         tst.b           %d0
1122         bne.l           error
1124         bsr.l           chkfpregs
1125         tst.b           %d0
1126         bne.l           error
1128         clr.l           %d0
1129         rts
1131 #####################################################################
1133 operr_str:
1134         string          "\tEnabled OPERR..."
1136         align           0x4
1137 operr_0:
1138         addq.l          &0x1,TESTCTR(%a6)
1140         movm.l          DEF_REGS(%pc),&0x3fff
1141         fmovm.x         DEF_FPREGS(%pc),&0xff
1142         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1155         mov.w           &0x0000,%cc
1156 operr_0_pc:
1157         fadd.s          &0x7f800000,%fp0
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)
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)
1171         bsr.l           chkregs
1172         tst.b           %d0
1173         bne.l           error
1175         bsr.l           chkfpregs
1176         tst.b           %d0
1177         bne.l           error
1179         clr.l           %d0
1180         rts
1182 #####################################################################
1184 dz_str:
1185         string          "\tEnabled DZ..."
1187         align           0x4
1188 dz_0:
1189         addq.l          &0x1,TESTCTR(%a6)
1191         movm.l          DEF_REGS(%pc),&0x3fff
1192         fmovm.x         DEF_FPREGS(%pc),&0xff
1193         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1206         mov.w           &0x0000,%cc
1207 dz_0_pc:
1208         fdiv.b          &0x0,%fp0
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)
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)
1222         bsr.l           chkregs
1223         tst.b           %d0
1224         bne.l           error
1226         bsr.l           chkfpregs
1227         tst.b           %d0
1228         bne.l           error
1230         clr.l           %d0
1231         rts
1233 #####################################################################
1235 unsupp_str:
1236         string          "\tUnimplemented data type/format..."
1238 # an unnormalized number
1239         align           0x4
1240 unsupp_0:
1241         addq.l          &0x1,TESTCTR(%a6)
1243         movm.l          DEF_REGS(%pc),&0x3fff
1244         fmovm.x         DEF_FPREGS(%pc),&0xff
1245         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
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)
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)
1272         bsr.l           chkregs
1273         tst.b           %d0
1274         bne.l           error
1276         bsr.l           chkfpregs
1277         tst.b           %d0
1278         bne.l           error
1280 # a denormalized number
1281 unsupp_1:
1282         addq.l          &0x1,TESTCTR(%a6)
1284         movm.l          DEF_REGS(%pc),&0x3fff
1285         fmovm.x         DEF_FPREGS(%pc),&0xff
1286         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
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
1298         mov.w           &0x0000,%cc
1299 unsupp_1_pc:
1300         fmul.x          DATA(%a6),%fp0
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)
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)
1314         bsr.l           chkregs
1315         tst.b           %d0
1316         bne.l           error
1318         bsr.l           chkfpregs
1319         tst.b           %d0
1320         bne.l           error
1322 # packed
1323 unsupp_2:
1324         addq.l          &0x1,TESTCTR(%a6)
1326         movm.l          DEF_REGS(%pc),&0x3fff
1327         fmovm.x         DEF_FPREGS(%pc),&0xff
1328         fmovm.l         DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
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)
1335         mov.l           &0xc1230001,DATA+0x0(%a6)
1336         mov.l           &0x23456789,DATA+0x4(%a6)
1337         mov.l           &0x12345678,DATA+0x8(%a6)
1339         mov.w           &0x0000,%cc
1340 unsupp_2_pc:
1341         fabs.p          DATA(%a6),%fp0
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)
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)
1355         bsr.l           chkregs
1356         tst.b           %d0
1357         bne.l           error
1359         bsr.l           chkfpregs
1360         tst.b           %d0
1361         bne.l           error
1363         clr.l           %d0
1364         rts
1366 ###########################################################
1367 ###########################################################
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
1378         mov.w           ICCR(%a6),%d0
1379         mov.w           SCCR(%a6),%d1
1380         cmp.w           %d0,%d1
1381         bne.l           chkregs_error
1383         clr.l           %d0
1384         rts
1386 chkregs_error:
1387         movq.l          &0x1,%d0
1388         rts
1390 error:
1391         mov.l           TESTCTR(%a6),%d1
1392         movq.l          &0x1,%d0
1393         rts
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
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
1413         clr.l           %d0
1414         rts
1416 chkfpregs_error:
1417         movq.l          &0x1,%d0
1418         rts
1420 DEF_REGS:
1421         long            0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1422         long            0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1424         long            0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1425         long            0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
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
1437 DEF_FPCREGS:
1438         long            0x00000000, 0x00000000, 0x00000000
1440 ############################################################
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
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
1456 ############################################################