| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP | 
 | M68000 Hi-Performance Microprocessor Division | 
 | M68060 Software Package | 
 | Production Release P1.00 -- October 10, 1994 | 
 |  | 
 | M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved. | 
 |  | 
 | THE SOFTWARE is provided on an "AS IS" basis and without warranty. | 
 | To the maximum extent permitted by applicable law, | 
 | MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, | 
 | INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE | 
 | and any warranty against infringement with regard to the SOFTWARE | 
 | (INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials. | 
 |  | 
 | To the maximum extent permitted by applicable law, | 
 | IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER | 
 | (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, | 
 | BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) | 
 | ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE. | 
 | Motorola assumes no responsibility for the maintenance and support of the SOFTWARE. | 
 |  | 
 | You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE | 
 | so long as this entire notice is retained without alteration in any modified and/or | 
 | redistributed versions, and that such modified versions are clearly identified as such. | 
 | No licenses are granted by implication, estoppel or otherwise under any patents | 
 | or trademarks of Motorola, Inc. | 
 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 
 | ############################################# | 
 | set	SREGS,		-64 | 
 | set	IREGS,		-128 | 
 | set	IFPREGS,	-224 | 
 | set	SFPREGS,	-320 | 
 | set	IFPCREGS,	-332 | 
 | set	SFPCREGS,	-344 | 
 | set	ICCR,		-346 | 
 | set	SCCR,		-348 | 
 | set	TESTCTR,	-352 | 
 | set	DATA,		-384 | 
 |  | 
 | ############################################# | 
 | TESTTOP: | 
 | 	bra.l		_060TESTS_ | 
 | 	short		0x0000 | 
 |  | 
 | 	bra.l		_060TESTS_unimp | 
 | 	short		0x0000 | 
 |  | 
 | 	bra.l		_060TESTS_enable | 
 | 	short		0x0000 | 
 |  | 
 | start_str: | 
 | 	string		"Testing 68060 FPSP started:\n" | 
 |  | 
 | start_str_unimp: | 
 | 	string		"Testing 68060 FPSP unimplemented instruction started:\n" | 
 |  | 
 | start_str_enable: | 
 | 	string		"Testing 68060 FPSP exception enabled started:\n" | 
 |  | 
 | pass_str: | 
 | 	string		"passed\n" | 
 |  | 
 | fail_str: | 
 | 	string		" failed\n" | 
 |  | 
 | 	align		0x4 | 
 | chk_test: | 
 | 	tst.l		%d0 | 
 | 	bne.b		test_fail | 
 | test_pass: | 
 | 	pea		pass_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 | 	rts | 
 | test_fail: | 
 | 	mov.l		%d1,-(%sp) | 
 | 	bsr.l		_print_num | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | 	pea		fail_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 | 	rts | 
 |  | 
 | ############################################# | 
 | _060TESTS_: | 
 | 	link		%a6,&-384 | 
 |  | 
 | 	movm.l		&0x3f3c,-(%sp) | 
 | 	fmovm.x		&0xff,-(%sp) | 
 |  | 
 | 	pea		start_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | ### effadd | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		effadd_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | 	bsr.l		effadd_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### unsupp | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		unsupp_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | 	bsr.l		unsupp_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### ovfl non-maskable | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		ovfl_nm_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		ovfl_nm_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### unfl non-maskable | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		unfl_nm_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		unfl_nm_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | 	movm.l		(%sp)+,&0x3cfc | 
 | 	fmovm.x		(%sp)+,&0xff | 
 |  | 
 | 	unlk		%a6 | 
 | 	rts | 
 |  | 
 | _060TESTS_unimp: | 
 | 	link		%a6,&-384 | 
 |  | 
 | 	movm.l		&0x3f3c,-(%sp) | 
 | 	fmovm.x		&0xff,-(%sp) | 
 |  | 
 | 	pea		start_str_unimp(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | ### unimp | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		unimp_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | 	bsr.l		unimp_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | 	movm.l		(%sp)+,&0x3cfc | 
 | 	fmovm.x		(%sp)+,&0xff | 
 |  | 
 | 	unlk		%a6 | 
 | 	rts | 
 |  | 
 | _060TESTS_enable: | 
 | 	link		%a6,&-384 | 
 |  | 
 | 	movm.l		&0x3f3c,-(%sp) | 
 | 	fmovm.x		&0xff,-(%sp) | 
 |  | 
 | 	pea		start_str_enable(%pc) | 
 | 	bsr.l		_print_str | 
 | 	addq.l		&0x4,%sp | 
 |  | 
 | ### snan | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		snan_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		snan_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### operr | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		operr_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		operr_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### ovfl | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		ovfl_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		ovfl_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### unfl | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		unfl_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		unfl_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### dz | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		dz_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		dz_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | ### inexact | 
 | 	clr.l		TESTCTR(%a6) | 
 | 	pea		inex_str(%pc) | 
 | 	bsr.l		_print_str | 
 | 	bsr.l		inex_0 | 
 |  | 
 | 	bsr.l		chk_test | 
 |  | 
 | 	movm.l		(%sp)+,&0x3cfc | 
 | 	fmovm.x		(%sp)+,&0xff | 
 |  | 
 | 	unlk		%a6 | 
 | 	rts | 
 |  | 
 | ############################################# | 
 | ############################################# | 
 |  | 
 | unimp_str: | 
 | 	string		"\tUnimplemented FP instructions..." | 
 |  | 
 | 	align		0x4 | 
 | unimp_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x40000000,DATA+0x0(%a6) | 
 | 	mov.l		&0xc90fdaa2,DATA+0x4(%a6) | 
 | 	mov.l		&0x2168c235,DATA+0x8(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_0_pc: | 
 | 	fsin.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xbfbf0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x08000208,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | unimp_1: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x3ffe0000,DATA+0x0(%a6) | 
 | 	mov.l		&0xc90fdaa2,DATA+0x4(%a6) | 
 | 	mov.l		&0x2168c235,DATA+0x8(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_1_pc: | 
 | 	ftan.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x3fff0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000208,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_1_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # fmovecr | 
 | unimp_2: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_2_pc: | 
 | 	fmovcr.x	&0x31,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x40000000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x935d8ddd,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0xaaa8ac17,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000208,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_2_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # fscc | 
 | unimp_3: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.l		&0x0f000000,%fpsr | 
 | 	mov.l		&0x00,%d7 | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_3_pc: | 
 | 	fsgt		%d7 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0f008080,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_3_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # fdbcc | 
 | unimp_4: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.l		&0x0f000000,%fpsr | 
 | 	mov.l		&0x2,%d7 | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_4_pc: | 
 | 	fdbgt.w		%d7,unimp_4_pc | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.w		&0xffff,IREGS+28+2(%a6) | 
 | 	mov.l		&0x0f008080,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_4_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # ftrapcc | 
 | unimp_5: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.l		&0x0f000000,%fpsr | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unimp_5_pc: | 
 | 	ftpgt.l		&0xabcdef01 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0f008080,IFPCREGS+0x4(%a6) | 
 | 	lea		unimp_5_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ############################################# | 
 |  | 
 | effadd_str: | 
 | 	string		"\tUnimplemented <ea>..." | 
 |  | 
 | 	align		0x4 | 
 | effadd_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmov.b		&0x2,%fp0 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | effadd_0_pc: | 
 | 	fmul.x		&0xc00000008000000000000000,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xc0010000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x08000000,IFPCREGS+0x4(%a6) | 
 | 	lea		effadd_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | effadd_1: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | effadd_1_pc: | 
 | 	fabs.p		&0xc12300012345678912345678,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x3e660000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0xd14035bc,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000108,IFPCREGS+0x4(%a6) | 
 | 	lea		effadd_1_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovml_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	mov.w		&0x0000,%cc | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmovm.l		&0xffffffffffffffff,%fpcr,%fpsr | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6) | 
 | 	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovml_1: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	mov.w		&0x0000,%cc | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmovm.l		&0xffffffffffffffff,%fpcr,%fpiar | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6) | 
 | 	mov.l		&0xffffffff,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovml_2: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	mov.w		&0x0000,%cc | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmovm.l		&0xffffffffffffffff,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6) | 
 | 	mov.l		&0xffffffff,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovml_3: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	mov.w		&0x0000,%cc | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmovm.l		&0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 | 	mov.l		&0x0000fff0,IFPCREGS+0x0(%a6) | 
 | 	mov.l		&0x0ffffff8,IFPCREGS+0x4(%a6) | 
 | 	mov.l		&0xffffffff,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # fmovmx dynamic | 
 | fmovmx_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.b		&0x1,%fp0 | 
 | 	fmov.b		&0x2,%fp1 | 
 | 	fmov.b		&0x3,%fp2 | 
 | 	fmov.b		&0x4,%fp3 | 
 | 	fmov.b		&0x5,%fp4 | 
 | 	fmov.b		&0x6,%fp5 | 
 | 	fmov.b		&0x7,%fp6 | 
 | 	fmov.b		&0x8,%fp7 | 
 |  | 
 | 	fmov.l		&0x0,%fpiar | 
 | 	mov.l		&0xffffffaa,%d0 | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0xffff,IREGS(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 |  | 
 | 	fmovm.x		%d0,-(%sp) | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	fmov.s		&0x7f800000,%fp1 | 
 | 	fmov.s		&0x7f800000,%fp3 | 
 | 	fmov.s		&0x7f800000,%fp5 | 
 | 	fmov.s		&0x7f800000,%fp7 | 
 |  | 
 | 	fmov.x		(%sp)+,%fp1 | 
 | 	fmov.x		(%sp)+,%fp3 | 
 | 	fmov.x		(%sp)+,%fp5 | 
 | 	fmov.x		(%sp)+,%fp7 | 
 |  | 
 | 	movm.l		&0xffff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovmx_1: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.b		&0x1,%fp0 | 
 | 	fmov.b		&0x2,%fp1 | 
 | 	fmov.b		&0x3,%fp2 | 
 | 	fmov.b		&0x4,%fp3 | 
 | 	fmov.b		&0x5,%fp4 | 
 | 	fmov.b		&0x6,%fp5 | 
 | 	fmov.b		&0x7,%fp6 | 
 | 	fmov.b		&0x8,%fp7 | 
 |  | 
 | 	fmov.x		%fp6,-(%sp) | 
 | 	fmov.x		%fp4,-(%sp) | 
 | 	fmov.x		%fp2,-(%sp) | 
 | 	fmov.x		%fp0,-(%sp) | 
 |  | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 |  | 
 | 	fmov.s		&0x7f800000,%fp6 | 
 | 	fmov.s		&0x7f800000,%fp4 | 
 | 	fmov.s		&0x7f800000,%fp2 | 
 | 	fmov.s		&0x7f800000,%fp0 | 
 |  | 
 | 	fmov.l		&0x0,%fpiar | 
 | 	fmov.l		&0x0,%fpsr | 
 | 	mov.l		&0xffffffaa,%d0 | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0xffff,IREGS(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 |  | 
 | 	fmovm.x		(%sp)+,%d0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	movm.l		&0xffff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | fmovmx_2: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	fmov.b		&0x1,%fp0 | 
 | 	fmov.b		&0x2,%fp1 | 
 | 	fmov.b		&0x3,%fp2 | 
 | 	fmov.b		&0x4,%fp3 | 
 | 	fmov.b		&0x5,%fp4 | 
 | 	fmov.b		&0x6,%fp5 | 
 | 	fmov.b		&0x7,%fp6 | 
 | 	fmov.b		&0x8,%fp7 | 
 |  | 
 | 	fmov.l		&0x0,%fpiar | 
 | 	mov.l		&0xffffff00,%d0 | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0xffff,IREGS(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 |  | 
 | 	fmovm.x		%d0,-(%sp) | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 |  | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	movm.l		&0xffff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ########################################################### | 
 |  | 
 | # This test will take a non-maskable overflow directly. | 
 | ovfl_nm_str: | 
 | 	string		"\tNon-maskable overflow..." | 
 |  | 
 | 	align		0x4 | 
 | ovfl_nm_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmov.b		&0x2,%fp0 | 
 | 	mov.l		&0x7ffe0000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | ovfl_nm_0_pc: | 
 | 	fmul.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x7fff0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x02001048,IFPCREGS+0x4(%a6) | 
 | 	lea		ovfl_nm_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ########################################################### | 
 |  | 
 | # This test will take an overflow directly. | 
 | ovfl_str: | 
 | 	string		"\tEnabled overflow..." | 
 |  | 
 | 	align		0x4 | 
 | ovfl_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00001000,%fpcr | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	fmov.b		&0x2,%fp0 | 
 | 	mov.l		&0x7ffe0000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | ovfl_0_pc: | 
 | 	fmul.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x7fff0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x02001048,IFPCREGS+0x4(%a6) | 
 | 	lea		ovfl_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | # This test will take an underflow directly. | 
 | unfl_str: | 
 | 	string		"\tEnabled underflow..." | 
 |  | 
 | 	align		0x4 | 
 | unfl_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00000800,%fpcr | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x00000000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unfl_0_pc: | 
 | 	fdiv.b		&0x2,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x00000000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x40000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000800,IFPCREGS+0x4(%a6) | 
 | 	lea		unfl_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | # This test will take a non-maskable underflow directly. | 
 | unfl_nm_str: | 
 | 	string		"\tNon-maskable underflow..." | 
 |  | 
 | 	align		0x4 | 
 | unfl_nm_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x00000000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unfl_nm_0_pc: | 
 | 	fdiv.b		&0x2,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x00000000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x40000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000800,IFPCREGS+0x4(%a6) | 
 | 	lea		unfl_nm_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | inex_str: | 
 | 	string		"\tEnabled inexact..." | 
 |  | 
 | 	align		0x4 | 
 | inex_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00000200,%fpcr		# enable inexact | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x50000000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | inex_0_pc: | 
 | 	fadd.b		&0x2,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x50000000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000208,IFPCREGS+0x4(%a6) | 
 | 	lea		inex_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | snan_str: | 
 | 	string		"\tEnabled SNAN..." | 
 |  | 
 | 	align		0x4 | 
 | snan_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00004000,%fpcr		# enable SNAN | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xffff0000,DATA+0x0(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000001,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | snan_0_pc: | 
 | 	fadd.b		&0x2,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xffff0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000001,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x09004080,IFPCREGS+0x4(%a6) | 
 | 	lea		snan_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | operr_str: | 
 | 	string		"\tEnabled OPERR..." | 
 |  | 
 | 	align		0x4 | 
 | operr_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00002000,%fpcr		# enable OPERR | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xffff0000,DATA+0x0(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | operr_0_pc: | 
 | 	fadd.s		&0x7f800000,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xffff0000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x01002080,IFPCREGS+0x4(%a6) | 
 | 	lea		operr_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | dz_str: | 
 | 	string		"\tEnabled DZ..." | 
 |  | 
 | 	align		0x4 | 
 | dz_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmov.l		&0x00000400,%fpcr		# enable DZ | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x40000000,DATA+0x0(%a6) | 
 | 	mov.l		&0x80000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmovm.x		DATA(%a6),&0x80 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | dz_0_pc: | 
 | 	fdiv.b		&0x0,%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x40000000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x02000410,IFPCREGS+0x4(%a6) | 
 | 	lea		dz_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ##################################################################### | 
 |  | 
 | unsupp_str: | 
 | 	string		"\tUnimplemented data type/format..." | 
 |  | 
 | # an unnormalized number | 
 | 	align		0x4 | 
 | unsupp_0: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xc03f0000,DATA+0x0(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000001,DATA+0x8(%a6) | 
 | 	fmov.b		&0x2,%fp0 | 
 | 	mov.w		&0x0000,%cc | 
 | unsupp_0_pc: | 
 | 	fmul.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xc0010000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0x80000000,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x08000000,IFPCREGS+0x4(%a6) | 
 | 	lea		unsupp_0_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # a denormalized number | 
 | unsupp_1: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x80000000,DATA+0x0(%a6) | 
 | 	mov.l		&0x01000000,DATA+0x4(%a6) | 
 | 	mov.l		&0x00000000,DATA+0x8(%a6) | 
 | 	fmov.l		&0x7fffffff,%fp0 | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unsupp_1_pc: | 
 | 	fmul.x		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x80170000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0xfffffffe,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0x00000000,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x08000000,IFPCREGS+0x4(%a6) | 
 | 	lea		unsupp_1_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | # packed | 
 | unsupp_2: | 
 | 	addq.l		&0x1,TESTCTR(%a6) | 
 |  | 
 | 	movm.l		DEF_REGS(%pc),&0x3fff | 
 | 	fmovm.x		DEF_FPREGS(%pc),&0xff | 
 | 	fmovm.l		DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar | 
 |  | 
 | 	mov.w		&0x0000,ICCR(%a6) | 
 | 	movm.l		&0x7fff,IREGS(%a6) | 
 | 	fmovm.x		&0xff,IFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,IFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0xc1230001,DATA+0x0(%a6) | 
 | 	mov.l		&0x23456789,DATA+0x4(%a6) | 
 | 	mov.l		&0x12345678,DATA+0x8(%a6) | 
 |  | 
 | 	mov.w		&0x0000,%cc | 
 | unsupp_2_pc: | 
 | 	fabs.p		DATA(%a6),%fp0 | 
 |  | 
 | 	mov.w		%cc,SCCR(%a6) | 
 | 	movm.l		&0x7fff,SREGS(%a6) | 
 | 	fmovm.x		&0xff,SFPREGS(%a6) | 
 | 	fmovm.l		%fpcr,%fpsr,%fpiar,SFPCREGS(%a6) | 
 |  | 
 | 	mov.l		&0x3e660000,IFPREGS+0x0(%a6) | 
 | 	mov.l		&0xd0ed23e8,IFPREGS+0x4(%a6) | 
 | 	mov.l		&0xd14035bc,IFPREGS+0x8(%a6) | 
 | 	mov.l		&0x00000108,IFPCREGS+0x4(%a6) | 
 | 	lea		unsupp_2_pc(%pc),%a0 | 
 | 	mov.l		%a0,IFPCREGS+0x8(%a6) | 
 |  | 
 | 	bsr.l		chkregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	bsr.l		chkfpregs | 
 | 	tst.b		%d0 | 
 | 	bne.l		error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | ########################################################### | 
 | ########################################################### | 
 |  | 
 | chkregs: | 
 | 	lea		IREGS(%a6),%a0 | 
 | 	lea		SREGS(%a6),%a1 | 
 | 	mov.l		&14,%d0 | 
 | chkregs_loop: | 
 | 	cmp.l		(%a0)+,(%a1)+ | 
 | 	bne.l		chkregs_error | 
 | 	dbra.w		%d0,chkregs_loop | 
 |  | 
 | 	mov.w		ICCR(%a6),%d0 | 
 | 	mov.w		SCCR(%a6),%d1 | 
 | 	cmp.w		%d0,%d1 | 
 | 	bne.l		chkregs_error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | chkregs_error: | 
 | 	movq.l		&0x1,%d0 | 
 | 	rts | 
 |  | 
 | error: | 
 | 	mov.l		TESTCTR(%a6),%d1 | 
 | 	movq.l		&0x1,%d0 | 
 | 	rts | 
 |  | 
 | chkfpregs: | 
 | 	lea		IFPREGS(%a6),%a0 | 
 | 	lea		SFPREGS(%a6),%a1 | 
 | 	mov.l		&23,%d0 | 
 | chkfpregs_loop: | 
 | 	cmp.l		(%a0)+,(%a1)+ | 
 | 	bne.l		chkfpregs_error | 
 | 	dbra.w		%d0,chkfpregs_loop | 
 |  | 
 | 	lea		IFPCREGS(%a6),%a0 | 
 | 	lea		SFPCREGS(%a6),%a1 | 
 | 	cmp.l		(%a0)+,(%a1)+ | 
 | 	bne.l		chkfpregs_error | 
 | 	cmp.l		(%a0)+,(%a1)+ | 
 | 	bne.l		chkfpregs_error | 
 | 	cmp.l		(%a0)+,(%a1)+ | 
 | 	bne.l		chkfpregs_error | 
 |  | 
 | 	clr.l		%d0 | 
 | 	rts | 
 |  | 
 | chkfpregs_error: | 
 | 	movq.l		&0x1,%d0 | 
 | 	rts | 
 |  | 
 | DEF_REGS: | 
 | 	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac | 
 | 	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac | 
 |  | 
 | 	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac | 
 | 	long		0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac | 
 |  | 
 | DEF_FPREGS: | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 | 	long		0x7fff0000, 0xffffffff, 0xffffffff | 
 |  | 
 | DEF_FPCREGS: | 
 | 	long		0x00000000, 0x00000000, 0x00000000 | 
 |  | 
 | ############################################################ | 
 |  | 
 | _print_str: | 
 | 	mov.l		%d0,-(%sp) | 
 | 	mov.l		(TESTTOP-0x80+0x0,%pc),%d0 | 
 | 	pea		(TESTTOP-0x80,%pc,%d0) | 
 | 	mov.l		0x4(%sp),%d0 | 
 | 	rtd		&0x4 | 
 |  | 
 | _print_num: | 
 | 	mov.l		%d0,-(%sp) | 
 | 	mov.l		(TESTTOP-0x80+0x4,%pc),%d0 | 
 | 	pea		(TESTTOP-0x80,%pc,%d0) | 
 | 	mov.l		0x4(%sp),%d0 | 
 | 	rtd		&0x4 | 
 |  | 
 | ############################################################ |