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