Annotation of sys/arch/m68k/060sp/ftest.s, Revision 1.1.1.1
1.1 nbrk 1: #
2: # $OpenBSD: ftest.s,v 1.2 1996/05/30 22:14:33 niklas Exp $
3: # $NetBSD: ftest.s,v 1.2 1996/05/15 19:48:32 is Exp $
4: #
5:
6: #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7: # MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
8: # M68000 Hi-Performance Microprocessor Division
9: # M68060 Software Package Production Release
10: #
11: # M68060 Software Package Copyright (C) 1993, 1994, 1995, 1996 Motorola Inc.
12: # All rights reserved.
13: #
14: # THE SOFTWARE is provided on an "AS IS" basis and without warranty.
15: # To the maximum extent permitted by applicable law,
16: # MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
17: # INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
18: # FOR A PARTICULAR PURPOSE and any warranty against infringement with
19: # regard to the SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
20: # and any accompanying written materials.
21: #
22: # To the maximum extent permitted by applicable law,
23: # IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
24: # (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
25: # BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
26: # ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
27: #
28: # Motorola assumes no responsibility for the maintenance and support
29: # of the SOFTWARE.
30: #
31: # You are hereby granted a copyright license to use, modify, and distribute the
32: # SOFTWARE so long as this entire notice is retained without alteration
33: # in any modified and/or redistributed versions, and that such modified
34: # versions are clearly identified as such.
35: # No licenses are granted by implication, estoppel or otherwise under any
36: # patents or trademarks of Motorola, Inc.
37: #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38:
39: #############################################
40: set SREGS, -64
41: set IREGS, -128
42: set IFPREGS, -224
43: set SFPREGS, -320
44: set IFPCREGS, -332
45: set SFPCREGS, -344
46: set ICCR, -346
47: set SCCR, -348
48: set TESTCTR, -352
49: set DATA, -384
50:
51: #############################################
52: TESTTOP:
53: bra.l _060TESTS_
54: short 0x0000
55:
56: bra.l _060TESTS_unimp
57: short 0x0000
58:
59: bra.l _060TESTS_enable
60: short 0x0000
61:
62: start_str:
63: string "Testing 68060 FPSP started:\n"
64:
65: start_str_unimp:
66: string "Testing 68060 FPSP unimplemented instruction started:\n"
67:
68: start_str_enable:
69: string "Testing 68060 FPSP exception enabled started:\n"
70:
71: pass_str:
72: string "passed\n"
73:
74: fail_str:
75: string " failed\n"
76:
77: align 0x4
78: chk_test:
79: tst.l %d0
80: bne.b test_fail
81: test_pass:
82: pea pass_str(%pc)
83: bsr.l _print_str
84: addq.l &0x4,%sp
85: rts
86: test_fail:
87: mov.l %d1,-(%sp)
88: bsr.l _print_num
89: addq.l &0x4,%sp
90:
91: pea fail_str(%pc)
92: bsr.l _print_str
93: addq.l &0x4,%sp
94: rts
95:
96: #############################################
97: _060TESTS_:
98: link %a6,&-384
99:
100: movm.l &0x3f3c,-(%sp)
101: fmovm.x &0xff,-(%sp)
102:
103: pea start_str(%pc)
104: bsr.l _print_str
105: addq.l &0x4,%sp
106:
107: ### effadd
108: clr.l TESTCTR(%a6)
109: pea effadd_str(%pc)
110: bsr.l _print_str
111: addq.l &0x4,%sp
112:
113: bsr.l effadd_0
114:
115: bsr.l chk_test
116:
117: ### unsupp
118: clr.l TESTCTR(%a6)
119: pea unsupp_str(%pc)
120: bsr.l _print_str
121: addq.l &0x4,%sp
122:
123: bsr.l unsupp_0
124:
125: bsr.l chk_test
126:
127: ### ovfl non-maskable
128: clr.l TESTCTR(%a6)
129: pea ovfl_nm_str(%pc)
130: bsr.l _print_str
131: bsr.l ovfl_nm_0
132:
133: bsr.l chk_test
134:
135: ### unfl non-maskable
136: clr.l TESTCTR(%a6)
137: pea unfl_nm_str(%pc)
138: bsr.l _print_str
139: bsr.l unfl_nm_0
140:
141: bsr.l chk_test
142:
143: movm.l (%sp)+,&0x3cfc
144: fmovm.x (%sp)+,&0xff
145:
146: unlk %a6
147: rts
148:
149: _060TESTS_unimp:
150: link %a6,&-384
151:
152: movm.l &0x3f3c,-(%sp)
153: fmovm.x &0xff,-(%sp)
154:
155: pea start_str_unimp(%pc)
156: bsr.l _print_str
157: addq.l &0x4,%sp
158:
159: ### unimp
160: clr.l TESTCTR(%a6)
161: pea unimp_str(%pc)
162: bsr.l _print_str
163: addq.l &0x4,%sp
164:
165: bsr.l unimp_0
166:
167: bsr.l chk_test
168:
169: movm.l (%sp)+,&0x3cfc
170: fmovm.x (%sp)+,&0xff
171:
172: unlk %a6
173: rts
174:
175: _060TESTS_enable:
176: link %a6,&-384
177:
178: movm.l &0x3f3c,-(%sp)
179: fmovm.x &0xff,-(%sp)
180:
181: pea start_str_enable(%pc)
182: bsr.l _print_str
183: addq.l &0x4,%sp
184:
185: ### snan
186: clr.l TESTCTR(%a6)
187: pea snan_str(%pc)
188: bsr.l _print_str
189: bsr.l snan_0
190:
191: bsr.l chk_test
192:
193: ### operr
194: clr.l TESTCTR(%a6)
195: pea operr_str(%pc)
196: bsr.l _print_str
197: bsr.l operr_0
198:
199: bsr.l chk_test
200:
201: ### ovfl
202: clr.l TESTCTR(%a6)
203: pea ovfl_str(%pc)
204: bsr.l _print_str
205: bsr.l ovfl_0
206:
207: bsr.l chk_test
208:
209: ### unfl
210: clr.l TESTCTR(%a6)
211: pea unfl_str(%pc)
212: bsr.l _print_str
213: bsr.l unfl_0
214:
215: bsr.l chk_test
216:
217: ### dz
218: clr.l TESTCTR(%a6)
219: pea dz_str(%pc)
220: bsr.l _print_str
221: bsr.l dz_0
222:
223: bsr.l chk_test
224:
225: ### inexact
226: clr.l TESTCTR(%a6)
227: pea inex_str(%pc)
228: bsr.l _print_str
229: bsr.l inex_0
230:
231: bsr.l chk_test
232:
233: movm.l (%sp)+,&0x3cfc
234: fmovm.x (%sp)+,&0xff
235:
236: unlk %a6
237: rts
238:
239: #############################################
240: #############################################
241:
242: unimp_str:
243: string "\tUnimplemented FP instructions..."
244:
245: align 0x4
246: unimp_0:
247: addq.l &0x1,TESTCTR(%a6)
248:
249: movm.l DEF_REGS(%pc),&0x3fff
250: fmovm.x DEF_FPREGS(%pc),&0xff
251: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
252:
253: mov.w &0x0000,ICCR(%a6)
254: movm.l &0x7fff,IREGS(%a6)
255: fmovm.x &0xff,IFPREGS(%a6)
256: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
257:
258: mov.l &0x40000000,DATA+0x0(%a6)
259: mov.l &0xc90fdaa2,DATA+0x4(%a6)
260: mov.l &0x2168c235,DATA+0x8(%a6)
261:
262: mov.w &0x0000,%cc
263: unimp_0_pc:
264: fsin.x DATA(%a6),%fp0
265:
266: mov.w %cc,SCCR(%a6)
267: movm.l &0x7fff,SREGS(%a6)
268: fmovm.x &0xff,SFPREGS(%a6)
269: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
270:
271: mov.l &0xbfbf0000,IFPREGS+0x0(%a6)
272: mov.l &0x80000000,IFPREGS+0x4(%a6)
273: mov.l &0x00000000,IFPREGS+0x8(%a6)
274: mov.l &0x08000208,IFPCREGS+0x4(%a6)
275: lea unimp_0_pc(%pc),%a0
276: mov.l %a0,IFPCREGS+0x8(%a6)
277:
278: bsr.l chkregs
279: tst.b %d0
280: bne.l error
281:
282: bsr.l chkfpregs
283: tst.b %d0
284: bne.l error
285:
286: unimp_1:
287: addq.l &0x1,TESTCTR(%a6)
288:
289: movm.l DEF_REGS(%pc),&0x3fff
290: fmovm.x DEF_FPREGS(%pc),&0xff
291: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
292:
293: mov.w &0x0000,ICCR(%a6)
294: movm.l &0x7fff,IREGS(%a6)
295: fmovm.x &0xff,IFPREGS(%a6)
296: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
297:
298: mov.l &0x3ffe0000,DATA+0x0(%a6)
299: mov.l &0xc90fdaa2,DATA+0x4(%a6)
300: mov.l &0x2168c235,DATA+0x8(%a6)
301:
302: mov.w &0x0000,%cc
303: unimp_1_pc:
304: ftan.x DATA(%a6),%fp0
305:
306: mov.w %cc,SCCR(%a6)
307: movm.l &0x7fff,SREGS(%a6)
308: fmovm.x &0xff,SFPREGS(%a6)
309: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
310:
311: mov.l &0x3fff0000,IFPREGS+0x0(%a6)
312: mov.l &0x80000000,IFPREGS+0x4(%a6)
313: mov.l &0x00000000,IFPREGS+0x8(%a6)
314: mov.l &0x00000208,IFPCREGS+0x4(%a6)
315: lea unimp_1_pc(%pc),%a0
316: mov.l %a0,IFPCREGS+0x8(%a6)
317:
318: bsr.l chkregs
319: tst.b %d0
320: bne.l error
321:
322: bsr.l chkfpregs
323: tst.b %d0
324: bne.l error
325:
326: # fmovecr
327: unimp_2:
328: addq.l &0x1,TESTCTR(%a6)
329:
330: movm.l DEF_REGS(%pc),&0x3fff
331: fmovm.x DEF_FPREGS(%pc),&0xff
332: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
333:
334: mov.w &0x0000,ICCR(%a6)
335: movm.l &0x7fff,IREGS(%a6)
336: fmovm.x &0xff,IFPREGS(%a6)
337: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
338:
339: mov.w &0x0000,%cc
340: unimp_2_pc:
341: fmovcr.x &0x31,%fp0
342:
343: mov.w %cc,SCCR(%a6)
344: movm.l &0x7fff,SREGS(%a6)
345: fmovm.x &0xff,SFPREGS(%a6)
346: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
347:
348: mov.l &0x40000000,IFPREGS+0x0(%a6)
349: mov.l &0x935d8ddd,IFPREGS+0x4(%a6)
350: mov.l &0xaaa8ac17,IFPREGS+0x8(%a6)
351: mov.l &0x00000208,IFPCREGS+0x4(%a6)
352: lea unimp_2_pc(%pc),%a0
353: mov.l %a0,IFPCREGS+0x8(%a6)
354:
355: bsr.l chkregs
356: tst.b %d0
357: bne.l error
358:
359: bsr.l chkfpregs
360: tst.b %d0
361: bne.l error
362:
363: # fscc
364: unimp_3:
365: addq.l &0x1,TESTCTR(%a6)
366:
367: movm.l DEF_REGS(%pc),&0x3fff
368: fmovm.x DEF_FPREGS(%pc),&0xff
369: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
370:
371: fmov.l &0x0f000000,%fpsr
372: mov.l &0x00,%d7
373:
374: mov.w &0x0000,ICCR(%a6)
375: movm.l &0x7fff,IREGS(%a6)
376: fmovm.x &0xff,IFPREGS(%a6)
377: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
378:
379: mov.w &0x0000,%cc
380: unimp_3_pc:
381: fsgt %d7
382:
383: mov.w %cc,SCCR(%a6)
384: movm.l &0x7fff,SREGS(%a6)
385: fmovm.x &0xff,SFPREGS(%a6)
386: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
387: mov.l &0x0f008080,IFPCREGS+0x4(%a6)
388: lea unimp_3_pc(%pc),%a0
389: mov.l %a0,IFPCREGS+0x8(%a6)
390:
391: bsr.l chkregs
392: tst.b %d0
393: bne.l error
394:
395: bsr.l chkfpregs
396: tst.b %d0
397: bne.l error
398:
399: # fdbcc
400: unimp_4:
401: addq.l &0x1,TESTCTR(%a6)
402:
403: movm.l DEF_REGS(%pc),&0x3fff
404: fmovm.x DEF_FPREGS(%pc),&0xff
405: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
406:
407: fmov.l &0x0f000000,%fpsr
408: mov.l &0x2,%d7
409:
410: mov.w &0x0000,ICCR(%a6)
411: movm.l &0x7fff,IREGS(%a6)
412: fmovm.x &0xff,IFPREGS(%a6)
413: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
414:
415: mov.w &0x0000,%cc
416: unimp_4_pc:
417: fdbgt.w %d7,unimp_4_pc
418:
419: mov.w %cc,SCCR(%a6)
420: movm.l &0x7fff,SREGS(%a6)
421: fmovm.x &0xff,SFPREGS(%a6)
422: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
423: mov.w &0xffff,IREGS+28+2(%a6)
424: mov.l &0x0f008080,IFPCREGS+0x4(%a6)
425: lea unimp_4_pc(%pc),%a0
426: mov.l %a0,IFPCREGS+0x8(%a6)
427:
428: bsr.l chkregs
429: tst.b %d0
430: bne.l error
431:
432: bsr.l chkfpregs
433: tst.b %d0
434: bne.l error
435:
436: # ftrapcc
437: unimp_5:
438: addq.l &0x1,TESTCTR(%a6)
439:
440: movm.l DEF_REGS(%pc),&0x3fff
441: fmovm.x DEF_FPREGS(%pc),&0xff
442: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
443:
444: fmov.l &0x0f000000,%fpsr
445:
446: mov.w &0x0000,ICCR(%a6)
447: movm.l &0x7fff,IREGS(%a6)
448: fmovm.x &0xff,IFPREGS(%a6)
449: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
450:
451: mov.w &0x0000,%cc
452: unimp_5_pc:
453: ftpgt.l &0xabcdef01
454:
455: mov.w %cc,SCCR(%a6)
456: movm.l &0x7fff,SREGS(%a6)
457: fmovm.x &0xff,SFPREGS(%a6)
458: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
459: mov.l &0x0f008080,IFPCREGS+0x4(%a6)
460: lea unimp_5_pc(%pc),%a0
461: mov.l %a0,IFPCREGS+0x8(%a6)
462:
463: bsr.l chkregs
464: tst.b %d0
465: bne.l error
466:
467: bsr.l chkfpregs
468: tst.b %d0
469: bne.l error
470:
471: clr.l %d0
472: rts
473:
474: #############################################
475:
476: effadd_str:
477: string "\tUnimplemented <ea>..."
478:
479: align 0x4
480: effadd_0:
481: addq.l &0x1,TESTCTR(%a6)
482:
483: movm.l DEF_REGS(%pc),&0x3fff
484: fmovm.x DEF_FPREGS(%pc),&0xff
485: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
486:
487: mov.w &0x0000,ICCR(%a6)
488: movm.l &0x7fff,IREGS(%a6)
489: fmovm.x &0xff,IFPREGS(%a6)
490: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
491:
492: fmov.b &0x2,%fp0
493:
494: mov.w &0x0000,%cc
495: effadd_0_pc:
496: fmul.x &0xc00000008000000000000000,%fp0
497:
498: mov.w %cc,SCCR(%a6)
499: movm.l &0x7fff,SREGS(%a6)
500: fmovm.x &0xff,SFPREGS(%a6)
501: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
502:
503: mov.l &0xc0010000,IFPREGS+0x0(%a6)
504: mov.l &0x80000000,IFPREGS+0x4(%a6)
505: mov.l &0x00000000,IFPREGS+0x8(%a6)
506: mov.l &0x08000000,IFPCREGS+0x4(%a6)
507: lea effadd_0_pc(%pc),%a0
508: mov.l %a0,IFPCREGS+0x8(%a6)
509:
510: bsr.l chkregs
511: tst.b %d0
512: bne.l error
513:
514: bsr.l chkfpregs
515: tst.b %d0
516: bne.l error
517:
518: effadd_1:
519: addq.l &0x1,TESTCTR(%a6)
520:
521: movm.l DEF_REGS(%pc),&0x3fff
522: fmovm.x DEF_FPREGS(%pc),&0xff
523: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
524:
525: mov.w &0x0000,ICCR(%a6)
526: movm.l &0x7fff,IREGS(%a6)
527: fmovm.x &0xff,IFPREGS(%a6)
528: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
529:
530: mov.w &0x0000,%cc
531: effadd_1_pc:
532: fabs.p &0xc12300012345678912345678,%fp0
533:
534: mov.w %cc,SCCR(%a6)
535: movm.l &0x7fff,SREGS(%a6)
536: fmovm.x &0xff,SFPREGS(%a6)
537: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
538:
539: mov.l &0x3e660000,IFPREGS+0x0(%a6)
540: mov.l &0xd0ed23e8,IFPREGS+0x4(%a6)
541: mov.l &0xd14035bc,IFPREGS+0x8(%a6)
542: mov.l &0x00000108,IFPCREGS+0x4(%a6)
543: lea effadd_1_pc(%pc),%a0
544: mov.l %a0,IFPCREGS+0x8(%a6)
545:
546: bsr.l chkregs
547: tst.b %d0
548: bne.l error
549:
550: bsr.l chkfpregs
551: tst.b %d0
552: bne.l error
553:
554: fmovml_0:
555: addq.l &0x1,TESTCTR(%a6)
556:
557: movm.l DEF_REGS(%pc),&0x3fff
558: fmovm.x DEF_FPREGS(%pc),&0xff
559: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
560:
561: mov.w &0x0000,ICCR(%a6)
562: mov.w &0x0000,%cc
563: movm.l &0x7fff,IREGS(%a6)
564: fmovm.x &0xff,IFPREGS(%a6)
565: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
566:
567: fmovm.l &0xffffffffffffffff,%fpcr,%fpsr
568:
569: mov.w %cc,SCCR(%a6)
570: movm.l &0x7fff,SREGS(%a6)
571: fmovm.x &0xff,SFPREGS(%a6)
572: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
573: mov.l &0x0000fff0,IFPCREGS+0x0(%a6)
574: mov.l &0x0ffffff8,IFPCREGS+0x4(%a6)
575:
576: bsr.l chkregs
577: tst.b %d0
578: bne.l error
579:
580: bsr.l chkfpregs
581: tst.b %d0
582: bne.l error
583:
584: fmovml_1:
585: addq.l &0x1,TESTCTR(%a6)
586:
587: movm.l DEF_REGS(%pc),&0x3fff
588: fmovm.x DEF_FPREGS(%pc),&0xff
589: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
590:
591: mov.w &0x0000,ICCR(%a6)
592: mov.w &0x0000,%cc
593: movm.l &0x7fff,IREGS(%a6)
594: fmovm.x &0xff,IFPREGS(%a6)
595: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
596:
597: fmovm.l &0xffffffffffffffff,%fpcr,%fpiar
598:
599: mov.w %cc,SCCR(%a6)
600: movm.l &0x7fff,SREGS(%a6)
601: fmovm.x &0xff,SFPREGS(%a6)
602: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
603: mov.l &0x0000fff0,IFPCREGS+0x0(%a6)
604: mov.l &0xffffffff,IFPCREGS+0x8(%a6)
605:
606: bsr.l chkregs
607: tst.b %d0
608: bne.l error
609:
610: bsr.l chkfpregs
611: tst.b %d0
612: bne.l error
613:
614: fmovml_2:
615: addq.l &0x1,TESTCTR(%a6)
616:
617: movm.l DEF_REGS(%pc),&0x3fff
618: fmovm.x DEF_FPREGS(%pc),&0xff
619: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
620:
621: mov.w &0x0000,ICCR(%a6)
622: mov.w &0x0000,%cc
623: movm.l &0x7fff,IREGS(%a6)
624: fmovm.x &0xff,IFPREGS(%a6)
625: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
626:
627: fmovm.l &0xffffffffffffffff,%fpsr,%fpiar
628:
629: mov.w %cc,SCCR(%a6)
630: movm.l &0x7fff,SREGS(%a6)
631: fmovm.x &0xff,SFPREGS(%a6)
632: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
633: mov.l &0x0ffffff8,IFPCREGS+0x4(%a6)
634: mov.l &0xffffffff,IFPCREGS+0x8(%a6)
635:
636: bsr.l chkregs
637: tst.b %d0
638: bne.l error
639:
640: bsr.l chkfpregs
641: tst.b %d0
642: bne.l error
643:
644: fmovml_3:
645: addq.l &0x1,TESTCTR(%a6)
646:
647: movm.l DEF_REGS(%pc),&0x3fff
648: fmovm.x DEF_FPREGS(%pc),&0xff
649: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
650:
651: mov.w &0x0000,ICCR(%a6)
652: mov.w &0x0000,%cc
653: movm.l &0x7fff,IREGS(%a6)
654: fmovm.x &0xff,IFPREGS(%a6)
655: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
656:
657: fmovm.l &0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar
658:
659: mov.w %cc,SCCR(%a6)
660: movm.l &0x7fff,SREGS(%a6)
661: fmovm.x &0xff,SFPREGS(%a6)
662: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
663: mov.l &0x0000fff0,IFPCREGS+0x0(%a6)
664: mov.l &0x0ffffff8,IFPCREGS+0x4(%a6)
665: mov.l &0xffffffff,IFPCREGS+0x8(%a6)
666:
667: bsr.l chkregs
668: tst.b %d0
669: bne.l error
670:
671: bsr.l chkfpregs
672: tst.b %d0
673: bne.l error
674:
675: # fmovmx dynamic
676: fmovmx_0:
677: addq.l &0x1,TESTCTR(%a6)
678:
679: movm.l DEF_REGS(%pc),&0x3fff
680: fmovm.x DEF_FPREGS(%pc),&0xff
681: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
682:
683: fmov.b &0x1,%fp0
684: fmov.b &0x2,%fp1
685: fmov.b &0x3,%fp2
686: fmov.b &0x4,%fp3
687: fmov.b &0x5,%fp4
688: fmov.b &0x6,%fp5
689: fmov.b &0x7,%fp6
690: fmov.b &0x8,%fp7
691:
692: fmov.l &0x0,%fpiar
693: mov.l &0xffffffaa,%d0
694:
695: mov.w &0x0000,ICCR(%a6)
696: movm.l &0xffff,IREGS(%a6)
697:
698: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
699: fmovm.x &0xff,IFPREGS(%a6)
700:
701: mov.w &0x0000,%cc
702:
703: fmovm.x %d0,-(%sp)
704:
705: mov.w %cc,SCCR(%a6)
706:
707: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
708:
709: fmov.s &0x7f800000,%fp1
710: fmov.s &0x7f800000,%fp3
711: fmov.s &0x7f800000,%fp5
712: fmov.s &0x7f800000,%fp7
713:
714: fmov.x (%sp)+,%fp1
715: fmov.x (%sp)+,%fp3
716: fmov.x (%sp)+,%fp5
717: fmov.x (%sp)+,%fp7
718:
719: movm.l &0xffff,SREGS(%a6)
720: fmovm.x &0xff,SFPREGS(%a6)
721:
722: bsr.l chkregs
723: tst.b %d0
724: bne.l error
725:
726: bsr.l chkfpregs
727: tst.b %d0
728: bne.l error
729:
730: fmovmx_1:
731: addq.l &0x1,TESTCTR(%a6)
732:
733: movm.l DEF_REGS(%pc),&0x3fff
734: fmovm.x DEF_FPREGS(%pc),&0xff
735: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
736:
737: fmov.b &0x1,%fp0
738: fmov.b &0x2,%fp1
739: fmov.b &0x3,%fp2
740: fmov.b &0x4,%fp3
741: fmov.b &0x5,%fp4
742: fmov.b &0x6,%fp5
743: fmov.b &0x7,%fp6
744: fmov.b &0x8,%fp7
745:
746: fmov.x %fp6,-(%sp)
747: fmov.x %fp4,-(%sp)
748: fmov.x %fp2,-(%sp)
749: fmov.x %fp0,-(%sp)
750:
751: fmovm.x &0xff,IFPREGS(%a6)
752:
753: fmov.s &0x7f800000,%fp6
754: fmov.s &0x7f800000,%fp4
755: fmov.s &0x7f800000,%fp2
756: fmov.s &0x7f800000,%fp0
757:
758: fmov.l &0x0,%fpiar
759: fmov.l &0x0,%fpsr
760: mov.l &0xffffffaa,%d0
761:
762: mov.w &0x0000,ICCR(%a6)
763: movm.l &0xffff,IREGS(%a6)
764:
765: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
766:
767: mov.w &0x0000,%cc
768:
769: fmovm.x (%sp)+,%d0
770:
771: mov.w %cc,SCCR(%a6)
772:
773: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
774:
775: movm.l &0xffff,SREGS(%a6)
776: fmovm.x &0xff,SFPREGS(%a6)
777:
778: bsr.l chkregs
779: tst.b %d0
780: bne.l error
781:
782: bsr.l chkfpregs
783: tst.b %d0
784: bne.l error
785:
786: fmovmx_2:
787: addq.l &0x1,TESTCTR(%a6)
788:
789: movm.l DEF_REGS(%pc),&0x3fff
790: fmovm.x DEF_FPREGS(%pc),&0xff
791: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
792:
793: fmov.b &0x1,%fp0
794: fmov.b &0x2,%fp1
795: fmov.b &0x3,%fp2
796: fmov.b &0x4,%fp3
797: fmov.b &0x5,%fp4
798: fmov.b &0x6,%fp5
799: fmov.b &0x7,%fp6
800: fmov.b &0x8,%fp7
801:
802: fmov.l &0x0,%fpiar
803: mov.l &0xffffff00,%d0
804:
805: mov.w &0x0000,ICCR(%a6)
806: movm.l &0xffff,IREGS(%a6)
807:
808: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
809: fmovm.x &0xff,IFPREGS(%a6)
810:
811: mov.w &0x0000,%cc
812:
813: fmovm.x %d0,-(%sp)
814:
815: mov.w %cc,SCCR(%a6)
816:
817: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
818:
819: movm.l &0xffff,SREGS(%a6)
820: fmovm.x &0xff,SFPREGS(%a6)
821:
822: bsr.l chkregs
823: tst.b %d0
824: bne.l error
825:
826: bsr.l chkfpregs
827: tst.b %d0
828: bne.l error
829:
830: clr.l %d0
831: rts
832:
833: ###########################################################
834:
835: # This test will take a non-maskable overflow directly.
836: ovfl_nm_str:
837: string "\tNon-maskable overflow..."
838:
839: align 0x4
840: ovfl_nm_0:
841: addq.l &0x1,TESTCTR(%a6)
842:
843: movm.l DEF_REGS(%pc),&0x3fff
844: fmovm.x DEF_FPREGS(%pc),&0xff
845: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
846:
847: mov.w &0x0000,ICCR(%a6)
848: movm.l &0x7fff,IREGS(%a6)
849: fmovm.x &0xff,IFPREGS(%a6)
850: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
851:
852: fmov.b &0x2,%fp0
853: mov.l &0x7ffe0000,DATA+0x0(%a6)
854: mov.l &0x80000000,DATA+0x4(%a6)
855: mov.l &0x00000000,DATA+0x8(%a6)
856:
857: mov.w &0x0000,%cc
858: ovfl_nm_0_pc:
859: fmul.x DATA(%a6),%fp0
860:
861: mov.w %cc,SCCR(%a6)
862: movm.l &0x7fff,SREGS(%a6)
863: fmovm.x &0xff,SFPREGS(%a6)
864: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
865:
866: mov.l &0x7fff0000,IFPREGS+0x0(%a6)
867: mov.l &0x00000000,IFPREGS+0x4(%a6)
868: mov.l &0x00000000,IFPREGS+0x8(%a6)
869: mov.l &0x02001048,IFPCREGS+0x4(%a6)
870: lea ovfl_nm_0_pc(%pc),%a0
871: mov.l %a0,IFPCREGS+0x8(%a6)
872:
873: bsr.l chkregs
874: tst.b %d0
875: bne.l error
876:
877: bsr.l chkfpregs
878: tst.b %d0
879: bne.l error
880:
881: clr.l %d0
882: rts
883:
884: ###########################################################
885:
886: # This test will take an overflow directly.
887: ovfl_str:
888: string "\tEnabled overflow..."
889:
890: align 0x4
891: ovfl_0:
892: addq.l &0x1,TESTCTR(%a6)
893:
894: movm.l DEF_REGS(%pc),&0x3fff
895: fmovm.x DEF_FPREGS(%pc),&0xff
896: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
897:
898: mov.w &0x0000,ICCR(%a6)
899: movm.l &0x7fff,IREGS(%a6)
900: fmovm.x &0xff,IFPREGS(%a6)
901: fmov.l &0x00001000,%fpcr
902: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
903:
904: fmov.b &0x2,%fp0
905: mov.l &0x7ffe0000,DATA+0x0(%a6)
906: mov.l &0x80000000,DATA+0x4(%a6)
907: mov.l &0x00000000,DATA+0x8(%a6)
908:
909: mov.w &0x0000,%cc
910: ovfl_0_pc:
911: fmul.x DATA(%a6),%fp0
912:
913: mov.w %cc,SCCR(%a6)
914: movm.l &0x7fff,SREGS(%a6)
915: fmovm.x &0xff,SFPREGS(%a6)
916: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
917:
918: mov.l &0x7fff0000,IFPREGS+0x0(%a6)
919: mov.l &0x00000000,IFPREGS+0x4(%a6)
920: mov.l &0x00000000,IFPREGS+0x8(%a6)
921: mov.l &0x02001048,IFPCREGS+0x4(%a6)
922: lea ovfl_0_pc(%pc),%a0
923: mov.l %a0,IFPCREGS+0x8(%a6)
924:
925: bsr.l chkregs
926: tst.b %d0
927: bne.l error
928:
929: bsr.l chkfpregs
930: tst.b %d0
931: bne.l error
932:
933: clr.l %d0
934: rts
935:
936: #####################################################################
937:
938: # This test will take an underflow directly.
939: unfl_str:
940: string "\tEnabled underflow..."
941:
942: align 0x4
943: unfl_0:
944: addq.l &0x1,TESTCTR(%a6)
945:
946: movm.l DEF_REGS(%pc),&0x3fff
947: fmovm.x DEF_FPREGS(%pc),&0xff
948: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
949:
950: mov.w &0x0000,ICCR(%a6)
951: movm.l &0x7fff,IREGS(%a6)
952: fmovm.x &0xff,IFPREGS(%a6)
953: fmov.l &0x00000800,%fpcr
954: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
955:
956: mov.l &0x00000000,DATA+0x0(%a6)
957: mov.l &0x80000000,DATA+0x4(%a6)
958: mov.l &0x00000000,DATA+0x8(%a6)
959: fmovm.x DATA(%a6),&0x80
960:
961: mov.w &0x0000,%cc
962: unfl_0_pc:
963: fdiv.b &0x2,%fp0
964:
965: mov.w %cc,SCCR(%a6)
966: movm.l &0x7fff,SREGS(%a6)
967: fmovm.x &0xff,SFPREGS(%a6)
968: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
969:
970: mov.l &0x00000000,IFPREGS+0x0(%a6)
971: mov.l &0x40000000,IFPREGS+0x4(%a6)
972: mov.l &0x00000000,IFPREGS+0x8(%a6)
973: mov.l &0x00000800,IFPCREGS+0x4(%a6)
974: lea unfl_0_pc(%pc),%a0
975: mov.l %a0,IFPCREGS+0x8(%a6)
976:
977: bsr.l chkregs
978: tst.b %d0
979: bne.l error
980:
981: bsr.l chkfpregs
982: tst.b %d0
983: bne.l error
984:
985: clr.l %d0
986: rts
987:
988: #####################################################################
989:
990: # This test will take a non-maskable underflow directly.
991: unfl_nm_str:
992: string "\tNon-maskable underflow..."
993:
994: align 0x4
995: unfl_nm_0:
996: addq.l &0x1,TESTCTR(%a6)
997:
998: movm.l DEF_REGS(%pc),&0x3fff
999: fmovm.x DEF_FPREGS(%pc),&0xff
1000: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1001:
1002: mov.w &0x0000,ICCR(%a6)
1003: movm.l &0x7fff,IREGS(%a6)
1004: fmovm.x &0xff,IFPREGS(%a6)
1005: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1006:
1007: mov.l &0x00000000,DATA+0x0(%a6)
1008: mov.l &0x80000000,DATA+0x4(%a6)
1009: mov.l &0x00000000,DATA+0x8(%a6)
1010: fmovm.x DATA(%a6),&0x80
1011:
1012: mov.w &0x0000,%cc
1013: unfl_nm_0_pc:
1014: fdiv.b &0x2,%fp0
1015:
1016: mov.w %cc,SCCR(%a6)
1017: movm.l &0x7fff,SREGS(%a6)
1018: fmovm.x &0xff,SFPREGS(%a6)
1019: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1020:
1021: mov.l &0x00000000,IFPREGS+0x0(%a6)
1022: mov.l &0x40000000,IFPREGS+0x4(%a6)
1023: mov.l &0x00000000,IFPREGS+0x8(%a6)
1024: mov.l &0x00000800,IFPCREGS+0x4(%a6)
1025: lea unfl_nm_0_pc(%pc),%a0
1026: mov.l %a0,IFPCREGS+0x8(%a6)
1027:
1028: bsr.l chkregs
1029: tst.b %d0
1030: bne.l error
1031:
1032: bsr.l chkfpregs
1033: tst.b %d0
1034: bne.l error
1035:
1036: clr.l %d0
1037: rts
1038:
1039: #####################################################################
1040:
1041: inex_str:
1042: string "\tEnabled inexact..."
1043:
1044: align 0x4
1045: inex_0:
1046: addq.l &0x1,TESTCTR(%a6)
1047:
1048: movm.l DEF_REGS(%pc),&0x3fff
1049: fmovm.x DEF_FPREGS(%pc),&0xff
1050: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1051:
1052: mov.w &0x0000,ICCR(%a6)
1053: movm.l &0x7fff,IREGS(%a6)
1054: fmovm.x &0xff,IFPREGS(%a6)
1055: fmov.l &0x00000200,%fpcr # enable inexact
1056: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1057:
1058: mov.l &0x50000000,DATA+0x0(%a6)
1059: mov.l &0x80000000,DATA+0x4(%a6)
1060: mov.l &0x00000000,DATA+0x8(%a6)
1061: fmovm.x DATA(%a6),&0x80
1062:
1063: mov.w &0x0000,%cc
1064: inex_0_pc:
1065: fadd.b &0x2,%fp0
1066:
1067: mov.w %cc,SCCR(%a6)
1068: movm.l &0x7fff,SREGS(%a6)
1069: fmovm.x &0xff,SFPREGS(%a6)
1070: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1071:
1072: mov.l &0x50000000,IFPREGS+0x0(%a6)
1073: mov.l &0x80000000,IFPREGS+0x4(%a6)
1074: mov.l &0x00000000,IFPREGS+0x8(%a6)
1075: mov.l &0x00000208,IFPCREGS+0x4(%a6)
1076: lea inex_0_pc(%pc),%a0
1077: mov.l %a0,IFPCREGS+0x8(%a6)
1078:
1079: bsr.l chkregs
1080: tst.b %d0
1081: bne.l error
1082:
1083: bsr.l chkfpregs
1084: tst.b %d0
1085: bne.l error
1086:
1087: clr.l %d0
1088: rts
1089:
1090: #####################################################################
1091:
1092: snan_str:
1093: string "\tEnabled SNAN..."
1094:
1095: align 0x4
1096: snan_0:
1097: addq.l &0x1,TESTCTR(%a6)
1098:
1099: movm.l DEF_REGS(%pc),&0x3fff
1100: fmovm.x DEF_FPREGS(%pc),&0xff
1101: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1102:
1103: mov.w &0x0000,ICCR(%a6)
1104: movm.l &0x7fff,IREGS(%a6)
1105: fmovm.x &0xff,IFPREGS(%a6)
1106: fmov.l &0x00004000,%fpcr # enable SNAN
1107: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1108:
1109: mov.l &0xffff0000,DATA+0x0(%a6)
1110: mov.l &0x00000000,DATA+0x4(%a6)
1111: mov.l &0x00000001,DATA+0x8(%a6)
1112: fmovm.x DATA(%a6),&0x80
1113:
1114: mov.w &0x0000,%cc
1115: snan_0_pc:
1116: fadd.b &0x2,%fp0
1117:
1118: mov.w %cc,SCCR(%a6)
1119: movm.l &0x7fff,SREGS(%a6)
1120: fmovm.x &0xff,SFPREGS(%a6)
1121: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1122:
1123: mov.l &0xffff0000,IFPREGS+0x0(%a6)
1124: mov.l &0x00000000,IFPREGS+0x4(%a6)
1125: mov.l &0x00000001,IFPREGS+0x8(%a6)
1126: mov.l &0x09004080,IFPCREGS+0x4(%a6)
1127: lea snan_0_pc(%pc),%a0
1128: mov.l %a0,IFPCREGS+0x8(%a6)
1129:
1130: bsr.l chkregs
1131: tst.b %d0
1132: bne.l error
1133:
1134: bsr.l chkfpregs
1135: tst.b %d0
1136: bne.l error
1137:
1138: clr.l %d0
1139: rts
1140:
1141: #####################################################################
1142:
1143: operr_str:
1144: string "\tEnabled OPERR..."
1145:
1146: align 0x4
1147: operr_0:
1148: addq.l &0x1,TESTCTR(%a6)
1149:
1150: movm.l DEF_REGS(%pc),&0x3fff
1151: fmovm.x DEF_FPREGS(%pc),&0xff
1152: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1153:
1154: mov.w &0x0000,ICCR(%a6)
1155: movm.l &0x7fff,IREGS(%a6)
1156: fmovm.x &0xff,IFPREGS(%a6)
1157: fmov.l &0x00002000,%fpcr # enable OPERR
1158: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1159:
1160: mov.l &0xffff0000,DATA+0x0(%a6)
1161: mov.l &0x00000000,DATA+0x4(%a6)
1162: mov.l &0x00000000,DATA+0x8(%a6)
1163: fmovm.x DATA(%a6),&0x80
1164:
1165: mov.w &0x0000,%cc
1166: operr_0_pc:
1167: fadd.s &0x7f800000,%fp0
1168:
1169: mov.w %cc,SCCR(%a6)
1170: movm.l &0x7fff,SREGS(%a6)
1171: fmovm.x &0xff,SFPREGS(%a6)
1172: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1173:
1174: mov.l &0xffff0000,IFPREGS+0x0(%a6)
1175: mov.l &0x00000000,IFPREGS+0x4(%a6)
1176: mov.l &0x00000000,IFPREGS+0x8(%a6)
1177: mov.l &0x01002080,IFPCREGS+0x4(%a6)
1178: lea operr_0_pc(%pc),%a0
1179: mov.l %a0,IFPCREGS+0x8(%a6)
1180:
1181: bsr.l chkregs
1182: tst.b %d0
1183: bne.l error
1184:
1185: bsr.l chkfpregs
1186: tst.b %d0
1187: bne.l error
1188:
1189: clr.l %d0
1190: rts
1191:
1192: #####################################################################
1193:
1194: dz_str:
1195: string "\tEnabled DZ..."
1196:
1197: align 0x4
1198: dz_0:
1199: addq.l &0x1,TESTCTR(%a6)
1200:
1201: movm.l DEF_REGS(%pc),&0x3fff
1202: fmovm.x DEF_FPREGS(%pc),&0xff
1203: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1204:
1205: mov.w &0x0000,ICCR(%a6)
1206: movm.l &0x7fff,IREGS(%a6)
1207: fmovm.x &0xff,IFPREGS(%a6)
1208: fmov.l &0x00000400,%fpcr # enable DZ
1209: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1210:
1211: mov.l &0x40000000,DATA+0x0(%a6)
1212: mov.l &0x80000000,DATA+0x4(%a6)
1213: mov.l &0x00000000,DATA+0x8(%a6)
1214: fmovm.x DATA(%a6),&0x80
1215:
1216: mov.w &0x0000,%cc
1217: dz_0_pc:
1218: fdiv.b &0x0,%fp0
1219:
1220: mov.w %cc,SCCR(%a6)
1221: movm.l &0x7fff,SREGS(%a6)
1222: fmovm.x &0xff,SFPREGS(%a6)
1223: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1224:
1225: mov.l &0x40000000,IFPREGS+0x0(%a6)
1226: mov.l &0x80000000,IFPREGS+0x4(%a6)
1227: mov.l &0x00000000,IFPREGS+0x8(%a6)
1228: mov.l &0x02000410,IFPCREGS+0x4(%a6)
1229: lea dz_0_pc(%pc),%a0
1230: mov.l %a0,IFPCREGS+0x8(%a6)
1231:
1232: bsr.l chkregs
1233: tst.b %d0
1234: bne.l error
1235:
1236: bsr.l chkfpregs
1237: tst.b %d0
1238: bne.l error
1239:
1240: clr.l %d0
1241: rts
1242:
1243: #####################################################################
1244:
1245: unsupp_str:
1246: string "\tUnimplemented data type/format..."
1247:
1248: # an unnormalized number
1249: align 0x4
1250: unsupp_0:
1251: addq.l &0x1,TESTCTR(%a6)
1252:
1253: movm.l DEF_REGS(%pc),&0x3fff
1254: fmovm.x DEF_FPREGS(%pc),&0xff
1255: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1256:
1257: mov.w &0x0000,ICCR(%a6)
1258: movm.l &0x7fff,IREGS(%a6)
1259: fmovm.x &0xff,IFPREGS(%a6)
1260: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1261:
1262: mov.l &0xc03f0000,DATA+0x0(%a6)
1263: mov.l &0x00000000,DATA+0x4(%a6)
1264: mov.l &0x00000001,DATA+0x8(%a6)
1265: fmov.b &0x2,%fp0
1266: mov.w &0x0000,%cc
1267: unsupp_0_pc:
1268: fmul.x DATA(%a6),%fp0
1269:
1270: mov.w %cc,SCCR(%a6)
1271: movm.l &0x7fff,SREGS(%a6)
1272: fmovm.x &0xff,SFPREGS(%a6)
1273: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1274:
1275: mov.l &0xc0010000,IFPREGS+0x0(%a6)
1276: mov.l &0x80000000,IFPREGS+0x4(%a6)
1277: mov.l &0x00000000,IFPREGS+0x8(%a6)
1278: mov.l &0x08000000,IFPCREGS+0x4(%a6)
1279: lea unsupp_0_pc(%pc),%a0
1280: mov.l %a0,IFPCREGS+0x8(%a6)
1281:
1282: bsr.l chkregs
1283: tst.b %d0
1284: bne.l error
1285:
1286: bsr.l chkfpregs
1287: tst.b %d0
1288: bne.l error
1289:
1290: # a denormalized number
1291: unsupp_1:
1292: addq.l &0x1,TESTCTR(%a6)
1293:
1294: movm.l DEF_REGS(%pc),&0x3fff
1295: fmovm.x DEF_FPREGS(%pc),&0xff
1296: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1297:
1298: mov.w &0x0000,ICCR(%a6)
1299: movm.l &0x7fff,IREGS(%a6)
1300: fmovm.x &0xff,IFPREGS(%a6)
1301: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1302:
1303: mov.l &0x80000000,DATA+0x0(%a6)
1304: mov.l &0x01000000,DATA+0x4(%a6)
1305: mov.l &0x00000000,DATA+0x8(%a6)
1306: fmov.l &0x7fffffff,%fp0
1307:
1308: mov.w &0x0000,%cc
1309: unsupp_1_pc:
1310: fmul.x DATA(%a6),%fp0
1311:
1312: mov.w %cc,SCCR(%a6)
1313: movm.l &0x7fff,SREGS(%a6)
1314: fmovm.x &0xff,SFPREGS(%a6)
1315: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1316:
1317: mov.l &0x80170000,IFPREGS+0x0(%a6)
1318: mov.l &0xfffffffe,IFPREGS+0x4(%a6)
1319: mov.l &0x00000000,IFPREGS+0x8(%a6)
1320: mov.l &0x08000000,IFPCREGS+0x4(%a6)
1321: lea unsupp_1_pc(%pc),%a0
1322: mov.l %a0,IFPCREGS+0x8(%a6)
1323:
1324: bsr.l chkregs
1325: tst.b %d0
1326: bne.l error
1327:
1328: bsr.l chkfpregs
1329: tst.b %d0
1330: bne.l error
1331:
1332: # packed
1333: unsupp_2:
1334: addq.l &0x1,TESTCTR(%a6)
1335:
1336: movm.l DEF_REGS(%pc),&0x3fff
1337: fmovm.x DEF_FPREGS(%pc),&0xff
1338: fmovm.l DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
1339:
1340: mov.w &0x0000,ICCR(%a6)
1341: movm.l &0x7fff,IREGS(%a6)
1342: fmovm.x &0xff,IFPREGS(%a6)
1343: fmovm.l %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
1344:
1345: mov.l &0xc1230001,DATA+0x0(%a6)
1346: mov.l &0x23456789,DATA+0x4(%a6)
1347: mov.l &0x12345678,DATA+0x8(%a6)
1348:
1349: mov.w &0x0000,%cc
1350: unsupp_2_pc:
1351: fabs.p DATA(%a6),%fp0
1352:
1353: mov.w %cc,SCCR(%a6)
1354: movm.l &0x7fff,SREGS(%a6)
1355: fmovm.x &0xff,SFPREGS(%a6)
1356: fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
1357:
1358: mov.l &0x3e660000,IFPREGS+0x0(%a6)
1359: mov.l &0xd0ed23e8,IFPREGS+0x4(%a6)
1360: mov.l &0xd14035bc,IFPREGS+0x8(%a6)
1361: mov.l &0x00000108,IFPCREGS+0x4(%a6)
1362: lea unsupp_2_pc(%pc),%a0
1363: mov.l %a0,IFPCREGS+0x8(%a6)
1364:
1365: bsr.l chkregs
1366: tst.b %d0
1367: bne.l error
1368:
1369: bsr.l chkfpregs
1370: tst.b %d0
1371: bne.l error
1372:
1373: clr.l %d0
1374: rts
1375:
1376: ###########################################################
1377: ###########################################################
1378:
1379: chkregs:
1380: lea IREGS(%a6),%a0
1381: lea SREGS(%a6),%a1
1382: mov.l &14,%d0
1383: chkregs_loop:
1384: cmp.l (%a0)+,(%a1)+
1385: bne.l chkregs_error
1386: dbra.w %d0,chkregs_loop
1387:
1388: mov.w ICCR(%a6),%d0
1389: mov.w SCCR(%a6),%d1
1390: cmp.w %d0,%d1
1391: bne.l chkregs_error
1392:
1393: clr.l %d0
1394: rts
1395:
1396: chkregs_error:
1397: movq.l &0x1,%d0
1398: rts
1399:
1400: error:
1401: mov.l TESTCTR(%a6),%d1
1402: movq.l &0x1,%d0
1403: rts
1404:
1405: chkfpregs:
1406: lea IFPREGS(%a6),%a0
1407: lea SFPREGS(%a6),%a1
1408: mov.l &23,%d0
1409: chkfpregs_loop:
1410: cmp.l (%a0)+,(%a1)+
1411: bne.l chkfpregs_error
1412: dbra.w %d0,chkfpregs_loop
1413:
1414: lea IFPCREGS(%a6),%a0
1415: lea SFPCREGS(%a6),%a1
1416: cmp.l (%a0)+,(%a1)+
1417: bne.l chkfpregs_error
1418: cmp.l (%a0)+,(%a1)+
1419: bne.l chkfpregs_error
1420: cmp.l (%a0)+,(%a1)+
1421: bne.l chkfpregs_error
1422:
1423: clr.l %d0
1424: rts
1425:
1426: chkfpregs_error:
1427: movq.l &0x1,%d0
1428: rts
1429:
1430: DEF_REGS:
1431: long 0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1432: long 0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1433:
1434: long 0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1435: long 0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
1436:
1437: DEF_FPREGS:
1438: long 0x7fff0000, 0xffffffff, 0xffffffff
1439: long 0x7fff0000, 0xffffffff, 0xffffffff
1440: long 0x7fff0000, 0xffffffff, 0xffffffff
1441: long 0x7fff0000, 0xffffffff, 0xffffffff
1442: long 0x7fff0000, 0xffffffff, 0xffffffff
1443: long 0x7fff0000, 0xffffffff, 0xffffffff
1444: long 0x7fff0000, 0xffffffff, 0xffffffff
1445: long 0x7fff0000, 0xffffffff, 0xffffffff
1446:
1447: DEF_FPCREGS:
1448: long 0x00000000, 0x00000000, 0x00000000
1449:
1450: ############################################################
1451:
1452: _print_str:
1453: mov.l %d0,-(%sp)
1454: mov.l (TESTTOP-0x80+0x0,%pc),%d0
1455: pea (TESTTOP-0x80,%pc,%d0)
1456: mov.l 0x4(%sp),%d0
1457: rtd &0x4
1458:
1459: _print_num:
1460: mov.l %d0,-(%sp)
1461: mov.l (TESTTOP-0x80+0x4,%pc),%d0
1462: pea (TESTTOP-0x80,%pc,%d0)
1463: mov.l 0x4(%sp),%d0
1464: rtd &0x4
1465:
1466: ############################################################
CVSweb