diff options
Diffstat (limited to 'arch/m68k/ifpsp060/src/itest.S')
-rw-r--r-- | arch/m68k/ifpsp060/src/itest.S | 6386 |
1 files changed, 6386 insertions, 0 deletions
diff --git a/arch/m68k/ifpsp060/src/itest.S b/arch/m68k/ifpsp060/src/itest.S new file mode 100644 index 00000000000..ba4a30cbcbe --- /dev/null +++ b/arch/m68k/ifpsp060/src/itest.S @@ -0,0 +1,6386 @@ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +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 SCCR, -130 +set ICCR, -132 +set TESTCTR, -136 +set EAMEM, -140 +set EASTORE, -144 +set DATA, -160 + +############################################# +TESTTOP: + bra.l _060TESTS_ + +start_str: + string "Testing 68060 ISP 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,&-160 + + movm.l &0x3f3c,-(%sp) + + pea start_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + +### mul + clr.l TESTCTR(%a6) + pea mulul_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l mulul_0 + + bsr.l chk_test + +### div + clr.l TESTCTR(%a6) + pea divul_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l divul_0 + + bsr.l chk_test + +### cmp2 + clr.l TESTCTR(%a6) + pea cmp2_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l cmp2_1 + + bsr.l chk_test + +### movp + clr.l TESTCTR(%a6) + pea movp_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l movp_0 + + bsr.l chk_test + +### ea + clr.l TESTCTR(%a6) + pea ea_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + mov.l &0x2,EAMEM(%a6) + bsr.l ea_0 + + bsr.l chk_test + +### cas + clr.l TESTCTR(%a6) + pea cas_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l cas0 + + bsr.l chk_test + +### cas2 + clr.l TESTCTR(%a6) + pea cas2_str(%pc) + bsr.l _print_str + addq.l &0x4,%sp + + bsr.l cas20 + + bsr.l chk_test + +### + movm.l (%sp)+,&0x3cfc + + unlk %a6 + rts + +############################################# +############################################# + +mulul_str: + string "\t64-bit multiply..." + + align 0x4 +mulul_0: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + clr.l %d1 + mov.l &0x99999999,%d2 + mov.l &0x88888888,%d3 + + mov.w &0x0004,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + clr.l IREGS+0x8(%a6) + clr.l IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_1: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x77777777,%d1 + mov.l &0x99999999,%d2 + mov.l &0x00000000,%d3 + + mov.w &0x0004,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + clr.l IREGS+0x8(%a6) + clr.l IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_2: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x00000010,%d1 + mov.l &0x66666666,%d2 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d2 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x00000006,IREGS+0x8(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_3: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x55555555,%d1 + mov.l &0x00000000,%d2 + mov.l &0x00000003,%d3 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x00000000,IREGS+0x8(%a6) + mov.l &0xffffffff,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_4: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x40000000,%d1 + mov.l &0x00000000,%d2 + mov.l &0x00000004,%d3 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x00000001,IREGS+0x8(%a6) + mov.l &0x00000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_5: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0xffffffff,%d1 + mov.l &0x00000000,%d2 + mov.l &0xffffffff,%d3 + + mov.w &0x0008,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + mulu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xfffffffe,IREGS+0x8(%a6) + mov.l &0x00000001,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_6: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x80000000,%d1 + mov.l &0x00000000,%d2 + mov.l &0xffffffff,%d3 + + mov.w &0x00000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + muls.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x00000000,IREGS+0x8(%a6) + mov.l &0x80000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_7: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x80000000,%d1 + mov.l &0x00000000,%d2 + mov.l &0x00000001,%d3 + + mov.w &0x0008,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + muls.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xffffffff,IREGS+0x8(%a6) + mov.l &0x80000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +mulul_8: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x00000001,%d1 + mov.l &0x00000000,%d2 + mov.l &0x80000000,%d3 + + mov.w &0x0008,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + muls.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xffffffff,IREGS+0x8(%a6) + mov.l &0x80000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + + mov.l TESTCTR(%a6),%d1 + clr.l %d0 + rts + +############################################# + +movp_str: + string "\tmovep..." + + align 0x4 +############################### +# movep.w %d0,(0x0,%a0) # +############################### +movp_0: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.b 0x0(%a0) + clr.b 0x2(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0(%a0),%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w %d0,(0x0,%a0) # +############################### +movp_1: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x4(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.l -0x4(%a0) + clr.l (%a0) + clr.l 0x4(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + tst.l -0x4(%a0) + bne.l error + tst.l 0x4(%a0) + bne.l error + cmpi.l (%a0),&0xaa00aa00 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +##################################################### +# movep.w %d0,(0x0,%a0) # +# - this test has %cc initially equal to zero # +##################################################### +movp_2: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.b 0x0(%a0) + clr.b 0x2(%a0) + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0(%a0),%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w (0x0,%a0),%d0 # +############################### +movp_3: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.b &0xaa,0x0(%a0) + mov.b &0xaa,0x2(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w (0x0,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.w &0xaaaa,IREGS+0x2(%a6) + + mov.w &0xaaaa,%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.l %d0,(0x0,%a0) # +############################### +movp_4: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.l &0xaaaaaaaa,%d0 + clr.b 0x0(%a0) + clr.b 0x2(%a0) + clr.b 0x4(%a0) + clr.b 0x6(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x6(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x4(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x2(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x0(%a0),%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.l %d0,(0x0,%a0) # +############################### +movp_5: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x4(%a6),%a0 + mov.l &0xaaaaaaaa,%d0 + clr.l -0x4(%a0) + clr.l (%a0) + clr.l 0x4(%a0) + clr.l 0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + tst.l -0x4(%a0) + bne.l error + tst.l 0x8(%a0) + bne.l error + cmpi.l (%a0),&0xaa00aa00 + bne.l error + cmpi.l 0x4(%a0),&0xaa00aa00 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.l (0x0,%a0),%d0 # +############################### +movp_6: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.b &0xaa,0x0(%a0) + mov.b &0xaa,0x2(%a0) + mov.b &0xaa,0x4(%a0) + mov.b &0xaa,0x6(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l (0x0,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xaaaaaaaa,IREGS(%a6) + + mov.l &0xaaaaaaaa,%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w %d7,(0x0,%a0) # +############################### +movp_7: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.w &0xaaaa,%d7 + clr.b 0x0(%a0) + clr.b 0x2(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d7,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0(%a0),%d1 + + cmp.w %d7,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w (0x0,%a0),%d7 # +############################### +movp_8: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.b &0xaa,0x0(%a0) + mov.b &0xaa,0x2(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w (0x0,%a0),%d7 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.w &0xaaaa,IREGS+30(%a6) + + mov.w &0xaaaa,%d1 + + cmp.w %d7,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w %d0,(0x0,%a0) # +############################### +movp_9: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.b 0x0(%a0) + clr.b 0x2(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(0x0,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0(%a0),%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w %d0,(0x8,%a0) # +############################### +movp_10: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.b 0x0+0x8(%a0) + clr.b 0x2+0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(0x8,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2+0x8(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0+0x8(%a0),%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.w (0x8,%a0),%d0 # +############################### +movp_11: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.b &0xaa,0x0+0x8(%a0) + mov.b &0xaa,0x2+0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w (0x8,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.w &0xaaaa,IREGS+0x2(%a6) + + mov.w &0xaaaa,%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.l %d0,(0x8,%a0) # +############################### +movp_12: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.l &0xaaaaaaaa,%d0 + clr.b 0x0+0x8(%a0) + clr.b 0x2+0x8(%a0) + clr.b 0x4+0x8(%a0) + clr.b 0x6+0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l %d0,(0x8,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x6+0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x4+0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x2+0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x0+0x8(%a0),%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +############################### +# movep.l (0x8,%a0),%d0 # +############################### +movp_13: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA(%a6),%a0 + mov.b &0xaa,0x0+0x8(%a0) + mov.b &0xaa,0x2+0x8(%a0) + mov.b &0xaa,0x4+0x8(%a0) + mov.b &0xaa,0x6+0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l (0x8,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xaaaaaaaa,IREGS(%a6) + + mov.l &0xaaaaaaaa,%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +################################ +# movep.w %d0,(-0x8,%a0) # +################################ +movp_14: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x8(%a6),%a0 + mov.w &0xaaaa,%d0 + clr.b 0x0-0x8(%a0) + clr.b 0x2-0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w %d0,(-0x8,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x2-0x8(%a0),%d1 + lsl.w &0x8,%d1 + mov.b 0x0-0x8(%a0),%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +################################ +# movep.w (-0x8,%a0),%d0 # +################################ +movp_15: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x8(%a6),%a0 + mov.b &0xaa,0x0-0x8(%a0) + mov.b &0xaa,0x2-0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.w (-0x8,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.w &0xaaaa,IREGS+0x2(%a6) + + mov.w &0xaaaa,%d1 + + cmp.w %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +################################ +# movep.l %d0,(-0x8,%a0) # +################################ +movp_16: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x8(%a6),%a0 + mov.l &0xaaaaaaaa,%d0 + clr.b 0x0-0x8(%a0) + clr.b 0x2-0x8(%a0) + clr.b 0x4-0x8(%a0) + clr.b 0x8-0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l %d0,(-0x8,%a0) + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + mov.b 0x6-0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x4-0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x2-0x8(%a0),%d1 + lsl.l &0x8,%d1 + mov.b 0x0-0x8(%a0),%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + +################################ +# movep.l (-0x8,%a0),%d0 # +################################ +movp_17: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x8(%a6),%a0 + mov.b &0xaa,0x0-0x8(%a0) + mov.b &0xaa,0x2-0x8(%a0) + mov.b &0xaa,0x4-0x8(%a0) + mov.b &0xaa,0x8-0x8(%a0) + + mov.w &0x001f,ICCR(%a6) + mov.w &0x1f,%cc + movm.l &0x7fff,IREGS(%a6) + + movp.l (-0x8,%a0),%d0 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xaaaaaaaa,IREGS(%a6) + + mov.l &0xaaaaaaaa,%d1 + + cmp.l %d0,%d1 + bne.l error + + bsr.l chkregs + tst.b %d0 + bne.l error + + mov.l TESTCTR(%a6),%d1 + clr.l %d0 + rts + +########################################################### + +divul_str: + string "\t64-bit divide..." + + align 0x4 +divul_0: + addq.l &0x1,TESTCTR(%a6) + +# movm.l DEF_REGS(%pc),&0x3fff + +# clr.l %d1 +# mov.l &0x99999999,%d2 +# mov.l &0x88888888,%d3 + +# mov.w &0x001e,ICCR(%a6) +# mov.w &0x001f,%cc +# movm.l &0x7fff,IREGS(%a6) + +# divu.l %d1,%d2:%d3 + +# mov.w %cc,SCCR(%a6) +# movm.l &0x7fff,SREGS(%a6) + +# bsr.l chkregs +# tst.b %d0 +# bne.l error + +divul_1: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x00000001,%d1 + mov.l &0x00000000,%d2 + mov.l &0x00000000,%d3 + + mov.w &0x0014,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_2: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x44444444,%d1 + mov.l &0x00000000,%d2 + mov.l &0x55555555,%d3 + + mov.w &0x0010,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x11111111,IREGS+0x8(%a6) + mov.l &0x00000001,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_3: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x55555555,%d1 + mov.l &0x00000000,%d2 + mov.l &0x44444444,%d3 + + mov.w &0x0014,ICCR(%a6) + mov.w &0x001f,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x44444444,IREGS+0x8(%a6) + mov.l &0x00000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_4: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x11111111,%d1 + mov.l &0x44444444,%d2 + mov.l &0x44444444,%d3 + + mov.w &0x001e,ICCR(%a6) + mov.w &0x001d,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_5: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0xfffffffe,%d1 + mov.l &0x00000001,%d2 + mov.l &0x00000002,%d3 + + mov.w &0x001e,ICCR(%a6) + mov.w &0x001d,%cc + movm.l &0x7fff,IREGS(%a6) + + divs.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_6: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0xfffffffe,%d1 + mov.l &0x00000001,%d2 + mov.l &0x00000000,%d3 + + mov.w &0x0018,ICCR(%a6) + mov.w &0x001d,%cc + movm.l &0x7fff,IREGS(%a6) + + divs.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x00000000,IREGS+0x8(%a6) + mov.l &0x80000000,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_7: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x00000002,%d1 + mov.l &0x00000001,%d2 + mov.l &0x00000000,%d3 + + mov.w &0x001e,ICCR(%a6) + mov.w &0x001d,%cc + movm.l &0x7fff,IREGS(%a6) + + divs.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_8: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0xffffffff,%d1 + mov.l &0xfffffffe,%d2 + mov.l &0xffffffff,%d3 + + mov.w &0x0008,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_9: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0xffffffff,%d1 + mov.l &0xfffffffe,%d2 + mov.l &0xffffffff,%d3 + + mov.w &0x0008,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l &0xffffffff,%d2:%d2 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0xffffffff,IREGS+0x8(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +divul_10: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + mov.l &0x0000ffff,%d1 + mov.l &0x00000001,%d2 + mov.l &0x55555555,%d3 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + divu.l %d1,%d2:%d3 + + mov.w %cc,SCCR(%a6) + movm.l &0x7fff,SREGS(%a6) + mov.l &0x0000aaab,IREGS+0x8(%a6) + mov.l &0x00015556,IREGS+0xc(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + + mov.l TESTCTR(%a6),%d1 + clr.l %d0 + rts + +########################################################### + +cas_str: + string "\tcas..." + + align 0x4 +cas0: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x1(%a6),%a0 + + mov.w &0xaaaa,(%a0) + + mov.w &0xaaaa,%d1 + mov.w &0xbbbb,%d2 + + mov.w &0x0014,ICCR(%a6) + mov.w &0x0010,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.w %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.w (%a0),%d3 + mov.w &0xbbbb,IREGS+0xc+0x2(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +cas1: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x1(%a6),%a0 + + mov.w &0xeeee,(%a0) + + mov.w &0x0000aaaa,%d1 + mov.w &0x0000bbbb,%d2 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.w %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.w (%a0),%d3 + mov.w &0xeeee,IREGS+0x4+0x2(%a6) + mov.w &0xeeee,IREGS+0xc+0x2(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +cas2: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x2(%a6),%a0 + + mov.l &0xaaaaaaaa,(%a0) + + mov.l &0xaaaaaaaa,%d1 + mov.l &0xbbbbbbbb,%d2 + + mov.w &0x0004,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.l %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.l (%a0),%d3 + mov.l &0xbbbbbbbb,IREGS+0xc(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +cas3: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x2(%a6),%a0 + + mov.l &0xeeeeeeee,(%a0) + + mov.l &0xaaaaaaaa,%d1 + mov.l &0xbbbbbbbb,%d2 + + mov.w &0x0000,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.l %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.l (%a0),%d3 + mov.l &0xeeeeeeee,IREGS+0x4(%a6) + mov.l &0xeeeeeeee,IREGS+0xc(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +cas4: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x1(%a6),%a0 + + mov.l &0xaaaaaaaa,(%a0) + + mov.l &0xaaaaaaaa,%d1 + mov.l &0xbbbbbbbb,%d2 + + mov.w &0x0004,ICCR(%a6) + mov.w &0x0000,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.l %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.l (%a0),%d3 + mov.l &0xbbbbbbbb,IREGS+0xc(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + +cas5: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x1(%a6),%a0 + + mov.l &0x7fffffff,(%a0) + + mov.l &0x80000000,%d1 + mov.l &0xbbbbbbbb,%d2 + + mov.w &0x001b,ICCR(%a6) + mov.w &0x0010,%cc + movm.l &0x7fff,IREGS(%a6) + + cas.l %d1,%d2,(%a0) # Dc,Du,<ea> + + mov.w %cc,SCCR(%a6) + mov.l (%a0),%d3 + mov.l &0x7fffffff,IREGS+0x4(%a6) + mov.l &0x7fffffff,IREGS+0xc(%a6) + movm.l &0x7fff,SREGS(%a6) + + bsr.l chkregs + tst.b %d0 + bne.l error + + mov.l TESTCTR(%a6),%d1 + clr.l %d0 + rts + +########################################################### + +cas2_str: + string "\tcas2..." + + align 0x4 +cas20: + addq.l &0x1,TESTCTR(%a6) + + movm.l DEF_REGS(%pc),&0x3fff + + lea DATA+0x0(%a6),%a0 + lea DATA+0x4(%a6),%a1 + + mov.l &0xaaaaaaaa,(%a0) + mov.l &0xbbbbbbbb,(%a1) + + mov.l &0xaaaaaaaa,%d1 + mov.l &0xbbbbbbbb,%d2 + mov.l &0xcccccccc,%d3 + mov.l &0xdddddddd,%d4 + + mov.w &0x0014,ICCR(%a6) + mov.w &0x0010,%cc + movm.l &0x7fff,IREGS(%a6) + + cas2.l %d1:%d2,%d |