Merge pull request #3810 from MerryMage/eret-exclusive
arm: Clear exclusive state after service call
This commit is contained in:
commit
98438258c3
|
@ -1 +1 @@
|
||||||
Subproject commit d1d4705364031512cb89333aebc00b8d75a2f732
|
Subproject commit 4b350a354a21339052c7fff88832c3f81f5624be
|
|
@ -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();
|
||||||
|
|
Reference in New Issue