Merge git://git.infradead.org/battery-2.6
[pandora-kernel.git] / arch / m68k / ifpsp060 / src / ftest.S
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 ############################################################