root/arch/m68k/ifpsp060/src/ftest.S

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

/* [<][>][^][v][top][bottom][index][help] */