Force the EXL bit to stay active even if it's forced to be cleared with MTC0.

git-svn-id: http://svn.purei.org/purei/trunk@795 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
jpd002 2011-10-18 19:48:51 +00:00
parent 7d4327555f
commit bd3b167fde

View File

@ -82,7 +82,18 @@ void CCOP_SCU::MFC0()
void CCOP_SCU::MTC0()
{
m_codeGen->PushRel(offsetof(CMIPS, m_State.nGPR[m_nRT].nV[0]));
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
if(m_nRD == CCOP_SCU::STATUS)
{
//Keep the EXL bit
//This is needed for Valkyrie Profile 2 which resets the EXL bit
m_codeGen->PushRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
m_codeGen->PushCst(CMIPS::STATUS_EXL);
m_codeGen->And();
m_codeGen->Or();
}
m_codeGen->PullRel(offsetof(CMIPS, m_State.nCOP0[m_nRD]));
}
//08