[Android[ Implement CArmRecompilerOps::ORI
This commit is contained in:
parent
ac91bd8ce1
commit
2c3b810288
|
@ -1961,15 +1961,66 @@ void CArmRecompilerOps::ANDI()
|
||||||
|
|
||||||
void CArmRecompilerOps::ORI()
|
void CArmRecompilerOps::ORI()
|
||||||
{
|
{
|
||||||
UnMap_GPR(m_Opcode.rt, true);
|
if (m_Opcode.rt == 0)
|
||||||
if (m_Opcode.rs != 0) { WriteBack_GPR(m_Opcode.rs, false); }
|
|
||||||
if (g_Settings->LoadBool(Game_32Bit))
|
|
||||||
{
|
{
|
||||||
CompileInterpterCall((void *)R4300iOp32::ORI, "R4300iOp32::ORI");
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_System->bFastSP() && m_Opcode.rs == 29 && m_Opcode.rt == 29)
|
||||||
|
{
|
||||||
|
//OrConstToX86Reg(m_Opcode.immediate, Map_MemoryStack(x86_Any, true));
|
||||||
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsConst(m_Opcode.rs))
|
||||||
|
{
|
||||||
|
if (IsMapped(m_Opcode.rt))
|
||||||
|
{
|
||||||
|
UnMap_GPR(m_Opcode.rt, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_RegWorkingSet.SetMipsRegState(m_Opcode.rt, GetMipsRegState(m_Opcode.rs));
|
||||||
|
m_RegWorkingSet.SetMipsRegHi(m_Opcode.rt, GetMipsRegHi(m_Opcode.rs));
|
||||||
|
m_RegWorkingSet.SetMipsRegLo(m_Opcode.rt, GetMipsRegLo(m_Opcode.rs) | m_Opcode.immediate);
|
||||||
|
}
|
||||||
|
else if (IsMapped(m_Opcode.rs))
|
||||||
|
{
|
||||||
|
ProtectGPR(m_Opcode.rs);
|
||||||
|
if (g_System->b32BitCore())
|
||||||
|
{
|
||||||
|
Map_GPR_32bit(m_Opcode.rt, true, -1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (Is64Bit(m_Opcode.rs))
|
||||||
|
{
|
||||||
|
Map_GPR_64bit(m_Opcode.rt, m_Opcode.rs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Map_GPR_32bit(m_Opcode.rt, IsSigned(m_Opcode.rs), -1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OrConstToArmReg(GetMipsRegMapLo(m_Opcode.rt), GetMipsRegMapLo(m_Opcode.rs), m_Opcode.immediate);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CompileInterpterCall((void *)R4300iOp::ORI, "R4300iOp::ORI");
|
if (g_System->b32BitCore())
|
||||||
|
{
|
||||||
|
Map_GPR_32bit(m_Opcode.rt, true, m_Opcode.rs);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Map_GPR_64bit(m_Opcode.rt, m_Opcode.rs);
|
||||||
|
}
|
||||||
|
OrConstToArmReg(GetMipsRegMapLo(m_Opcode.rt), GetMipsRegMapLo(m_Opcode.rt), m_Opcode.immediate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (g_System->bFastSP() && m_Opcode.rt == 29 && m_Opcode.rs != 29)
|
||||||
|
{
|
||||||
|
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||||
|
//ResetX86Protection();
|
||||||
|
//ResetMemoryStack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue