[BACK]Return to ftest.s CVS log [TXT][DIR] Up to [local] / sys / arch / m68k / 060sp

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