Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/m68k/ifpsp060/src/ftest.S
10820 views
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2
MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
3
M68000 Hi-Performance Microprocessor Division
4
M68060 Software Package
5
Production Release P1.00 -- October 10, 1994
6
7
M68060 Software Package Copyright © 1993, 1994 Motorola Inc. All rights reserved.
8
9
THE SOFTWARE is provided on an "AS IS" basis and without warranty.
10
To the maximum extent permitted by applicable law,
11
MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
12
INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
13
and any warranty against infringement with regard to the SOFTWARE
14
(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
15
16
To the maximum extent permitted by applicable law,
17
IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
18
(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
19
BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
20
ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
21
Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.
22
23
You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
24
so long as this entire notice is retained without alteration in any modified and/or
25
redistributed versions, and that such modified versions are clearly identified as such.
26
No licenses are granted by implication, estoppel or otherwise under any patents
27
or trademarks of Motorola, Inc.
28
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
29
#############################################
30
set SREGS, -64
31
set IREGS, -128
32
set IFPREGS, -224
33
set SFPREGS, -320
34
set IFPCREGS, -332
35
set SFPCREGS, -344
36
set ICCR, -346
37
set SCCR, -348
38
set TESTCTR, -352
39
set DATA, -384
40
41
#############################################
42
TESTTOP:
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
52
start_str:
53
string "Testing 68060 FPSP started:\n"
54
55
start_str_unimp:
56
string "Testing 68060 FPSP unimplemented instruction started:\n"
57
58
start_str_enable:
59
string "Testing 68060 FPSP exception enabled started:\n"
60
61
pass_str:
62
string "passed\n"
63
64
fail_str:
65
string " failed\n"
66
67
align 0x4
68
chk_test:
69
tst.l %d0
70
bne.b test_fail
71
test_pass:
72
pea pass_str(%pc)
73
bsr.l _print_str
74
addq.l &0x4,%sp
75
rts
76
test_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
232
unimp_str:
233
string "\tUnimplemented FP instructions..."
234
235
align 0x4
236
unimp_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
253
unimp_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
276
unimp_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
293
unimp_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
317
unimp_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
330
unimp_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
354
unimp_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
370
unimp_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
390
unimp_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
406
unimp_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
427
unimp_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
442
unimp_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
466
effadd_str:
467
string "\tUnimplemented <ea>..."
468
469
align 0x4
470
effadd_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
485
effadd_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
508
effadd_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
521
effadd_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
544
fmovml_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
574
fmovml_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
604
fmovml_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
634
fmovml_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
666
fmovmx_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
720
fmovmx_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
776
fmovmx_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.
826
ovfl_nm_str:
827
string "\tNon-maskable overflow..."
828
829
align 0x4
830
ovfl_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
848
ovfl_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.
877
ovfl_str:
878
string "\tEnabled overflow..."
879
880
align 0x4
881
ovfl_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
900
ovfl_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.
929
unfl_str:
930
string "\tEnabled underflow..."
931
932
align 0x4
933
unfl_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
952
unfl_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.
981
unfl_nm_str:
982
string "\tNon-maskable underflow..."
983
984
align 0x4
985
unfl_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
1003
unfl_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
1031
inex_str:
1032
string "\tEnabled inexact..."
1033
1034
align 0x4
1035
inex_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
1054
inex_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
1082
snan_str:
1083
string "\tEnabled SNAN..."
1084
1085
align 0x4
1086
snan_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
1105
snan_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
1133
operr_str:
1134
string "\tEnabled OPERR..."
1135
1136
align 0x4
1137
operr_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
1156
operr_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
1184
dz_str:
1185
string "\tEnabled DZ..."
1186
1187
align 0x4
1188
dz_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
1207
dz_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
1235
unsupp_str:
1236
string "\tUnimplemented data type/format..."
1237
1238
# an unnormalized number
1239
align 0x4
1240
unsupp_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
1257
unsupp_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
1281
unsupp_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
1299
unsupp_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
1323
unsupp_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
1340
unsupp_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
1369
chkregs:
1370
lea IREGS(%a6),%a0
1371
lea SREGS(%a6),%a1
1372
mov.l &14,%d0
1373
chkregs_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
1386
chkregs_error:
1387
movq.l &0x1,%d0
1388
rts
1389
1390
error:
1391
mov.l TESTCTR(%a6),%d1
1392
movq.l &0x1,%d0
1393
rts
1394
1395
chkfpregs:
1396
lea IFPREGS(%a6),%a0
1397
lea SFPREGS(%a6),%a1
1398
mov.l &23,%d0
1399
chkfpregs_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
1416
chkfpregs_error:
1417
movq.l &0x1,%d0
1418
rts
1419
1420
DEF_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
1427
DEF_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
1437
DEF_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
############################################################
1457
1458