File Index
Files and directories
Sign in
FILE

ftest.S

File preview with syntax highlighting.

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