~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/ifpsp060/src/ftest.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 ############################################################

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php