cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ftest.S (29214B)


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