Merge pull request #3810 from MerryMage/eret-exclusive

arm: Clear exclusive state after service call
This commit is contained in:
Merry 2018-06-07 22:09:58 +01:00 committed by GitHub
commit 98438258c3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 1 deletions

2
externals/dynarmic vendored

@ -1 +1 @@
Subproject commit d1d4705364031512cb89333aebc00b8d75a2f732 Subproject commit 4b350a354a21339052c7fff88832c3f81f5624be

View file

@ -3866,6 +3866,8 @@ SWI_INST : {
num_instrs >= cpu->NumInstrsToExecute ? 0 : cpu->NumInstrsToExecute - num_instrs; num_instrs >= cpu->NumInstrsToExecute ? 0 : cpu->NumInstrsToExecute - num_instrs;
num_instrs = 0; num_instrs = 0;
Kernel::CallSVC(inst_cream->num & 0xFFFF); 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(); cpu->Reg[15] += cpu->GetInstructionSize();