From a4bed294fb870a4f7d89a4d90c030f09767ad0e7 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 3 Jun 2018 20:54:32 +0100 Subject: [PATCH 1/2] dynarmic: Update to 4b350a354a21339052c7fff88832c3f81f5624be --- externals/dynarmic | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/externals/dynarmic b/externals/dynarmic index d1d4705364..4b350a354a 160000 --- a/externals/dynarmic +++ b/externals/dynarmic @@ -1 +1 @@ -Subproject commit d1d4705364031512cb89333aebc00b8d75a2f732 +Subproject commit 4b350a354a21339052c7fff88832c3f81f5624be From b8c50071537d72e267bb3e7a8573971c6e946b88 Mon Sep 17 00:00:00 2001 From: MerryMage Date: Sun, 3 Jun 2018 21:06:57 +0100 Subject: [PATCH 2/2] arm_dyncom_interpreter: Clear exclusive memory state after SVC call --- src/core/arm/dyncom/arm_dyncom_interpreter.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/arm/dyncom/arm_dyncom_interpreter.cpp b/src/core/arm/dyncom/arm_dyncom_interpreter.cpp index b8c0cb34e5..9548d0e16a 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();