📄 ftest.s
字号:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUPM68000 Hi-Performance Microprocessor DivisionM68060 Software PackageProduction Release P1.00 -- October 10, 1994M68060 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 PURPOSEand 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 SOFTWAREso long as this entire notice is retained without alteration in any modified and/orredistributed versions, and that such modified versions are clearly identified as such.No licenses are granted by implication, estoppel or otherwise under any patentsor trademarks of Motorola, Inc.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#############################################set SREGS, -64set IREGS, -128set IFPREGS, -224set SFPREGS, -320set IFPCREGS, -332set SFPCREGS, -344set ICCR, -346set SCCR, -348set TESTCTR, -352set DATA, -384#############################################TESTTOP: bra.l _060TESTS_ short 0x0000 bra.l _060TESTS_unimp short 0x0000 bra.l _060TESTS_enable short 0x0000start_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 0x4chk_test: tst.l %d0 bne.b test_failtest_pass: pea pass_str(%pc) bsr.l _print_str addq.l &0x4,%sp rtstest_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 0x4unimp_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,%ccunimp_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 errorunimp_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,%ccunimp_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# fmovecrunimp_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,%ccunimp_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# fsccunimp_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,%ccunimp_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# fdbccunimp_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,%ccunimp_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# ftrapccunimp_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,%ccunimp_5_pc: ftpgt.l &0xabcdef01 mov.w %cc,SCCR(%a6) movm.l &0x7fff,SREGS(%a6) fmovm.x &0xff,SFPREGS(%a6) fmovm.l %fpcr,%fpsr,%fpiar,SFPCREGS(%a6) mov.l &0x0f008080,IFPCREGS+0x4(%a6) lea unimp_5_pc(%pc),%a0 mov.l %a0,IFPCREGS+0x8(%a6) bsr.l chkregs tst.b %d0 bne.l error bsr.l chkfpregs tst.b %d0 bne.l error clr.l %d0 rts#############################################effadd_str: string "\tUnimplemented <ea>..." align 0x4effadd_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,%cceffadd_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 erroreffadd_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,%cceffadd_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 errorfmovml_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 errorfmovml_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 errorfmovml_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 errorfmovml_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 dynamicfmovmx_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 errorfmovmx_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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -