Browse Source

hle: kernel: physical_core: Clear exclusive state after each run.

- This is closer to pre-multicore behavior, and works a bit better.
nce_cpp
bunnei 5 years ago
parent
commit
abc079aca1
  1. 3
      src/core/arm/dynarmic/arm_dynarmic_32.cpp
  2. 3
      src/core/arm/dynarmic/arm_dynarmic_64.cpp
  3. 1
      src/core/hle/kernel/physical_core.cpp

3
src/core/arm/dynarmic/arm_dynarmic_32.cpp

@ -294,6 +294,9 @@ void ARM_Dynarmic_32::InvalidateCacheRange(VAddr addr, std::size_t size) {
}
void ARM_Dynarmic_32::ClearExclusiveState() {
if (!jit) {
return;
}
jit->ClearExclusiveState();
}

3
src/core/arm/dynarmic/arm_dynarmic_64.cpp

@ -330,6 +330,9 @@ void ARM_Dynarmic_64::InvalidateCacheRange(VAddr addr, std::size_t size) {
}
void ARM_Dynarmic_64::ClearExclusiveState() {
if (!jit) {
return;
}
jit->ClearExclusiveState();
}

1
src/core/hle/kernel/physical_core.cpp

@ -37,6 +37,7 @@ void PhysicalCore::Initialize([[maybe_unused]] bool is_64_bit) {
void PhysicalCore::Run() {
arm_interface->Run();
arm_interface->ClearExclusiveState();
}
void PhysicalCore::Idle() {

Loading…
Cancel
Save