Annotation of sys/arch/m68k/060sp/ftest.s, Revision 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