Previous 199869 Revisions Next

r31792 Tuesday 26th August, 2014 at 21:00:27 UTC by Ryan Holtz
mips3drc: Throw badcop exceptions on COP1 accesses while the COP1 status bit is
 not enabled [MarathonMan]
[src/emu/cpu/mips]mips3drc.c

trunk/src/emu/cpu/mips/mips3drc.c
r31791r31792
16171617         return TRUE;
16181618
16191619      case 0x31:  /* LWC1 - MIPS I */
1620         UML_TEST(block, CPR032(COP0_Status), SR_COP1);                          // test    [Status],SR_COP1
1621         UML_EXHc(block, COND_Z, *m_exception[EXCEPTION_BADCOP], 1);            // exh     cop,1,Z
16201622         UML_ADD(block, I0, R32(RSREG), SIMMVAL);                        // add     i0,<rsreg>,SIMMVAL
16211623         UML_CALLH(block, *m_read32[m_core->mode >> 1]); // callh   read32
16221624         UML_MOV(block, FPR32(RTREG), I0);                                   // mov     <cpr1_rt>,i0
r31791r31792
16251627         return TRUE;
16261628
16271629      case 0x35:  /* LDC1 - MIPS III */
1630         UML_TEST(block, CPR032(COP0_Status), SR_COP1);                          // test    [Status],SR_COP1
1631         UML_EXHc(block, COND_Z, *m_exception[EXCEPTION_BADCOP], 1);            // exh     cop,1,Z
16281632         UML_ADD(block, I0, R32(RSREG), SIMMVAL);                        // add     i0,<rsreg>,SIMMVAL
16291633         UML_CALLH(block, *m_read64[m_core->mode >> 1]); // callh   read64
16301634         UML_DMOV(block, FPR64(RTREG), I0);                                  // dmov    <cpr1_rt>,i0
r31791r31792
17681772         return TRUE;
17691773
17701774      case 0x39:  /* SWC1 - MIPS I */
1775         UML_TEST(block, CPR032(COP0_Status), SR_COP1);                          // test    [Status],SR_COP1
1776         UML_EXHc(block, COND_Z, *m_exception[EXCEPTION_BADCOP], 1);            // exh     cop,1,Z
17711777         UML_ADD(block, I0, R32(RSREG), SIMMVAL);                        // add     i0,<rsreg>,SIMMVAL
17721778         UML_MOV(block, I1, FPR32(RTREG));                                   // mov     i1,<cpr1_rt>
17731779         UML_CALLH(block, *m_write32[m_core->mode >> 1]);    // callh   write32
r31791r31792
17761782         return TRUE;
17771783
17781784      case 0x3d:  /* SDC1 - MIPS III */
1785         UML_TEST(block, CPR032(COP0_Status), SR_COP1);                          // test    [Status],SR_COP1
1786         UML_EXHc(block, COND_Z, *m_exception[EXCEPTION_BADCOP], 1);            // exh     cop,1,Z
17791787         UML_ADD(block, I0, R32(RSREG), SIMMVAL);                        // add     i0,<rsreg>,SIMMVAL
17801788         UML_DMOV(block, I1, FPR64(RTREG));                                  // dmov    i1,<cpr1_rt>
17811789         UML_CALLH(block, *m_write64[m_core->mode >> 1]);    // callh   write64

Previous 199869 Revisions Next


© 1997-2024 The MAME Team