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