Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/m68k/ifpsp060/src/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 28 kB image not shown  

Quelle  ftest.S   Sprache: Sparc

 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
M68000 Hi-Performance Microprocessor Division
M68060 Software Package
Production Release P1.00 -- October 10, 1994

M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.

THE SOFTWARE is provided on an "AS IS" basis and without warranty.
To the maximum extent permitted by applicable law,
MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
and any warranty against infringement with regard to the SOFTWARE
(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.

To the maximum extent permitted by applicable law,
IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.

You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
so long as this entire notice is retained without alteration in any modified and/or
redistributed versions, and that such modified versions are clearly identified as such.
No licenses are granted by implication, estoppel or otherwise under any patents
or trademarks of Motorola, Inc.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#############################################
set SREGS,  -64
set IREGS,  -128
set IFPREGS, -224
set SFPREGS, -320
set IFPCREGS, -332
set SFPCREGS, -344
set ICCR,  -346
set SCCR,  -348
set TESTCTR, -352
set DATA,  -384

#############################################
TESTTOP:
 bra.l  _060TESTS_
 short  0x0000

 bra.l  _060TESTS_unimp
 short  0x0000

 bra.l  _060TESTS_enable
 short  0x0000

start_str:
 string  "Testing 68060 FPSP started:\n"

start_str_unimp:
 string  "Testing 68060 FPSP unimplemented instruction started:\n"

start_str_enable:
 string  "Testing 68060 FPSP exception enabled started:\n"

pass_str:
 string  "passed\n"

fail_str:
 string  " failed\n"

 align  0x4
chk_test:
 tst.l  %d0
 bne.b  test_fail
test_pass:
 pea  pass_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp
 rts
test_fail:
 mov.l  %d1,-(%sp)
 bsr.l  _print_num
 addq.l  &0x4,%sp

 pea  fail_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp
 rts

#############################################
_060TESTS_:
 link  %a6,&-384

 movm.l  &0x3f3c,-(%sp)
 fmovm.x  &0xff,-(%sp)

 pea  start_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

### effadd
 clr.l  TESTCTR(%a6)
 pea  effadd_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

 bsr.l  effadd_0

 bsr.l  chk_test

### unsupp
 clr.l  TESTCTR(%a6)
 pea  unsupp_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

 bsr.l  unsupp_0

 bsr.l  chk_test

### ovfl non-maskable
 clr.l  TESTCTR(%a6)
 pea  ovfl_nm_str(%pc)
 bsr.l  _print_str
 bsr.l  ovfl_nm_0

 bsr.l  chk_test

### unfl non-maskable
 clr.l  TESTCTR(%a6)
 pea  unfl_nm_str(%pc)
 bsr.l  _print_str
 bsr.l  unfl_nm_0

 bsr.l  chk_test

 movm.l  (%sp)+,&0x3cfc
 fmovm.x  (%sp)+,&0xff

 unlk  %a6
 rts

_060TESTS_unimp:
 link  %a6,&-384

 movm.l  &0x3f3c,-(%sp)
 fmovm.x  &0xff,-(%sp)

 pea  start_str_unimp(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

### unimp
 clr.l  TESTCTR(%a6)
 pea  unimp_str(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

 bsr.l  unimp_0

 bsr.l  chk_test

 movm.l  (%sp)+,&0x3cfc
 fmovm.x  (%sp)+,&0xff

 unlk  %a6
 rts

_060TESTS_enable:
 link  %a6,&-384

 movm.l  &0x3f3c,-(%sp)
 fmovm.x  &0xff,-(%sp)

 pea  start_str_enable(%pc)
 bsr.l  _print_str
 addq.l  &0x4,%sp

### snan
 clr.l  TESTCTR(%a6)
 pea  snan_str(%pc)
 bsr.l  _print_str
 bsr.l  snan_0

 bsr.l  chk_test

### operr
 clr.l  TESTCTR(%a6)
 pea  operr_str(%pc)
 bsr.l  _print_str
 bsr.l  operr_0

 bsr.l  chk_test

### ovfl
 clr.l  TESTCTR(%a6)
 pea  ovfl_str(%pc)
 bsr.l  _print_str
 bsr.l  ovfl_0

 bsr.l  chk_test

### unfl
 clr.l  TESTCTR(%a6)
 pea  unfl_str(%pc)
 bsr.l  _print_str
 bsr.l  unfl_0

 bsr.l  chk_test

### dz
 clr.l  TESTCTR(%a6)
 pea  dz_str(%pc)
 bsr.l  _print_str
 bsr.l  dz_0

 bsr.l  chk_test

### inexact
 clr.l  TESTCTR(%a6)
 pea  inex_str(%pc)
 bsr.l  _print_str
 bsr.l  inex_0

 bsr.l  chk_test

 movm.l  (%sp)+,&0x3cfc
 fmovm.x  (%sp)+,&0xff

 unlk  %a6
 rts

#############################################
#############################################

unimp_str:
 string  "\tUnimplemented FP instructions..."

 align  0x4
unimp_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x40000000,DATA+0x0(%a6)
 mov.l  &0xc90fdaa2,DATA+0x4(%a6)
 mov.l  &0x2168c235,DATA+0x8(%a6)

 mov.w  &0x0000,%cc
unimp_0_pc:
 fsin.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0xbfbf0000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x08000208,IFPCREGS+0x4(%a6)
 lea  unimp_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

unimp_1:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x3ffe0000,DATA+0x0(%a6)
 mov.l  &0xc90fdaa2,DATA+0x4(%a6)
 mov.l  &0x2168c235,DATA+0x8(%a6)

 mov.w  &0x0000,%cc
unimp_1_pc:
 ftan.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x3fff0000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x00000208,IFPCREGS+0x4(%a6)
 lea  unimp_1_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# fmovecr
unimp_2:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc
unimp_2_pc:
 fmovcr.x &0x31,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x40000000,IFPREGS+0x0(%a6)
 mov.l  &0x935d8ddd,IFPREGS+0x4(%a6)
 mov.l  &0xaaa8ac17,IFPREGS+0x8(%a6)
 mov.l  &0x00000208,IFPCREGS+0x4(%a6)
 lea  unimp_2_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# fscc
unimp_3:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.l  &0x0f000000,%fpsr
 mov.l  &0x00,%d7

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc
unimp_3_pc:
 fsgt  %d7

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0f008080,IFPCREGS+0x4(%a6)
 lea  unimp_3_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# fdbcc
unimp_4:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.l  &0x0f000000,%fpsr
 mov.l  &0x2,%d7

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc
unimp_4_pc:
 fdbgt.w  %d7,unimp_4_pc

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.w  &0xffff,IREGS+28+2(%a6)
 mov.l  &0x0f008080,IFPCREGS+0x4(%a6)
 lea  unimp_4_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# ftrapcc
unimp_5:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.l  &0x0f000000,%fpsr

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc
unimp_5_pc:
 ftpgt.l  &0xabcdef01

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0f008080,IFPCREGS+0x4(%a6)
 lea  unimp_5_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#############################################

effadd_str:
 string  "\tUnimplemented ..."

 align  0x4
effadd_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmov.b  &0x2,%fp0

 mov.w  &0x0000,%cc
effadd_0_pc:
 fmul.x  &0xc00000008000000000000000,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0xc0010000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x08000000,IFPCREGS+0x4(%a6)
 lea  effadd_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

effadd_1:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc
effadd_1_pc:
 fabs.p  &0xc12300012345678912345678,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x3e660000,IFPREGS+0x0(%a6)
 mov.l  &0xd0ed23e8,IFPREGS+0x4(%a6)
 mov.l  &0xd14035bc,IFPREGS+0x8(%a6)
 mov.l  &0x00000108,IFPCREGS+0x4(%a6)
 lea  effadd_1_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovml_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 mov.w  &0x0000,%cc
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmovm.l  &0xffffffffffffffff,%fpcr,%fpsr

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0000fff0,IFPCREGS+0x0(%a6)
 mov.l  &0x0ffffff8,IFPCREGS+0x4(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovml_1:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 mov.w  &0x0000,%cc
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmovm.l  &0xffffffffffffffff,%fpcr,%fpiar

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0000fff0,IFPCREGS+0x0(%a6)
 mov.l  &0xffffffff,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovml_2:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 mov.w  &0x0000,%cc
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmovm.l  &0xffffffffffffffff,%fpsr,%fpiar

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0ffffff8,IFPCREGS+0x4(%a6)
 mov.l  &0xffffffff,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovml_3:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 mov.w  &0x0000,%cc
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmovm.l  &0xffffffffffffffffffffffff,%fpcr,%fpsr,%fpiar

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)
 mov.l  &0x0000fff0,IFPCREGS+0x0(%a6)
 mov.l  &0x0ffffff8,IFPCREGS+0x4(%a6)
 mov.l  &0xffffffff,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# fmovmx dynamic
fmovmx_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.b  &0x1,%fp0
 fmov.b  &0x2,%fp1
 fmov.b  &0x3,%fp2
 fmov.b  &0x4,%fp3
 fmov.b  &0x5,%fp4
 fmov.b  &0x6,%fp5
 fmov.b  &0x7,%fp6
 fmov.b  &0x8,%fp7

 fmov.l  &0x0,%fpiar
 mov.l  &0xffffffaa,%d0

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0xffff,IREGS(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)

 mov.w  &0x0000,%cc

 fmovm.x  %d0,-(%sp)

 mov.w  %cc,SCCR(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 fmov.s  &0x7f800000,%fp1
 fmov.s  &0x7f800000,%fp3
 fmov.s  &0x7f800000,%fp5
 fmov.s  &0x7f800000,%fp7

 fmov.x  (%sp)+,%fp1
 fmov.x  (%sp)+,%fp3
 fmov.x  (%sp)+,%fp5
 fmov.x  (%sp)+,%fp7

 movm.l  &0xffff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovmx_1:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.b  &0x1,%fp0
 fmov.b  &0x2,%fp1
 fmov.b  &0x3,%fp2
 fmov.b  &0x4,%fp3
 fmov.b  &0x5,%fp4
 fmov.b  &0x6,%fp5
 fmov.b  &0x7,%fp6
 fmov.b  &0x8,%fp7

 fmov.x  %fp6,-(%sp)
 fmov.x  %fp4,-(%sp)
 fmov.x  %fp2,-(%sp)
 fmov.x  %fp0,-(%sp)

 fmovm.x  &0xff,IFPREGS(%a6)

 fmov.s  &0x7f800000,%fp6
 fmov.s  &0x7f800000,%fp4
 fmov.s  &0x7f800000,%fp2
 fmov.s  &0x7f800000,%fp0

 fmov.l  &0x0,%fpiar
 fmov.l  &0x0,%fpsr
 mov.l  &0xffffffaa,%d0

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0xffff,IREGS(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.w  &0x0000,%cc

 fmovm.x  (%sp)+,%d0

 mov.w  %cc,SCCR(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 movm.l  &0xffff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

fmovmx_2:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 fmov.b  &0x1,%fp0
 fmov.b  &0x2,%fp1
 fmov.b  &0x3,%fp2
 fmov.b  &0x4,%fp3
 fmov.b  &0x5,%fp4
 fmov.b  &0x6,%fp5
 fmov.b  &0x7,%fp6
 fmov.b  &0x8,%fp7

 fmov.l  &0x0,%fpiar
 mov.l  &0xffffff00,%d0

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0xffff,IREGS(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)

 mov.w  &0x0000,%cc

 fmovm.x  %d0,-(%sp)

 mov.w  %cc,SCCR(%a6)

 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 movm.l  &0xffff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

###########################################################

# This test will take a non-maskable overflow directly.
ovfl_nm_str:
 string  "\tNon-maskable overflow..."

 align  0x4
ovfl_nm_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmov.b  &0x2,%fp0
 mov.l  &0x7ffe0000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)

 mov.w  &0x0000,%cc
ovfl_nm_0_pc:
 fmul.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x7fff0000,IFPREGS+0x0(%a6)
 mov.l  &0x00000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x02001048,IFPCREGS+0x4(%a6)
 lea  ovfl_nm_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

###########################################################

# This test will take an overflow directly.
ovfl_str:
 string  "\tEnabled overflow..."

 align  0x4
ovfl_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00001000,%fpcr
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 fmov.b  &0x2,%fp0
 mov.l  &0x7ffe0000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)

 mov.w  &0x0000,%cc
ovfl_0_pc:
 fmul.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x7fff0000,IFPREGS+0x0(%a6)
 mov.l  &0x00000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x02001048,IFPCREGS+0x4(%a6)
 lea  ovfl_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

# This test will take an underflow directly.
unfl_str:
 string  "\tEnabled underflow..."

 align  0x4
unfl_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00000800,%fpcr
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x00000000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
unfl_0_pc:
 fdiv.b  &0x2,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x00000000,IFPREGS+0x0(%a6)
 mov.l  &0x40000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x00000800,IFPCREGS+0x4(%a6)
 lea  unfl_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

# This test will take a non-maskable underflow directly.
unfl_nm_str:
 string  "\tNon-maskable underflow..."

 align  0x4
unfl_nm_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x00000000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
unfl_nm_0_pc:
 fdiv.b  &0x2,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x00000000,IFPREGS+0x0(%a6)
 mov.l  &0x40000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x00000800,IFPCREGS+0x4(%a6)
 lea  unfl_nm_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

inex_str:
 string  "\tEnabled inexact..."

 align  0x4
inex_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00000200,%fpcr  # enable inexact
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x50000000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
inex_0_pc:
 fadd.b  &0x2,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x50000000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x00000208,IFPCREGS+0x4(%a6)
 lea  inex_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

snan_str:
 string  "\tEnabled SNAN..."

 align  0x4
snan_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00004000,%fpcr  # enable SNAN
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0xffff0000,DATA+0x0(%a6)
 mov.l  &0x00000000,DATA+0x4(%a6)
 mov.l  &0x00000001,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
snan_0_pc:
 fadd.b  &0x2,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0xffff0000,IFPREGS+0x0(%a6)
 mov.l  &0x00000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000001,IFPREGS+0x8(%a6)
 mov.l  &0x09004080,IFPCREGS+0x4(%a6)
 lea  snan_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

operr_str:
 string  "\tEnabled OPERR..."

 align  0x4
operr_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00002000,%fpcr  # enable OPERR
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0xffff0000,DATA+0x0(%a6)
 mov.l  &0x00000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
operr_0_pc:
 fadd.s  &0x7f800000,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0xffff0000,IFPREGS+0x0(%a6)
 mov.l  &0x00000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x01002080,IFPCREGS+0x4(%a6)
 lea  operr_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

dz_str:
 string  "\tEnabled DZ..."

 align  0x4
dz_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmov.l  &0x00000400,%fpcr  # enable DZ
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x40000000,DATA+0x0(%a6)
 mov.l  &0x80000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmovm.x  DATA(%a6),&0x80

 mov.w  &0x0000,%cc
dz_0_pc:
 fdiv.b  &0x0,%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x40000000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x02000410,IFPCREGS+0x4(%a6)
 lea  dz_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

#####################################################################

unsupp_str:
 string  "\tUnimplemented data type/format..."

# an unnormalized number
 align  0x4
unsupp_0:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0xc03f0000,DATA+0x0(%a6)
 mov.l  &0x00000000,DATA+0x4(%a6)
 mov.l  &0x00000001,DATA+0x8(%a6)
 fmov.b  &0x2,%fp0
 mov.w  &0x0000,%cc
unsupp_0_pc:
 fmul.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0xc0010000,IFPREGS+0x0(%a6)
 mov.l  &0x80000000,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x08000000,IFPCREGS+0x4(%a6)
 lea  unsupp_0_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# a denormalized number
unsupp_1:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0x80000000,DATA+0x0(%a6)
 mov.l  &0x01000000,DATA+0x4(%a6)
 mov.l  &0x00000000,DATA+0x8(%a6)
 fmov.l  &0x7fffffff,%fp0

 mov.w  &0x0000,%cc
unsupp_1_pc:
 fmul.x  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x80170000,IFPREGS+0x0(%a6)
 mov.l  &0xfffffffe,IFPREGS+0x4(%a6)
 mov.l  &0x00000000,IFPREGS+0x8(%a6)
 mov.l  &0x08000000,IFPCREGS+0x4(%a6)
 lea  unsupp_1_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

# packed
unsupp_2:
 addq.l  &0x1,TESTCTR(%a6)

 movm.l  DEF_REGS(%pc),&0x3fff
 fmovm.x  DEF_FPREGS(%pc),&0xff
 fmovm.l  DEF_FPCREGS(%pc),%fpcr,%fpsr,%fpiar

 mov.w  &0x0000,ICCR(%a6)
 movm.l  &0x7fff,IREGS(%a6)
 fmovm.x  &0xff,IFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,IFPCREGS(%a6)

 mov.l  &0xc1230001,DATA+0x0(%a6)
 mov.l  &0x23456789,DATA+0x4(%a6)
 mov.l  &0x12345678,DATA+0x8(%a6)

 mov.w  &0x0000,%cc
unsupp_2_pc:
 fabs.p  DATA(%a6),%fp0

 mov.w  %cc,SCCR(%a6)
 movm.l  &0x7fff,SREGS(%a6)
 fmovm.x  &0xff,SFPREGS(%a6)
 fmovm.l  %fpcr,%fpsr,%fpiar,SFPCREGS(%a6)

 mov.l  &0x3e660000,IFPREGS+0x0(%a6)
 mov.l  &0xd0ed23e8,IFPREGS+0x4(%a6)
 mov.l  &0xd14035bc,IFPREGS+0x8(%a6)
 mov.l  &0x00000108,IFPCREGS+0x4(%a6)
 lea  unsupp_2_pc(%pc),%a0
 mov.l  %a0,IFPCREGS+0x8(%a6)

 bsr.l  chkregs
 tst.b  %d0
 bne.l  error

 bsr.l  chkfpregs
 tst.b  %d0
 bne.l  error

 clr.l  %d0
 rts

###########################################################
###########################################################

chkregs:
 lea  IREGS(%a6),%a0
 lea  SREGS(%a6),%a1
 mov.l  &14,%d0
chkregs_loop:
 cmp.l  (%a0)+,(%a1)+
 bne.l  chkregs_error
 dbra.w  %d0,chkregs_loop

 mov.w  ICCR(%a6),%d0
 mov.w  SCCR(%a6),%d1
 cmp.w  %d0,%d1
 bne.l  chkregs_error

 clr.l  %d0
 rts

chkregs_error:
 movq.l  &0x1,%d0
 rts

error:
 mov.l  TESTCTR(%a6),%d1
 movq.l  &0x1,%d0
 rts

chkfpregs:
 lea  IFPREGS(%a6),%a0
 lea  SFPREGS(%a6),%a1
 mov.l  &23,%d0
chkfpregs_loop:
 cmp.l  (%a0)+,(%a1)+
 bne.l  chkfpregs_error
 dbra.w  %d0,chkfpregs_loop

 lea  IFPCREGS(%a6),%a0
 lea  SFPCREGS(%a6),%a1
 cmp.l  (%a0)+,(%a1)+
 bne.l  chkfpregs_error
 cmp.l  (%a0)+,(%a1)+
 bne.l  chkfpregs_error
 cmp.l  (%a0)+,(%a1)+
 bne.l  chkfpregs_error

 clr.l  %d0
 rts

chkfpregs_error:
 movq.l  &0x1,%d0
 rts

DEF_REGS:
 long  0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
 long  0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac

 long  0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac
 long  0xacacacac, 0xacacacac, 0xacacacac, 0xacacacac

DEF_FPREGS:
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff
 long  0x7fff0000, 0xffffffff, 0xffffffff

DEF_FPCREGS:
 long  0x00000000, 0x00000000, 0x00000000

############################################################

_print_str:
 mov.l  %d0,-(%sp)
 mov.l  (TESTTOP-0x80+0x0,%pc),%d0
 pea  (TESTTOP-0x80,%pc,%d0)
 mov.l  0x4(%sp),%d0
 rtd  &0x4

_print_num:
 mov.l  %d0,-(%sp)
 mov.l  (TESTTOP-0x80+0x4,%pc),%d0
 pea  (TESTTOP-0x80,%pc,%d0)
 mov.l  0x4(%sp),%d0
 rtd  &0x4

############################################################

Messung V0.5
C=100 H=100 G=100

¤ Dauer der Verarbeitung: 0.14 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.