OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [m68k/] [ifpsp060/] [src/] [ftest.S] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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 ..."
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
############################################################

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.