18c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28c2ecf20Sopenharmony_ciMOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
38c2ecf20Sopenharmony_ciM68000 Hi-Performance Microprocessor Division
48c2ecf20Sopenharmony_ciM68060 Software Package
58c2ecf20Sopenharmony_ciProduction Release P1.00 -- October 10, 1994
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciM68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ciTHE SOFTWARE is provided on an "AS IS" basis and without warranty.
108c2ecf20Sopenharmony_ciTo the maximum extent permitted by applicable law,
118c2ecf20Sopenharmony_ciMOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
128c2ecf20Sopenharmony_ciINCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
138c2ecf20Sopenharmony_ciand any warranty against infringement with regard to the SOFTWARE
148c2ecf20Sopenharmony_ci(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ciTo the maximum extent permitted by applicable law,
178c2ecf20Sopenharmony_ciIN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
188c2ecf20Sopenharmony_ci(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
198c2ecf20Sopenharmony_ciBUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
208c2ecf20Sopenharmony_ciARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
218c2ecf20Sopenharmony_ciMotorola assumes no responsibility for the maintenance and support of the SOFTWARE.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciYou are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
248c2ecf20Sopenharmony_ciso long as this entire notice is retained without alteration in any modified and/or
258c2ecf20Sopenharmony_ciredistributed versions, and that such modified versions are clearly identified as such.
268c2ecf20Sopenharmony_ciNo licenses are granted by implication, estoppel or otherwise under any patents
278c2ecf20Sopenharmony_cior trademarks of Motorola, Inc.
288c2ecf20Sopenharmony_ci~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
298c2ecf20Sopenharmony_ci#############################################
308c2ecf20Sopenharmony_ciset	SREGS,		-64
318c2ecf20Sopenharmony_ciset	IREGS,		-128
328c2ecf20Sopenharmony_ciset	IFPREGS,	-224
338c2ecf20Sopenharmony_ciset	SFPREGS,	-320
348c2ecf20Sopenharmony_ciset	IFPCREGS,	-332
358c2ecf20Sopenharmony_ciset	SFPCREGS,	-344
368c2ecf20Sopenharmony_ciset	ICCR,		-346
378c2ecf20Sopenharmony_ciset	SCCR,		-348
388c2ecf20Sopenharmony_ciset	TESTCTR,	-352
398c2ecf20Sopenharmony_ciset	DATA,		-384
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci#############################################
428c2ecf20Sopenharmony_ciTESTTOP:
438c2ecf20Sopenharmony_ci	bra.l		_060TESTS_
448c2ecf20Sopenharmony_ci	short		0x0000
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	bra.l		_060TESTS_unimp
478c2ecf20Sopenharmony_ci	short		0x0000
488c2ecf20Sopenharmony_ci
498c2ecf20Sopenharmony_ci	bra.l		_060TESTS_enable
508c2ecf20Sopenharmony_ci	short		0x0000
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_cistart_str:
538c2ecf20Sopenharmony_ci	string		"Testing 68060 FPSP started:\n"
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_cistart_str_unimp:
568c2ecf20Sopenharmony_ci	string		"Testing 68060 FPSP unimplemented instruction started:\n"
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_cistart_str_enable:
598c2ecf20Sopenharmony_ci	string		"Testing 68060 FPSP exception enabled started:\n"
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_cipass_str:
628c2ecf20Sopenharmony_ci	string		"passed\n"
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_cifail_str:
658c2ecf20Sopenharmony_ci	string		" failed\n"
668c2ecf20Sopenharmony_ci
678c2ecf20Sopenharmony_ci	align		0x4
688c2ecf20Sopenharmony_cichk_test:
698c2ecf20Sopenharmony_ci	tst.l		%d0
708c2ecf20Sopenharmony_ci	bne.b		test_fail
718c2ecf20Sopenharmony_citest_pass:
728c2ecf20Sopenharmony_ci	pea		pass_str(%pc)
738c2ecf20Sopenharmony_ci	bsr.l		_print_str
748c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
758c2ecf20Sopenharmony_ci	rts
768c2ecf20Sopenharmony_citest_fail:
778c2ecf20Sopenharmony_ci	mov.l		%d1,-(%sp)
788c2ecf20Sopenharmony_ci	bsr.l		_print_num
798c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	pea		fail_str(%pc)
828c2ecf20Sopenharmony_ci	bsr.l		_print_str
838c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
848c2ecf20Sopenharmony_ci	rts
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci#############################################
878c2ecf20Sopenharmony_ci_060TESTS_:
888c2ecf20Sopenharmony_ci	link		%a6,&-384
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci	movm.l		&0x3f3c,-(%sp)
918c2ecf20Sopenharmony_ci	fmovm.x		&0xff,-(%sp)
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ci	pea		start_str(%pc)
948c2ecf20Sopenharmony_ci	bsr.l		_print_str
958c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci### effadd
988c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
998c2ecf20Sopenharmony_ci	pea		effadd_str(%pc)
1008c2ecf20Sopenharmony_ci	bsr.l		_print_str
1018c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci	bsr.l		effadd_0
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	bsr.l		chk_test
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci### unsupp
1088c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1098c2ecf20Sopenharmony_ci	pea		unsupp_str(%pc)
1108c2ecf20Sopenharmony_ci	bsr.l		_print_str
1118c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci	bsr.l		unsupp_0
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci	bsr.l		chk_test
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ci### ovfl non-maskable
1188c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1198c2ecf20Sopenharmony_ci	pea		ovfl_nm_str(%pc)
1208c2ecf20Sopenharmony_ci	bsr.l		_print_str
1218c2ecf20Sopenharmony_ci	bsr.l		ovfl_nm_0
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci	bsr.l		chk_test
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci### unfl non-maskable
1268c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1278c2ecf20Sopenharmony_ci	pea		unfl_nm_str(%pc)
1288c2ecf20Sopenharmony_ci	bsr.l		_print_str
1298c2ecf20Sopenharmony_ci	bsr.l		unfl_nm_0
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ci	bsr.l		chk_test
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci	movm.l		(%sp)+,&0x3cfc
1348c2ecf20Sopenharmony_ci	fmovm.x		(%sp)+,&0xff
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci	unlk		%a6
1378c2ecf20Sopenharmony_ci	rts
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci_060TESTS_unimp:
1408c2ecf20Sopenharmony_ci	link		%a6,&-384
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ci	movm.l		&0x3f3c,-(%sp)
1438c2ecf20Sopenharmony_ci	fmovm.x		&0xff,-(%sp)
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ci	pea		start_str_unimp(%pc)
1468c2ecf20Sopenharmony_ci	bsr.l		_print_str
1478c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci### unimp
1508c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1518c2ecf20Sopenharmony_ci	pea		unimp_str(%pc)
1528c2ecf20Sopenharmony_ci	bsr.l		_print_str
1538c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
1548c2ecf20Sopenharmony_ci
1558c2ecf20Sopenharmony_ci	bsr.l		unimp_0
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci	bsr.l		chk_test
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci	movm.l		(%sp)+,&0x3cfc
1608c2ecf20Sopenharmony_ci	fmovm.x		(%sp)+,&0xff
1618c2ecf20Sopenharmony_ci
1628c2ecf20Sopenharmony_ci	unlk		%a6
1638c2ecf20Sopenharmony_ci	rts
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci_060TESTS_enable:
1668c2ecf20Sopenharmony_ci	link		%a6,&-384
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ci	movm.l		&0x3f3c,-(%sp)
1698c2ecf20Sopenharmony_ci	fmovm.x		&0xff,-(%sp)
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci	pea		start_str_enable(%pc)
1728c2ecf20Sopenharmony_ci	bsr.l		_print_str
1738c2ecf20Sopenharmony_ci	addq.l		&0x4,%sp
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci### snan
1768c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1778c2ecf20Sopenharmony_ci	pea		snan_str(%pc)
1788c2ecf20Sopenharmony_ci	bsr.l		_print_str
1798c2ecf20Sopenharmony_ci	bsr.l		snan_0
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci	bsr.l		chk_test
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ci### operr
1848c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1858c2ecf20Sopenharmony_ci	pea		operr_str(%pc)
1868c2ecf20Sopenharmony_ci	bsr.l		_print_str
1878c2ecf20Sopenharmony_ci	bsr.l		operr_0
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ci	bsr.l		chk_test
1908c2ecf20Sopenharmony_ci
1918c2ecf20Sopenharmony_ci### ovfl
1928c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
1938c2ecf20Sopenharmony_ci	pea		ovfl_str(%pc)
1948c2ecf20Sopenharmony_ci	bsr.l		_print_str
1958c2ecf20Sopenharmony_ci	bsr.l		ovfl_0
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci	bsr.l		chk_test
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ci### unfl
2008c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
2018c2ecf20Sopenharmony_ci	pea		unfl_str(%pc)
2028c2ecf20Sopenharmony_ci	bsr.l		_print_str
2038c2ecf20Sopenharmony_ci	bsr.l		unfl_0
2048c2ecf20Sopenharmony_ci
2058c2ecf20Sopenharmony_ci	bsr.l		chk_test
2068c2ecf20Sopenharmony_ci
2078c2ecf20Sopenharmony_ci### dz
2088c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
2098c2ecf20Sopenharmony_ci	pea		dz_str(%pc)
2108c2ecf20Sopenharmony_ci	bsr.l		_print_str
2118c2ecf20Sopenharmony_ci	bsr.l		dz_0
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci	bsr.l		chk_test
2148c2ecf20Sopenharmony_ci
2158c2ecf20Sopenharmony_ci### inexact
2168c2ecf20Sopenharmony_ci	clr.l		TESTCTR(%a6)
2178c2ecf20Sopenharmony_ci	pea		inex_str(%pc)
2188c2ecf20Sopenharmony_ci	bsr.l		_print_str
2198c2ecf20Sopenharmony_ci	bsr.l		inex_0
2208c2ecf20Sopenharmony_ci
2218c2ecf20Sopenharmony_ci	bsr.l		chk_test
2228c2ecf20Sopenharmony_ci
2238c2ecf20Sopenharmony_ci	movm.l		(%sp)+,&0x3cfc
2248c2ecf20Sopenharmony_ci	fmovm.x		(%sp)+,&0xff
2258c2ecf20Sopenharmony_ci
2268c2ecf20Sopenharmony_ci	unlk		%a6
2278c2ecf20Sopenharmony_ci	rts
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci#############################################
2308c2ecf20Sopenharmony_ci#############################################
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciunimp_str:
2338c2ecf20Sopenharmony_ci	string		"\tUnimplemented FP instructions..."
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_ci	align		0x4
2368c2ecf20Sopenharmony_ciunimp_0:
2378c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
2388c2ecf20Sopenharmony_ci
2398c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
2408c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
2418c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
2428c2ecf20Sopenharmony_ci
2438c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
2448c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
2458c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
2468c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ci	mov.l		&0x40000000,DATA+0x0(%a6)
2498c2ecf20Sopenharmony_ci	mov.l		&0xc90fdaa2,DATA+0x4(%a6)
2508c2ecf20Sopenharmony_ci	mov.l		&0x2168c235,DATA+0x8(%a6)
2518c2ecf20Sopenharmony_ci
2528c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
2538c2ecf20Sopenharmony_ciunimp_0_pc:
2548c2ecf20Sopenharmony_ci	fsin.x		DATA(%a6),%fp0
2558c2ecf20Sopenharmony_ci
2568c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
2578c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
2588c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
2598c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ci	mov.l		&0xbfbf0000,IFPREGS+0x0(%a6)
2628c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
2638c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
2648c2ecf20Sopenharmony_ci	mov.l		&0x08000208,IFPCREGS+0x4(%a6)
2658c2ecf20Sopenharmony_ci	lea		unimp_0_pc(%pc),%a0
2668c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
2678c2ecf20Sopenharmony_ci
2688c2ecf20Sopenharmony_ci	bsr.l		chkregs
2698c2ecf20Sopenharmony_ci	tst.b		%d0
2708c2ecf20Sopenharmony_ci	bne.l		error
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
2738c2ecf20Sopenharmony_ci	tst.b		%d0
2748c2ecf20Sopenharmony_ci	bne.l		error
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ciunimp_1:
2778c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
2788c2ecf20Sopenharmony_ci
2798c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
2808c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
2818c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
2828c2ecf20Sopenharmony_ci
2838c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
2848c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
2858c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
2868c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
2878c2ecf20Sopenharmony_ci
2888c2ecf20Sopenharmony_ci	mov.l		&0x3ffe0000,DATA+0x0(%a6)
2898c2ecf20Sopenharmony_ci	mov.l		&0xc90fdaa2,DATA+0x4(%a6)
2908c2ecf20Sopenharmony_ci	mov.l		&0x2168c235,DATA+0x8(%a6)
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
2938c2ecf20Sopenharmony_ciunimp_1_pc:
2948c2ecf20Sopenharmony_ci	ftan.x		DATA(%a6),%fp0
2958c2ecf20Sopenharmony_ci
2968c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
2978c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
2988c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
2998c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ci	mov.l		&0x3fff0000,IFPREGS+0x0(%a6)
3028c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
3038c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
3048c2ecf20Sopenharmony_ci	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
3058c2ecf20Sopenharmony_ci	lea		unimp_1_pc(%pc),%a0
3068c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
3078c2ecf20Sopenharmony_ci
3088c2ecf20Sopenharmony_ci	bsr.l		chkregs
3098c2ecf20Sopenharmony_ci	tst.b		%d0
3108c2ecf20Sopenharmony_ci	bne.l		error
3118c2ecf20Sopenharmony_ci
3128c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
3138c2ecf20Sopenharmony_ci	tst.b		%d0
3148c2ecf20Sopenharmony_ci	bne.l		error
3158c2ecf20Sopenharmony_ci
3168c2ecf20Sopenharmony_ci# fmovecr
3178c2ecf20Sopenharmony_ciunimp_2:
3188c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
3218c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
3228c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
3238c2ecf20Sopenharmony_ci
3248c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
3258c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
3268c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
3278c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
3288c2ecf20Sopenharmony_ci
3298c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
3308c2ecf20Sopenharmony_ciunimp_2_pc:
3318c2ecf20Sopenharmony_ci	fmovcr.x	&0x31,%fp0
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
3348c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
3358c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
3368c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_ci	mov.l		&0x40000000,IFPREGS+0x0(%a6)
3398c2ecf20Sopenharmony_ci	mov.l		&0x935d8ddd,IFPREGS+0x4(%a6)
3408c2ecf20Sopenharmony_ci	mov.l		&0xaaa8ac17,IFPREGS+0x8(%a6)
3418c2ecf20Sopenharmony_ci	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
3428c2ecf20Sopenharmony_ci	lea		unimp_2_pc(%pc),%a0
3438c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
3448c2ecf20Sopenharmony_ci
3458c2ecf20Sopenharmony_ci	bsr.l		chkregs
3468c2ecf20Sopenharmony_ci	tst.b		%d0
3478c2ecf20Sopenharmony_ci	bne.l		error
3488c2ecf20Sopenharmony_ci
3498c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
3508c2ecf20Sopenharmony_ci	tst.b		%d0
3518c2ecf20Sopenharmony_ci	bne.l		error
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ci# fscc
3548c2ecf20Sopenharmony_ciunimp_3:
3558c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
3568c2ecf20Sopenharmony_ci
3578c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
3588c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
3598c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
3608c2ecf20Sopenharmony_ci
3618c2ecf20Sopenharmony_ci	fmov.l		&0x0f000000,%fpsr
3628c2ecf20Sopenharmony_ci	mov.l		&0x00,%d7
3638c2ecf20Sopenharmony_ci
3648c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
3658c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
3668c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
3678c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
3688c2ecf20Sopenharmony_ci
3698c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
3708c2ecf20Sopenharmony_ciunimp_3_pc:
3718c2ecf20Sopenharmony_ci	fsgt		%d7
3728c2ecf20Sopenharmony_ci
3738c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
3748c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
3758c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
3768c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
3778c2ecf20Sopenharmony_ci	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
3788c2ecf20Sopenharmony_ci	lea		unimp_3_pc(%pc),%a0
3798c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
3808c2ecf20Sopenharmony_ci
3818c2ecf20Sopenharmony_ci	bsr.l		chkregs
3828c2ecf20Sopenharmony_ci	tst.b		%d0
3838c2ecf20Sopenharmony_ci	bne.l		error
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
3868c2ecf20Sopenharmony_ci	tst.b		%d0
3878c2ecf20Sopenharmony_ci	bne.l		error
3888c2ecf20Sopenharmony_ci
3898c2ecf20Sopenharmony_ci# fdbcc
3908c2ecf20Sopenharmony_ciunimp_4:
3918c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
3928c2ecf20Sopenharmony_ci
3938c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
3948c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
3958c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
3968c2ecf20Sopenharmony_ci
3978c2ecf20Sopenharmony_ci	fmov.l		&0x0f000000,%fpsr
3988c2ecf20Sopenharmony_ci	mov.l		&0x2,%d7
3998c2ecf20Sopenharmony_ci
4008c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
4018c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
4028c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
4038c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
4068c2ecf20Sopenharmony_ciunimp_4_pc:
4078c2ecf20Sopenharmony_ci	fdbgt.w		%d7,unimp_4_pc
4088c2ecf20Sopenharmony_ci
4098c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
4108c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
4118c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
4128c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
4138c2ecf20Sopenharmony_ci	mov.w		&0xffff,IREGS+28+2(%a6)
4148c2ecf20Sopenharmony_ci	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
4158c2ecf20Sopenharmony_ci	lea		unimp_4_pc(%pc),%a0
4168c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
4178c2ecf20Sopenharmony_ci
4188c2ecf20Sopenharmony_ci	bsr.l		chkregs
4198c2ecf20Sopenharmony_ci	tst.b		%d0
4208c2ecf20Sopenharmony_ci	bne.l		error
4218c2ecf20Sopenharmony_ci
4228c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
4238c2ecf20Sopenharmony_ci	tst.b		%d0
4248c2ecf20Sopenharmony_ci	bne.l		error
4258c2ecf20Sopenharmony_ci
4268c2ecf20Sopenharmony_ci# ftrapcc
4278c2ecf20Sopenharmony_ciunimp_5:
4288c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
4298c2ecf20Sopenharmony_ci
4308c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
4318c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
4328c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
4338c2ecf20Sopenharmony_ci
4348c2ecf20Sopenharmony_ci	fmov.l		&0x0f000000,%fpsr
4358c2ecf20Sopenharmony_ci
4368c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
4378c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
4388c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
4398c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
4408c2ecf20Sopenharmony_ci
4418c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
4428c2ecf20Sopenharmony_ciunimp_5_pc:
4438c2ecf20Sopenharmony_ci	ftpgt.l		&0xabcdef01
4448c2ecf20Sopenharmony_ci
4458c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
4468c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
4478c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
4488c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
4498c2ecf20Sopenharmony_ci	mov.l		&0x0f008080,IFPCREGS+0x4(%a6)
4508c2ecf20Sopenharmony_ci	lea		unimp_5_pc(%pc),%a0
4518c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
4528c2ecf20Sopenharmony_ci
4538c2ecf20Sopenharmony_ci	bsr.l		chkregs
4548c2ecf20Sopenharmony_ci	tst.b		%d0
4558c2ecf20Sopenharmony_ci	bne.l		error
4568c2ecf20Sopenharmony_ci
4578c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
4588c2ecf20Sopenharmony_ci	tst.b		%d0
4598c2ecf20Sopenharmony_ci	bne.l		error
4608c2ecf20Sopenharmony_ci
4618c2ecf20Sopenharmony_ci	clr.l		%d0
4628c2ecf20Sopenharmony_ci	rts
4638c2ecf20Sopenharmony_ci
4648c2ecf20Sopenharmony_ci#############################################
4658c2ecf20Sopenharmony_ci
4668c2ecf20Sopenharmony_cieffadd_str:
4678c2ecf20Sopenharmony_ci	string		"\tUnimplemented <ea>..."
4688c2ecf20Sopenharmony_ci
4698c2ecf20Sopenharmony_ci	align		0x4
4708c2ecf20Sopenharmony_cieffadd_0:
4718c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
4728c2ecf20Sopenharmony_ci
4738c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
4748c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
4758c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
4768c2ecf20Sopenharmony_ci
4778c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
4788c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
4798c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
4808c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
4818c2ecf20Sopenharmony_ci
4828c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp0
4838c2ecf20Sopenharmony_ci
4848c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
4858c2ecf20Sopenharmony_cieffadd_0_pc:
4868c2ecf20Sopenharmony_ci	fmul.x		&0xc00000008000000000000000,%fp0
4878c2ecf20Sopenharmony_ci
4888c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
4898c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
4908c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
4918c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
4928c2ecf20Sopenharmony_ci
4938c2ecf20Sopenharmony_ci	mov.l		&0xc0010000,IFPREGS+0x0(%a6)
4948c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
4958c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
4968c2ecf20Sopenharmony_ci	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
4978c2ecf20Sopenharmony_ci	lea		effadd_0_pc(%pc),%a0
4988c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
4998c2ecf20Sopenharmony_ci
5008c2ecf20Sopenharmony_ci	bsr.l		chkregs
5018c2ecf20Sopenharmony_ci	tst.b		%d0
5028c2ecf20Sopenharmony_ci	bne.l		error
5038c2ecf20Sopenharmony_ci
5048c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
5058c2ecf20Sopenharmony_ci	tst.b		%d0
5068c2ecf20Sopenharmony_ci	bne.l		error
5078c2ecf20Sopenharmony_ci
5088c2ecf20Sopenharmony_cieffadd_1:
5098c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
5108c2ecf20Sopenharmony_ci
5118c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
5128c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
5138c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
5148c2ecf20Sopenharmony_ci
5158c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
5168c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
5178c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
5188c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
5198c2ecf20Sopenharmony_ci
5208c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
5218c2ecf20Sopenharmony_cieffadd_1_pc:
5228c2ecf20Sopenharmony_ci	fabs.p		&0xc12300012345678912345678,%fp0
5238c2ecf20Sopenharmony_ci
5248c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
5258c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
5268c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
5278c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
5288c2ecf20Sopenharmony_ci
5298c2ecf20Sopenharmony_ci	mov.l		&0x3e660000,IFPREGS+0x0(%a6)
5308c2ecf20Sopenharmony_ci	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6)
5318c2ecf20Sopenharmony_ci	mov.l		&0xd14035bc,IFPREGS+0x8(%a6)
5328c2ecf20Sopenharmony_ci	mov.l		&0x00000108,IFPCREGS+0x4(%a6)
5338c2ecf20Sopenharmony_ci	lea		effadd_1_pc(%pc),%a0
5348c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
5358c2ecf20Sopenharmony_ci
5368c2ecf20Sopenharmony_ci	bsr.l		chkregs
5378c2ecf20Sopenharmony_ci	tst.b		%d0
5388c2ecf20Sopenharmony_ci	bne.l		error
5398c2ecf20Sopenharmony_ci
5408c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
5418c2ecf20Sopenharmony_ci	tst.b		%d0
5428c2ecf20Sopenharmony_ci	bne.l		error
5438c2ecf20Sopenharmony_ci
5448c2ecf20Sopenharmony_cifmovml_0:
5458c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
5468c2ecf20Sopenharmony_ci
5478c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
5488c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
5498c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
5508c2ecf20Sopenharmony_ci
5518c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
5528c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
5538c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
5548c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
5558c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
5568c2ecf20Sopenharmony_ci
5578c2ecf20Sopenharmony_ci	fmovm.l		&0xffffffffffffffff,%fpcr,%fpsr
5588c2ecf20Sopenharmony_ci
5598c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
5608c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
5618c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
5628c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
5638c2ecf20Sopenharmony_ci	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
5648c2ecf20Sopenharmony_ci	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
5658c2ecf20Sopenharmony_ci
5668c2ecf20Sopenharmony_ci	bsr.l		chkregs
5678c2ecf20Sopenharmony_ci	tst.b		%d0
5688c2ecf20Sopenharmony_ci	bne.l		error
5698c2ecf20Sopenharmony_ci
5708c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
5718c2ecf20Sopenharmony_ci	tst.b		%d0
5728c2ecf20Sopenharmony_ci	bne.l		error
5738c2ecf20Sopenharmony_ci
5748c2ecf20Sopenharmony_cifmovml_1:
5758c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
5768c2ecf20Sopenharmony_ci
5778c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
5788c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
5798c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
5808c2ecf20Sopenharmony_ci
5818c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
5828c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
5838c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
5848c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
5858c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
5868c2ecf20Sopenharmony_ci
5878c2ecf20Sopenharmony_ci	fmovm.l		&0xffffffffffffffff,%fpcr,%fpiar
5888c2ecf20Sopenharmony_ci
5898c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
5908c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
5918c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
5928c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
5938c2ecf20Sopenharmony_ci	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
5948c2ecf20Sopenharmony_ci	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ci	bsr.l		chkregs
5978c2ecf20Sopenharmony_ci	tst.b		%d0
5988c2ecf20Sopenharmony_ci	bne.l		error
5998c2ecf20Sopenharmony_ci
6008c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
6018c2ecf20Sopenharmony_ci	tst.b		%d0
6028c2ecf20Sopenharmony_ci	bne.l		error
6038c2ecf20Sopenharmony_ci
6048c2ecf20Sopenharmony_cifmovml_2:
6058c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
6068c2ecf20Sopenharmony_ci
6078c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
6088c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
6098c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
6108c2ecf20Sopenharmony_ci
6118c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
6128c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
6138c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
6148c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
6158c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
6168c2ecf20Sopenharmony_ci
6178c2ecf20Sopenharmony_ci	fmovm.l		&0xffffffffffffffff,%fpsr,%fpiar
6188c2ecf20Sopenharmony_ci
6198c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
6208c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
6218c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
6228c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
6238c2ecf20Sopenharmony_ci	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
6248c2ecf20Sopenharmony_ci	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
6258c2ecf20Sopenharmony_ci
6268c2ecf20Sopenharmony_ci	bsr.l		chkregs
6278c2ecf20Sopenharmony_ci	tst.b		%d0
6288c2ecf20Sopenharmony_ci	bne.l		error
6298c2ecf20Sopenharmony_ci
6308c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
6318c2ecf20Sopenharmony_ci	tst.b		%d0
6328c2ecf20Sopenharmony_ci	bne.l		error
6338c2ecf20Sopenharmony_ci
6348c2ecf20Sopenharmony_cifmovml_3:
6358c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
6368c2ecf20Sopenharmony_ci
6378c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
6388c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
6398c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
6408c2ecf20Sopenharmony_ci
6418c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
6428c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
6438c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
6448c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
6458c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
6468c2ecf20Sopenharmony_ci
6478c2ecf20Sopenharmony_ci	fmovm.l		&0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar
6488c2ecf20Sopenharmony_ci
6498c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
6508c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
6518c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
6528c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
6538c2ecf20Sopenharmony_ci	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6)
6548c2ecf20Sopenharmony_ci	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6)
6558c2ecf20Sopenharmony_ci	mov.l		&0xffffffff,IFPCREGS+0x8(%a6)
6568c2ecf20Sopenharmony_ci
6578c2ecf20Sopenharmony_ci	bsr.l		chkregs
6588c2ecf20Sopenharmony_ci	tst.b		%d0
6598c2ecf20Sopenharmony_ci	bne.l		error
6608c2ecf20Sopenharmony_ci
6618c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
6628c2ecf20Sopenharmony_ci	tst.b		%d0
6638c2ecf20Sopenharmony_ci	bne.l		error
6648c2ecf20Sopenharmony_ci
6658c2ecf20Sopenharmony_ci# fmovmx dynamic
6668c2ecf20Sopenharmony_cifmovmx_0:
6678c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
6688c2ecf20Sopenharmony_ci
6698c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
6708c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
6718c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
6728c2ecf20Sopenharmony_ci
6738c2ecf20Sopenharmony_ci	fmov.b		&0x1,%fp0
6748c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp1
6758c2ecf20Sopenharmony_ci	fmov.b		&0x3,%fp2
6768c2ecf20Sopenharmony_ci	fmov.b		&0x4,%fp3
6778c2ecf20Sopenharmony_ci	fmov.b		&0x5,%fp4
6788c2ecf20Sopenharmony_ci	fmov.b		&0x6,%fp5
6798c2ecf20Sopenharmony_ci	fmov.b		&0x7,%fp6
6808c2ecf20Sopenharmony_ci	fmov.b		&0x8,%fp7
6818c2ecf20Sopenharmony_ci
6828c2ecf20Sopenharmony_ci	fmov.l		&0x0,%fpiar
6838c2ecf20Sopenharmony_ci	mov.l		&0xffffffaa,%d0
6848c2ecf20Sopenharmony_ci
6858c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
6868c2ecf20Sopenharmony_ci	movm.l		&0xffff,IREGS(%a6)
6878c2ecf20Sopenharmony_ci
6888c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
6898c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
6908c2ecf20Sopenharmony_ci
6918c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
6928c2ecf20Sopenharmony_ci
6938c2ecf20Sopenharmony_ci	fmovm.x		%d0,-(%sp)
6948c2ecf20Sopenharmony_ci
6958c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
6968c2ecf20Sopenharmony_ci
6978c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
6988c2ecf20Sopenharmony_ci
6998c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp1
7008c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp3
7018c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp5
7028c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp7
7038c2ecf20Sopenharmony_ci
7048c2ecf20Sopenharmony_ci	fmov.x		(%sp)+,%fp1
7058c2ecf20Sopenharmony_ci	fmov.x		(%sp)+,%fp3
7068c2ecf20Sopenharmony_ci	fmov.x		(%sp)+,%fp5
7078c2ecf20Sopenharmony_ci	fmov.x		(%sp)+,%fp7
7088c2ecf20Sopenharmony_ci
7098c2ecf20Sopenharmony_ci	movm.l		&0xffff,SREGS(%a6)
7108c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
7118c2ecf20Sopenharmony_ci
7128c2ecf20Sopenharmony_ci	bsr.l		chkregs
7138c2ecf20Sopenharmony_ci	tst.b		%d0
7148c2ecf20Sopenharmony_ci	bne.l		error
7158c2ecf20Sopenharmony_ci
7168c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
7178c2ecf20Sopenharmony_ci	tst.b		%d0
7188c2ecf20Sopenharmony_ci	bne.l		error
7198c2ecf20Sopenharmony_ci
7208c2ecf20Sopenharmony_cifmovmx_1:
7218c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
7228c2ecf20Sopenharmony_ci
7238c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
7248c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
7258c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
7268c2ecf20Sopenharmony_ci
7278c2ecf20Sopenharmony_ci	fmov.b		&0x1,%fp0
7288c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp1
7298c2ecf20Sopenharmony_ci	fmov.b		&0x3,%fp2
7308c2ecf20Sopenharmony_ci	fmov.b		&0x4,%fp3
7318c2ecf20Sopenharmony_ci	fmov.b		&0x5,%fp4
7328c2ecf20Sopenharmony_ci	fmov.b		&0x6,%fp5
7338c2ecf20Sopenharmony_ci	fmov.b		&0x7,%fp6
7348c2ecf20Sopenharmony_ci	fmov.b		&0x8,%fp7
7358c2ecf20Sopenharmony_ci
7368c2ecf20Sopenharmony_ci	fmov.x		%fp6,-(%sp)
7378c2ecf20Sopenharmony_ci	fmov.x		%fp4,-(%sp)
7388c2ecf20Sopenharmony_ci	fmov.x		%fp2,-(%sp)
7398c2ecf20Sopenharmony_ci	fmov.x		%fp0,-(%sp)
7408c2ecf20Sopenharmony_ci
7418c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
7428c2ecf20Sopenharmony_ci
7438c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp6
7448c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp4
7458c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp2
7468c2ecf20Sopenharmony_ci	fmov.s		&0x7f800000,%fp0
7478c2ecf20Sopenharmony_ci
7488c2ecf20Sopenharmony_ci	fmov.l		&0x0,%fpiar
7498c2ecf20Sopenharmony_ci	fmov.l		&0x0,%fpsr
7508c2ecf20Sopenharmony_ci	mov.l		&0xffffffaa,%d0
7518c2ecf20Sopenharmony_ci
7528c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
7538c2ecf20Sopenharmony_ci	movm.l		&0xffff,IREGS(%a6)
7548c2ecf20Sopenharmony_ci
7558c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
7568c2ecf20Sopenharmony_ci
7578c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
7588c2ecf20Sopenharmony_ci
7598c2ecf20Sopenharmony_ci	fmovm.x		(%sp)+,%d0
7608c2ecf20Sopenharmony_ci
7618c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
7628c2ecf20Sopenharmony_ci
7638c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
7648c2ecf20Sopenharmony_ci
7658c2ecf20Sopenharmony_ci	movm.l		&0xffff,SREGS(%a6)
7668c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
7678c2ecf20Sopenharmony_ci
7688c2ecf20Sopenharmony_ci	bsr.l		chkregs
7698c2ecf20Sopenharmony_ci	tst.b		%d0
7708c2ecf20Sopenharmony_ci	bne.l		error
7718c2ecf20Sopenharmony_ci
7728c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
7738c2ecf20Sopenharmony_ci	tst.b		%d0
7748c2ecf20Sopenharmony_ci	bne.l		error
7758c2ecf20Sopenharmony_ci
7768c2ecf20Sopenharmony_cifmovmx_2:
7778c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
7788c2ecf20Sopenharmony_ci
7798c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
7808c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
7818c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
7828c2ecf20Sopenharmony_ci
7838c2ecf20Sopenharmony_ci	fmov.b		&0x1,%fp0
7848c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp1
7858c2ecf20Sopenharmony_ci	fmov.b		&0x3,%fp2
7868c2ecf20Sopenharmony_ci	fmov.b		&0x4,%fp3
7878c2ecf20Sopenharmony_ci	fmov.b		&0x5,%fp4
7888c2ecf20Sopenharmony_ci	fmov.b		&0x6,%fp5
7898c2ecf20Sopenharmony_ci	fmov.b		&0x7,%fp6
7908c2ecf20Sopenharmony_ci	fmov.b		&0x8,%fp7
7918c2ecf20Sopenharmony_ci
7928c2ecf20Sopenharmony_ci	fmov.l		&0x0,%fpiar
7938c2ecf20Sopenharmony_ci	mov.l		&0xffffff00,%d0
7948c2ecf20Sopenharmony_ci
7958c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
7968c2ecf20Sopenharmony_ci	movm.l		&0xffff,IREGS(%a6)
7978c2ecf20Sopenharmony_ci
7988c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
7998c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
8008c2ecf20Sopenharmony_ci
8018c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
8028c2ecf20Sopenharmony_ci
8038c2ecf20Sopenharmony_ci	fmovm.x		%d0,-(%sp)
8048c2ecf20Sopenharmony_ci
8058c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
8068c2ecf20Sopenharmony_ci
8078c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
8088c2ecf20Sopenharmony_ci
8098c2ecf20Sopenharmony_ci	movm.l		&0xffff,SREGS(%a6)
8108c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
8118c2ecf20Sopenharmony_ci
8128c2ecf20Sopenharmony_ci	bsr.l		chkregs
8138c2ecf20Sopenharmony_ci	tst.b		%d0
8148c2ecf20Sopenharmony_ci	bne.l		error
8158c2ecf20Sopenharmony_ci
8168c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
8178c2ecf20Sopenharmony_ci	tst.b		%d0
8188c2ecf20Sopenharmony_ci	bne.l		error
8198c2ecf20Sopenharmony_ci
8208c2ecf20Sopenharmony_ci	clr.l		%d0
8218c2ecf20Sopenharmony_ci	rts
8228c2ecf20Sopenharmony_ci
8238c2ecf20Sopenharmony_ci###########################################################
8248c2ecf20Sopenharmony_ci
8258c2ecf20Sopenharmony_ci# This test will take a non-maskable overflow directly.
8268c2ecf20Sopenharmony_ciovfl_nm_str:
8278c2ecf20Sopenharmony_ci	string		"\tNon-maskable overflow..."
8288c2ecf20Sopenharmony_ci
8298c2ecf20Sopenharmony_ci	align		0x4
8308c2ecf20Sopenharmony_ciovfl_nm_0:
8318c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
8328c2ecf20Sopenharmony_ci
8338c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
8348c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
8358c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
8368c2ecf20Sopenharmony_ci
8378c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
8388c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
8398c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
8408c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
8418c2ecf20Sopenharmony_ci
8428c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp0
8438c2ecf20Sopenharmony_ci	mov.l		&0x7ffe0000,DATA+0x0(%a6)
8448c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
8458c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
8468c2ecf20Sopenharmony_ci
8478c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
8488c2ecf20Sopenharmony_ciovfl_nm_0_pc:
8498c2ecf20Sopenharmony_ci	fmul.x		DATA(%a6),%fp0
8508c2ecf20Sopenharmony_ci
8518c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
8528c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
8538c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
8548c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
8558c2ecf20Sopenharmony_ci
8568c2ecf20Sopenharmony_ci	mov.l		&0x7fff0000,IFPREGS+0x0(%a6)
8578c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x4(%a6)
8588c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
8598c2ecf20Sopenharmony_ci	mov.l		&0x02001048,IFPCREGS+0x4(%a6)
8608c2ecf20Sopenharmony_ci	lea		ovfl_nm_0_pc(%pc),%a0
8618c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
8628c2ecf20Sopenharmony_ci
8638c2ecf20Sopenharmony_ci	bsr.l		chkregs
8648c2ecf20Sopenharmony_ci	tst.b		%d0
8658c2ecf20Sopenharmony_ci	bne.l		error
8668c2ecf20Sopenharmony_ci
8678c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
8688c2ecf20Sopenharmony_ci	tst.b		%d0
8698c2ecf20Sopenharmony_ci	bne.l		error
8708c2ecf20Sopenharmony_ci
8718c2ecf20Sopenharmony_ci	clr.l		%d0
8728c2ecf20Sopenharmony_ci	rts
8738c2ecf20Sopenharmony_ci
8748c2ecf20Sopenharmony_ci###########################################################
8758c2ecf20Sopenharmony_ci
8768c2ecf20Sopenharmony_ci# This test will take an overflow directly.
8778c2ecf20Sopenharmony_ciovfl_str:
8788c2ecf20Sopenharmony_ci	string		"\tEnabled overflow..."
8798c2ecf20Sopenharmony_ci
8808c2ecf20Sopenharmony_ci	align		0x4
8818c2ecf20Sopenharmony_ciovfl_0:
8828c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
8838c2ecf20Sopenharmony_ci
8848c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
8858c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
8868c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
8878c2ecf20Sopenharmony_ci
8888c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
8898c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
8908c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
8918c2ecf20Sopenharmony_ci	fmov.l		&0x00001000,%fpcr
8928c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
8938c2ecf20Sopenharmony_ci
8948c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp0
8958c2ecf20Sopenharmony_ci	mov.l		&0x7ffe0000,DATA+0x0(%a6)
8968c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
8978c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
8988c2ecf20Sopenharmony_ci
8998c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
9008c2ecf20Sopenharmony_ciovfl_0_pc:
9018c2ecf20Sopenharmony_ci	fmul.x		DATA(%a6),%fp0
9028c2ecf20Sopenharmony_ci
9038c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
9048c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
9058c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
9068c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
9078c2ecf20Sopenharmony_ci
9088c2ecf20Sopenharmony_ci	mov.l		&0x7fff0000,IFPREGS+0x0(%a6)
9098c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x4(%a6)
9108c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
9118c2ecf20Sopenharmony_ci	mov.l		&0x02001048,IFPCREGS+0x4(%a6)
9128c2ecf20Sopenharmony_ci	lea		ovfl_0_pc(%pc),%a0
9138c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
9148c2ecf20Sopenharmony_ci
9158c2ecf20Sopenharmony_ci	bsr.l		chkregs
9168c2ecf20Sopenharmony_ci	tst.b		%d0
9178c2ecf20Sopenharmony_ci	bne.l		error
9188c2ecf20Sopenharmony_ci
9198c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
9208c2ecf20Sopenharmony_ci	tst.b		%d0
9218c2ecf20Sopenharmony_ci	bne.l		error
9228c2ecf20Sopenharmony_ci
9238c2ecf20Sopenharmony_ci	clr.l		%d0
9248c2ecf20Sopenharmony_ci	rts
9258c2ecf20Sopenharmony_ci
9268c2ecf20Sopenharmony_ci#####################################################################
9278c2ecf20Sopenharmony_ci
9288c2ecf20Sopenharmony_ci# This test will take an underflow directly.
9298c2ecf20Sopenharmony_ciunfl_str:
9308c2ecf20Sopenharmony_ci	string		"\tEnabled underflow..."
9318c2ecf20Sopenharmony_ci
9328c2ecf20Sopenharmony_ci	align		0x4
9338c2ecf20Sopenharmony_ciunfl_0:
9348c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
9358c2ecf20Sopenharmony_ci
9368c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
9378c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
9388c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
9398c2ecf20Sopenharmony_ci
9408c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
9418c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
9428c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
9438c2ecf20Sopenharmony_ci	fmov.l		&0x00000800,%fpcr
9448c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
9458c2ecf20Sopenharmony_ci
9468c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x0(%a6)
9478c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
9488c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
9498c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
9508c2ecf20Sopenharmony_ci
9518c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
9528c2ecf20Sopenharmony_ciunfl_0_pc:
9538c2ecf20Sopenharmony_ci	fdiv.b		&0x2,%fp0
9548c2ecf20Sopenharmony_ci
9558c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
9568c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
9578c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
9588c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
9598c2ecf20Sopenharmony_ci
9608c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x0(%a6)
9618c2ecf20Sopenharmony_ci	mov.l		&0x40000000,IFPREGS+0x4(%a6)
9628c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
9638c2ecf20Sopenharmony_ci	mov.l		&0x00000800,IFPCREGS+0x4(%a6)
9648c2ecf20Sopenharmony_ci	lea		unfl_0_pc(%pc),%a0
9658c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
9668c2ecf20Sopenharmony_ci
9678c2ecf20Sopenharmony_ci	bsr.l		chkregs
9688c2ecf20Sopenharmony_ci	tst.b		%d0
9698c2ecf20Sopenharmony_ci	bne.l		error
9708c2ecf20Sopenharmony_ci
9718c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
9728c2ecf20Sopenharmony_ci	tst.b		%d0
9738c2ecf20Sopenharmony_ci	bne.l		error
9748c2ecf20Sopenharmony_ci
9758c2ecf20Sopenharmony_ci	clr.l		%d0
9768c2ecf20Sopenharmony_ci	rts
9778c2ecf20Sopenharmony_ci
9788c2ecf20Sopenharmony_ci#####################################################################
9798c2ecf20Sopenharmony_ci
9808c2ecf20Sopenharmony_ci# This test will take a non-maskable underflow directly.
9818c2ecf20Sopenharmony_ciunfl_nm_str:
9828c2ecf20Sopenharmony_ci	string		"\tNon-maskable underflow..."
9838c2ecf20Sopenharmony_ci
9848c2ecf20Sopenharmony_ci	align		0x4
9858c2ecf20Sopenharmony_ciunfl_nm_0:
9868c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
9878c2ecf20Sopenharmony_ci
9888c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
9898c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
9908c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
9918c2ecf20Sopenharmony_ci
9928c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
9938c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
9948c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
9958c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
9968c2ecf20Sopenharmony_ci
9978c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x0(%a6)
9988c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
9998c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
10008c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
10018c2ecf20Sopenharmony_ci
10028c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
10038c2ecf20Sopenharmony_ciunfl_nm_0_pc:
10048c2ecf20Sopenharmony_ci	fdiv.b		&0x2,%fp0
10058c2ecf20Sopenharmony_ci
10068c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
10078c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
10088c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
10098c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
10108c2ecf20Sopenharmony_ci
10118c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x0(%a6)
10128c2ecf20Sopenharmony_ci	mov.l		&0x40000000,IFPREGS+0x4(%a6)
10138c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
10148c2ecf20Sopenharmony_ci	mov.l		&0x00000800,IFPCREGS+0x4(%a6)
10158c2ecf20Sopenharmony_ci	lea		unfl_nm_0_pc(%pc),%a0
10168c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
10178c2ecf20Sopenharmony_ci
10188c2ecf20Sopenharmony_ci	bsr.l		chkregs
10198c2ecf20Sopenharmony_ci	tst.b		%d0
10208c2ecf20Sopenharmony_ci	bne.l		error
10218c2ecf20Sopenharmony_ci
10228c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
10238c2ecf20Sopenharmony_ci	tst.b		%d0
10248c2ecf20Sopenharmony_ci	bne.l		error
10258c2ecf20Sopenharmony_ci
10268c2ecf20Sopenharmony_ci	clr.l		%d0
10278c2ecf20Sopenharmony_ci	rts
10288c2ecf20Sopenharmony_ci
10298c2ecf20Sopenharmony_ci#####################################################################
10308c2ecf20Sopenharmony_ci
10318c2ecf20Sopenharmony_ciinex_str:
10328c2ecf20Sopenharmony_ci	string		"\tEnabled inexact..."
10338c2ecf20Sopenharmony_ci
10348c2ecf20Sopenharmony_ci	align		0x4
10358c2ecf20Sopenharmony_ciinex_0:
10368c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
10378c2ecf20Sopenharmony_ci
10388c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
10398c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
10408c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
10418c2ecf20Sopenharmony_ci
10428c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
10438c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
10448c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
10458c2ecf20Sopenharmony_ci	fmov.l		&0x00000200,%fpcr		# enable inexact
10468c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
10478c2ecf20Sopenharmony_ci
10488c2ecf20Sopenharmony_ci	mov.l		&0x50000000,DATA+0x0(%a6)
10498c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
10508c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
10518c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
10528c2ecf20Sopenharmony_ci
10538c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
10548c2ecf20Sopenharmony_ciinex_0_pc:
10558c2ecf20Sopenharmony_ci	fadd.b		&0x2,%fp0
10568c2ecf20Sopenharmony_ci
10578c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
10588c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
10598c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
10608c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
10618c2ecf20Sopenharmony_ci
10628c2ecf20Sopenharmony_ci	mov.l		&0x50000000,IFPREGS+0x0(%a6)
10638c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
10648c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
10658c2ecf20Sopenharmony_ci	mov.l		&0x00000208,IFPCREGS+0x4(%a6)
10668c2ecf20Sopenharmony_ci	lea		inex_0_pc(%pc),%a0
10678c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
10688c2ecf20Sopenharmony_ci
10698c2ecf20Sopenharmony_ci	bsr.l		chkregs
10708c2ecf20Sopenharmony_ci	tst.b		%d0
10718c2ecf20Sopenharmony_ci	bne.l		error
10728c2ecf20Sopenharmony_ci
10738c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
10748c2ecf20Sopenharmony_ci	tst.b		%d0
10758c2ecf20Sopenharmony_ci	bne.l		error
10768c2ecf20Sopenharmony_ci
10778c2ecf20Sopenharmony_ci	clr.l		%d0
10788c2ecf20Sopenharmony_ci	rts
10798c2ecf20Sopenharmony_ci
10808c2ecf20Sopenharmony_ci#####################################################################
10818c2ecf20Sopenharmony_ci
10828c2ecf20Sopenharmony_cisnan_str:
10838c2ecf20Sopenharmony_ci	string		"\tEnabled SNAN..."
10848c2ecf20Sopenharmony_ci
10858c2ecf20Sopenharmony_ci	align		0x4
10868c2ecf20Sopenharmony_cisnan_0:
10878c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
10888c2ecf20Sopenharmony_ci
10898c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
10908c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
10918c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
10928c2ecf20Sopenharmony_ci
10938c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
10948c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
10958c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
10968c2ecf20Sopenharmony_ci	fmov.l		&0x00004000,%fpcr		# enable SNAN
10978c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
10988c2ecf20Sopenharmony_ci
10998c2ecf20Sopenharmony_ci	mov.l		&0xffff0000,DATA+0x0(%a6)
11008c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x4(%a6)
11018c2ecf20Sopenharmony_ci	mov.l		&0x00000001,DATA+0x8(%a6)
11028c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
11038c2ecf20Sopenharmony_ci
11048c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
11058c2ecf20Sopenharmony_cisnan_0_pc:
11068c2ecf20Sopenharmony_ci	fadd.b		&0x2,%fp0
11078c2ecf20Sopenharmony_ci
11088c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
11098c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
11108c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
11118c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
11128c2ecf20Sopenharmony_ci
11138c2ecf20Sopenharmony_ci	mov.l		&0xffff0000,IFPREGS+0x0(%a6)
11148c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x4(%a6)
11158c2ecf20Sopenharmony_ci	mov.l		&0x00000001,IFPREGS+0x8(%a6)
11168c2ecf20Sopenharmony_ci	mov.l		&0x09004080,IFPCREGS+0x4(%a6)
11178c2ecf20Sopenharmony_ci	lea		snan_0_pc(%pc),%a0
11188c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
11198c2ecf20Sopenharmony_ci
11208c2ecf20Sopenharmony_ci	bsr.l		chkregs
11218c2ecf20Sopenharmony_ci	tst.b		%d0
11228c2ecf20Sopenharmony_ci	bne.l		error
11238c2ecf20Sopenharmony_ci
11248c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
11258c2ecf20Sopenharmony_ci	tst.b		%d0
11268c2ecf20Sopenharmony_ci	bne.l		error
11278c2ecf20Sopenharmony_ci
11288c2ecf20Sopenharmony_ci	clr.l		%d0
11298c2ecf20Sopenharmony_ci	rts
11308c2ecf20Sopenharmony_ci
11318c2ecf20Sopenharmony_ci#####################################################################
11328c2ecf20Sopenharmony_ci
11338c2ecf20Sopenharmony_cioperr_str:
11348c2ecf20Sopenharmony_ci	string		"\tEnabled OPERR..."
11358c2ecf20Sopenharmony_ci
11368c2ecf20Sopenharmony_ci	align		0x4
11378c2ecf20Sopenharmony_cioperr_0:
11388c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
11398c2ecf20Sopenharmony_ci
11408c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
11418c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
11428c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
11438c2ecf20Sopenharmony_ci
11448c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
11458c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
11468c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
11478c2ecf20Sopenharmony_ci	fmov.l		&0x00002000,%fpcr		# enable OPERR
11488c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
11498c2ecf20Sopenharmony_ci
11508c2ecf20Sopenharmony_ci	mov.l		&0xffff0000,DATA+0x0(%a6)
11518c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x4(%a6)
11528c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
11538c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
11548c2ecf20Sopenharmony_ci
11558c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
11568c2ecf20Sopenharmony_cioperr_0_pc:
11578c2ecf20Sopenharmony_ci	fadd.s		&0x7f800000,%fp0
11588c2ecf20Sopenharmony_ci
11598c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
11608c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
11618c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
11628c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
11638c2ecf20Sopenharmony_ci
11648c2ecf20Sopenharmony_ci	mov.l		&0xffff0000,IFPREGS+0x0(%a6)
11658c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x4(%a6)
11668c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
11678c2ecf20Sopenharmony_ci	mov.l		&0x01002080,IFPCREGS+0x4(%a6)
11688c2ecf20Sopenharmony_ci	lea		operr_0_pc(%pc),%a0
11698c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
11708c2ecf20Sopenharmony_ci
11718c2ecf20Sopenharmony_ci	bsr.l		chkregs
11728c2ecf20Sopenharmony_ci	tst.b		%d0
11738c2ecf20Sopenharmony_ci	bne.l		error
11748c2ecf20Sopenharmony_ci
11758c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
11768c2ecf20Sopenharmony_ci	tst.b		%d0
11778c2ecf20Sopenharmony_ci	bne.l		error
11788c2ecf20Sopenharmony_ci
11798c2ecf20Sopenharmony_ci	clr.l		%d0
11808c2ecf20Sopenharmony_ci	rts
11818c2ecf20Sopenharmony_ci
11828c2ecf20Sopenharmony_ci#####################################################################
11838c2ecf20Sopenharmony_ci
11848c2ecf20Sopenharmony_cidz_str:
11858c2ecf20Sopenharmony_ci	string		"\tEnabled DZ..."
11868c2ecf20Sopenharmony_ci
11878c2ecf20Sopenharmony_ci	align		0x4
11888c2ecf20Sopenharmony_cidz_0:
11898c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
11908c2ecf20Sopenharmony_ci
11918c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
11928c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
11938c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
11948c2ecf20Sopenharmony_ci
11958c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
11968c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
11978c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
11988c2ecf20Sopenharmony_ci	fmov.l		&0x00000400,%fpcr		# enable DZ
11998c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
12008c2ecf20Sopenharmony_ci
12018c2ecf20Sopenharmony_ci	mov.l		&0x40000000,DATA+0x0(%a6)
12028c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x4(%a6)
12038c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
12048c2ecf20Sopenharmony_ci	fmovm.x		DATA(%a6),&0x80
12058c2ecf20Sopenharmony_ci
12068c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
12078c2ecf20Sopenharmony_cidz_0_pc:
12088c2ecf20Sopenharmony_ci	fdiv.b		&0x0,%fp0
12098c2ecf20Sopenharmony_ci
12108c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
12118c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
12128c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
12138c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
12148c2ecf20Sopenharmony_ci
12158c2ecf20Sopenharmony_ci	mov.l		&0x40000000,IFPREGS+0x0(%a6)
12168c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
12178c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
12188c2ecf20Sopenharmony_ci	mov.l		&0x02000410,IFPCREGS+0x4(%a6)
12198c2ecf20Sopenharmony_ci	lea		dz_0_pc(%pc),%a0
12208c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
12218c2ecf20Sopenharmony_ci
12228c2ecf20Sopenharmony_ci	bsr.l		chkregs
12238c2ecf20Sopenharmony_ci	tst.b		%d0
12248c2ecf20Sopenharmony_ci	bne.l		error
12258c2ecf20Sopenharmony_ci
12268c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
12278c2ecf20Sopenharmony_ci	tst.b		%d0
12288c2ecf20Sopenharmony_ci	bne.l		error
12298c2ecf20Sopenharmony_ci
12308c2ecf20Sopenharmony_ci	clr.l		%d0
12318c2ecf20Sopenharmony_ci	rts
12328c2ecf20Sopenharmony_ci
12338c2ecf20Sopenharmony_ci#####################################################################
12348c2ecf20Sopenharmony_ci
12358c2ecf20Sopenharmony_ciunsupp_str:
12368c2ecf20Sopenharmony_ci	string		"\tUnimplemented data type/format..."
12378c2ecf20Sopenharmony_ci
12388c2ecf20Sopenharmony_ci# an unnormalized number
12398c2ecf20Sopenharmony_ci	align		0x4
12408c2ecf20Sopenharmony_ciunsupp_0:
12418c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
12428c2ecf20Sopenharmony_ci
12438c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
12448c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
12458c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
12468c2ecf20Sopenharmony_ci
12478c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
12488c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
12498c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
12508c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
12518c2ecf20Sopenharmony_ci
12528c2ecf20Sopenharmony_ci	mov.l		&0xc03f0000,DATA+0x0(%a6)
12538c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x4(%a6)
12548c2ecf20Sopenharmony_ci	mov.l		&0x00000001,DATA+0x8(%a6)
12558c2ecf20Sopenharmony_ci	fmov.b		&0x2,%fp0
12568c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
12578c2ecf20Sopenharmony_ciunsupp_0_pc:
12588c2ecf20Sopenharmony_ci	fmul.x		DATA(%a6),%fp0
12598c2ecf20Sopenharmony_ci
12608c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
12618c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
12628c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
12638c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
12648c2ecf20Sopenharmony_ci
12658c2ecf20Sopenharmony_ci	mov.l		&0xc0010000,IFPREGS+0x0(%a6)
12668c2ecf20Sopenharmony_ci	mov.l		&0x80000000,IFPREGS+0x4(%a6)
12678c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
12688c2ecf20Sopenharmony_ci	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
12698c2ecf20Sopenharmony_ci	lea		unsupp_0_pc(%pc),%a0
12708c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
12718c2ecf20Sopenharmony_ci
12728c2ecf20Sopenharmony_ci	bsr.l		chkregs
12738c2ecf20Sopenharmony_ci	tst.b		%d0
12748c2ecf20Sopenharmony_ci	bne.l		error
12758c2ecf20Sopenharmony_ci
12768c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
12778c2ecf20Sopenharmony_ci	tst.b		%d0
12788c2ecf20Sopenharmony_ci	bne.l		error
12798c2ecf20Sopenharmony_ci
12808c2ecf20Sopenharmony_ci# a denormalized number
12818c2ecf20Sopenharmony_ciunsupp_1:
12828c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
12838c2ecf20Sopenharmony_ci
12848c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
12858c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
12868c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
12878c2ecf20Sopenharmony_ci
12888c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
12898c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
12908c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
12918c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
12928c2ecf20Sopenharmony_ci
12938c2ecf20Sopenharmony_ci	mov.l		&0x80000000,DATA+0x0(%a6)
12948c2ecf20Sopenharmony_ci	mov.l		&0x01000000,DATA+0x4(%a6)
12958c2ecf20Sopenharmony_ci	mov.l		&0x00000000,DATA+0x8(%a6)
12968c2ecf20Sopenharmony_ci	fmov.l		&0x7fffffff,%fp0
12978c2ecf20Sopenharmony_ci
12988c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
12998c2ecf20Sopenharmony_ciunsupp_1_pc:
13008c2ecf20Sopenharmony_ci	fmul.x		DATA(%a6),%fp0
13018c2ecf20Sopenharmony_ci
13028c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
13038c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
13048c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
13058c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
13068c2ecf20Sopenharmony_ci
13078c2ecf20Sopenharmony_ci	mov.l		&0x80170000,IFPREGS+0x0(%a6)
13088c2ecf20Sopenharmony_ci	mov.l		&0xfffffffe,IFPREGS+0x4(%a6)
13098c2ecf20Sopenharmony_ci	mov.l		&0x00000000,IFPREGS+0x8(%a6)
13108c2ecf20Sopenharmony_ci	mov.l		&0x08000000,IFPCREGS+0x4(%a6)
13118c2ecf20Sopenharmony_ci	lea		unsupp_1_pc(%pc),%a0
13128c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
13138c2ecf20Sopenharmony_ci
13148c2ecf20Sopenharmony_ci	bsr.l		chkregs
13158c2ecf20Sopenharmony_ci	tst.b		%d0
13168c2ecf20Sopenharmony_ci	bne.l		error
13178c2ecf20Sopenharmony_ci
13188c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
13198c2ecf20Sopenharmony_ci	tst.b		%d0
13208c2ecf20Sopenharmony_ci	bne.l		error
13218c2ecf20Sopenharmony_ci
13228c2ecf20Sopenharmony_ci# packed
13238c2ecf20Sopenharmony_ciunsupp_2:
13248c2ecf20Sopenharmony_ci	addq.l		&0x1,TESTCTR(%a6)
13258c2ecf20Sopenharmony_ci
13268c2ecf20Sopenharmony_ci	movm.l		DEF_REGS(%pc),&0x3fff
13278c2ecf20Sopenharmony_ci	fmovm.x		DEF_FPREGS(%pc),&0xff
13288c2ecf20Sopenharmony_ci	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar
13298c2ecf20Sopenharmony_ci
13308c2ecf20Sopenharmony_ci	mov.w		&0x0000,ICCR(%a6)
13318c2ecf20Sopenharmony_ci	movm.l		&0x7fff,IREGS(%a6)
13328c2ecf20Sopenharmony_ci	fmovm.x		&0xff,IFPREGS(%a6)
13338c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
13348c2ecf20Sopenharmony_ci
13358c2ecf20Sopenharmony_ci	mov.l		&0xc1230001,DATA+0x0(%a6)
13368c2ecf20Sopenharmony_ci	mov.l		&0x23456789,DATA+0x4(%a6)
13378c2ecf20Sopenharmony_ci	mov.l		&0x12345678,DATA+0x8(%a6)
13388c2ecf20Sopenharmony_ci
13398c2ecf20Sopenharmony_ci	mov.w		&0x0000,%cc
13408c2ecf20Sopenharmony_ciunsupp_2_pc:
13418c2ecf20Sopenharmony_ci	fabs.p		DATA(%a6),%fp0
13428c2ecf20Sopenharmony_ci
13438c2ecf20Sopenharmony_ci	mov.w		%cc,SCCR(%a6)
13448c2ecf20Sopenharmony_ci	movm.l		&0x7fff,SREGS(%a6)
13458c2ecf20Sopenharmony_ci	fmovm.x		&0xff,SFPREGS(%a6)
13468c2ecf20Sopenharmony_ci	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
13478c2ecf20Sopenharmony_ci
13488c2ecf20Sopenharmony_ci	mov.l		&0x3e660000,IFPREGS+0x0(%a6)
13498c2ecf20Sopenharmony_ci	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6)
13508c2ecf20Sopenharmony_ci	mov.l		&0xd14035bc,IFPREGS+0x8(%a6)
13518c2ecf20Sopenharmony_ci	mov.l		&0x00000108,IFPCREGS+0x4(%a6)
13528c2ecf20Sopenharmony_ci	lea		unsupp_2_pc(%pc),%a0
13538c2ecf20Sopenharmony_ci	mov.l		%a0,IFPCREGS+0x8(%a6)
13548c2ecf20Sopenharmony_ci
13558c2ecf20Sopenharmony_ci	bsr.l		chkregs
13568c2ecf20Sopenharmony_ci	tst.b		%d0
13578c2ecf20Sopenharmony_ci	bne.l		error
13588c2ecf20Sopenharmony_ci
13598c2ecf20Sopenharmony_ci	bsr.l		chkfpregs
13608c2ecf20Sopenharmony_ci	tst.b		%d0
13618c2ecf20Sopenharmony_ci	bne.l		error
13628c2ecf20Sopenharmony_ci
13638c2ecf20Sopenharmony_ci	clr.l		%d0
13648c2ecf20Sopenharmony_ci	rts
13658c2ecf20Sopenharmony_ci
13668c2ecf20Sopenharmony_ci###########################################################
13678c2ecf20Sopenharmony_ci###########################################################
13688c2ecf20Sopenharmony_ci
13698c2ecf20Sopenharmony_cichkregs:
13708c2ecf20Sopenharmony_ci	lea		IREGS(%a6),%a0
13718c2ecf20Sopenharmony_ci	lea		SREGS(%a6),%a1
13728c2ecf20Sopenharmony_ci	mov.l		&14,%d0
13738c2ecf20Sopenharmony_cichkregs_loop:
13748c2ecf20Sopenharmony_ci	cmp.l		(%a0)+,(%a1)+
13758c2ecf20Sopenharmony_ci	bne.l		chkregs_error
13768c2ecf20Sopenharmony_ci	dbra.w		%d0,chkregs_loop
13778c2ecf20Sopenharmony_ci
13788c2ecf20Sopenharmony_ci	mov.w		ICCR(%a6),%d0
13798c2ecf20Sopenharmony_ci	mov.w		SCCR(%a6),%d1
13808c2ecf20Sopenharmony_ci	cmp.w		%d0,%d1
13818c2ecf20Sopenharmony_ci	bne.l		chkregs_error
13828c2ecf20Sopenharmony_ci
13838c2ecf20Sopenharmony_ci	clr.l		%d0
13848c2ecf20Sopenharmony_ci	rts
13858c2ecf20Sopenharmony_ci
13868c2ecf20Sopenharmony_cichkregs_error:
13878c2ecf20Sopenharmony_ci	movq.l		&0x1,%d0
13888c2ecf20Sopenharmony_ci	rts
13898c2ecf20Sopenharmony_ci
13908c2ecf20Sopenharmony_cierror:
13918c2ecf20Sopenharmony_ci	mov.l		TESTCTR(%a6),%d1
13928c2ecf20Sopenharmony_ci	movq.l		&0x1,%d0
13938c2ecf20Sopenharmony_ci	rts
13948c2ecf20Sopenharmony_ci
13958c2ecf20Sopenharmony_cichkfpregs:
13968c2ecf20Sopenharmony_ci	lea		IFPREGS(%a6),%a0
13978c2ecf20Sopenharmony_ci	lea		SFPREGS(%a6),%a1
13988c2ecf20Sopenharmony_ci	mov.l		&23,%d0
13998c2ecf20Sopenharmony_cichkfpregs_loop:
14008c2ecf20Sopenharmony_ci	cmp.l		(%a0)+,(%a1)+
14018c2ecf20Sopenharmony_ci	bne.l		chkfpregs_error
14028c2ecf20Sopenharmony_ci	dbra.w		%d0,chkfpregs_loop
14038c2ecf20Sopenharmony_ci
14048c2ecf20Sopenharmony_ci	lea		IFPCREGS(%a6),%a0
14058c2ecf20Sopenharmony_ci	lea		SFPCREGS(%a6),%a1
14068c2ecf20Sopenharmony_ci	cmp.l		(%a0)+,(%a1)+
14078c2ecf20Sopenharmony_ci	bne.l		chkfpregs_error
14088c2ecf20Sopenharmony_ci	cmp.l		(%a0)+,(%a1)+
14098c2ecf20Sopenharmony_ci	bne.l		chkfpregs_error
14108c2ecf20Sopenharmony_ci	cmp.l		(%a0)+,(%a1)+
14118c2ecf20Sopenharmony_ci	bne.l		chkfpregs_error
14128c2ecf20Sopenharmony_ci
14138c2ecf20Sopenharmony_ci	clr.l		%d0
14148c2ecf20Sopenharmony_ci	rts
14158c2ecf20Sopenharmony_ci
14168c2ecf20Sopenharmony_cichkfpregs_error:
14178c2ecf20Sopenharmony_ci	movq.l		&0x1,%d0
14188c2ecf20Sopenharmony_ci	rts
14198c2ecf20Sopenharmony_ci
14208c2ecf20Sopenharmony_ciDEF_REGS:
14218c2ecf20Sopenharmony_ci	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
14228c2ecf20Sopenharmony_ci	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
14238c2ecf20Sopenharmony_ci
14248c2ecf20Sopenharmony_ci	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
14258c2ecf20Sopenharmony_ci	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
14268c2ecf20Sopenharmony_ci
14278c2ecf20Sopenharmony_ciDEF_FPREGS:
14288c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14298c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14308c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14318c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14328c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14338c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14348c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14358c2ecf20Sopenharmony_ci	long		0x7fff0000, 0xffffffff, 0xffffffff
14368c2ecf20Sopenharmony_ci
14378c2ecf20Sopenharmony_ciDEF_FPCREGS:
14388c2ecf20Sopenharmony_ci	long		0x00000000, 0x00000000, 0x00000000
14398c2ecf20Sopenharmony_ci
14408c2ecf20Sopenharmony_ci############################################################
14418c2ecf20Sopenharmony_ci
14428c2ecf20Sopenharmony_ci_print_str:
14438c2ecf20Sopenharmony_ci	mov.l		%d0,-(%sp)
14448c2ecf20Sopenharmony_ci	mov.l		(TESTTOP-0x80+0x0,%pc),%d0
14458c2ecf20Sopenharmony_ci	pea		(TESTTOP-0x80,%pc,%d0)
14468c2ecf20Sopenharmony_ci	mov.l		0x4(%sp),%d0
14478c2ecf20Sopenharmony_ci	rtd		&0x4
14488c2ecf20Sopenharmony_ci
14498c2ecf20Sopenharmony_ci_print_num:
14508c2ecf20Sopenharmony_ci	mov.l		%d0,-(%sp)
14518c2ecf20Sopenharmony_ci	mov.l		(TESTTOP-0x80+0x4,%pc),%d0
14528c2ecf20Sopenharmony_ci	pea		(TESTTOP-0x80,%pc,%d0)
14538c2ecf20Sopenharmony_ci	mov.l		0x4(%sp),%d0
14548c2ecf20Sopenharmony_ci	rtd		&0x4
14558c2ecf20Sopenharmony_ci
14568c2ecf20Sopenharmony_ci############################################################
1457