[Project64] Add CArmRegInfo::UnProtectGPR

This commit is contained in:
zilmar 2016-11-23 08:48:41 +11:00
parent d1a2e29f9b
commit 94c9cc1848
2 changed files with 20 additions and 0 deletions
Source/Project64-core/N64System/Recompiler/Arm

View File

@ -1029,6 +1029,25 @@ void CArmRegInfo::ProtectGPR(uint32_t Reg)
SetArmRegProtected(GetMipsRegMapLo(Reg), true); SetArmRegProtected(GetMipsRegMapLo(Reg), true);
} }
void CArmRegInfo::UnProtectGPR(uint32_t Reg)
{
if (m_InCallDirect)
{
CPU_Message("%s: in CallDirect", __FUNCTION__);
g_Notify->BreakPoint(__FILE__, __LINE__);
return;
}
if (IsUnknown(Reg) || IsConst(Reg))
{
return;
}
if (Is64Bit(Reg))
{
SetArmRegProtected(GetMipsRegMapHi(Reg), false);
}
SetArmRegProtected(GetMipsRegMapLo(Reg), false);
}
const char * CArmRegInfo::VariableMapName(VARIABLE_MAPPED variable) const char * CArmRegInfo::VariableMapName(VARIABLE_MAPPED variable)
{ {
switch (variable) switch (variable)

View File

@ -63,6 +63,7 @@ public:
ArmReg Map_Variable(VARIABLE_MAPPED variable, ArmReg Reg = Arm_Any); ArmReg Map_Variable(VARIABLE_MAPPED variable, ArmReg Reg = Arm_Any);
ArmReg GetVariableReg(VARIABLE_MAPPED variable) const; ArmReg GetVariableReg(VARIABLE_MAPPED variable) const;
void ProtectGPR(uint32_t Reg); void ProtectGPR(uint32_t Reg);
void UnProtectGPR(uint32_t Reg);
void UnMap_AllFPRs(); void UnMap_AllFPRs();
ArmReg UnMap_TempReg(bool TempMapping); ArmReg UnMap_TempReg(bool TempMapping);
void UnMap_GPR(uint32_t Reg, bool WriteBackValue); void UnMap_GPR(uint32_t Reg, bool WriteBackValue);