diff options
| author | 2019-12-06 20:00:23 -0500 | |
|---|---|---|
| committer | 2019-12-06 20:00:23 -0500 | |
| commit | 4bbb22a477d72cc5bcb08fbacce7166ced1907df (patch) | |
| tree | 210de0776a29ef4e514a4843198d98a958a59235 /src/core | |
| parent | Merge pull request #3197 from ReinUsesLisp/shader-char (diff) | |
| parent | CpuCore: Clear exclusive state after doing a run in dynarmic. (diff) | |
| download | yuzu-4bbb22a477d72cc5bcb08fbacce7166ced1907df.tar.gz yuzu-4bbb22a477d72cc5bcb08fbacce7166ced1907df.tar.xz yuzu-4bbb22a477d72cc5bcb08fbacce7166ced1907df.zip | |
Merge pull request #3195 from FernandoS27/clear-exclusive
CpuCore: Clear exclusive state after doing a run in dynarmic.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/core_cpu.cpp | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/scheduler.cpp | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/core/core_cpu.cpp b/src/core/core_cpu.cpp index cf3fe0b0b..630cd4feb 100644 --- a/src/core/core_cpu.cpp +++ b/src/core/core_cpu.cpp | |||
| @@ -96,6 +96,8 @@ void Cpu::RunLoop(bool tight_loop) { | |||
| 96 | } else { | 96 | } else { |
| 97 | arm_interface->Step(); | 97 | arm_interface->Step(); |
| 98 | } | 98 | } |
| 99 | // We are stopping a run, exclusive state must be cleared | ||
| 100 | arm_interface->ClearExclusiveState(); | ||
| 99 | } | 101 | } |
| 100 | core_timing.Advance(); | 102 | core_timing.Advance(); |
| 101 | 103 | ||
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index 3f5192087..d36fcd7d9 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp | |||
| @@ -458,7 +458,6 @@ void Scheduler::SwitchContext() { | |||
| 458 | cpu_core.LoadContext(new_thread->GetContext()); | 458 | cpu_core.LoadContext(new_thread->GetContext()); |
| 459 | cpu_core.SetTlsAddress(new_thread->GetTLSAddress()); | 459 | cpu_core.SetTlsAddress(new_thread->GetTLSAddress()); |
| 460 | cpu_core.SetTPIDR_EL0(new_thread->GetTPIDR_EL0()); | 460 | cpu_core.SetTPIDR_EL0(new_thread->GetTPIDR_EL0()); |
| 461 | cpu_core.ClearExclusiveState(); | ||
| 462 | } else { | 461 | } else { |
| 463 | current_thread = nullptr; | 462 | current_thread = nullptr; |
| 464 | // Note: We do not reset the current process and current page table when idling because | 463 | // Note: We do not reset the current process and current page table when idling because |