diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index b8c0cb34e..9548d0e16 100644 --- a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp +++ b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp @@ -3866,6 +3866,8 @@ SWI_INST : { num_instrs >= cpu->NumInstrsToExecute ? 0 : cpu->NumInstrsToExecute - num_instrs; num_instrs = 0; Kernel::CallSVC(inst_cream->num & 0xFFFF); + // The kernel would call ERET to get here, which clears exclusive memory state. + cpu->UnsetExclusiveMemoryAddress(); } cpu->Reg[15] += cpu->GetInstructionSize();