diff --git a/Source/Project64-core/N64System/Recompiler/Arm/ArmRecompilerOps.cpp b/Source/Project64-core/N64System/Recompiler/Arm/ArmRecompilerOps.cpp index d05729076..aa80c096d 100644 --- a/Source/Project64-core/N64System/Recompiler/Arm/ArmRecompilerOps.cpp +++ b/Source/Project64-core/N64System/Recompiler/Arm/ArmRecompilerOps.cpp @@ -4161,10 +4161,14 @@ void CArmRecompilerOps::CompileCop1Test() if (m_RegWorkingSet.GetFpuBeenUsed()) return; - MoveVariableToArmReg(&g_Reg->STATUS_REGISTER, "STATUS_REGISTER", Arm_R1); - MoveConstToArmReg(Arm_R2, STATUS_CU1, "STATUS_REGISTER"); - AndArmRegToArmReg(Arm_R2, Arm_R1); - CompareArmRegToConst(Arm_R1, 0); + ArmReg TempReg1 = m_RegWorkingSet.Map_TempReg(Arm_Any, -1, false); + ArmReg TempReg2 = m_RegWorkingSet.Map_TempReg(Arm_Any, -1, false); + MoveVariableToArmReg(&g_Reg->STATUS_REGISTER, "STATUS_REGISTER", TempReg1); + MoveConstToArmReg(TempReg2, STATUS_CU1, "STATUS_CU1"); + AndArmRegToArmReg(TempReg1, TempReg2); + CompareArmRegToConst(TempReg1, 0); + m_RegWorkingSet.SetArmRegProtected(TempReg1,false); + m_RegWorkingSet.SetArmRegProtected(TempReg2,false); CompileExit(m_CompilePC, m_CompilePC, m_RegWorkingSet, CExitInfo::COP1_Unuseable, ArmBranch_Equal); m_RegWorkingSet.SetFpuBeenUsed(true); }