diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-02-26 15:44:21 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2020-06-27 17:35:15 +0200 |
commit | 3d9fbb8226e9bf7dce99568f6e616e7361d43c41 (patch) | |
tree | bce92b63c7c038c4eda6f6118b8b39aa92a09efb /src/core | |
parent | SVC: Correct SendSyncRequest. (diff) | |
download | yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar.gz yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar.bz2 yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar.lz yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar.xz yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.tar.zst yuzu-3d9fbb8226e9bf7dce99568f6e616e7361d43c41.zip |
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/cpu_manager.cpp | 3 | ||||
-rw-r--r-- | src/core/hle/kernel/physical_core.cpp | 3 | ||||
-rw-r--r-- | src/core/hle/kernel/physical_core.h | 2 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/core/cpu_manager.cpp b/src/core/cpu_manager.cpp index 6032cb0bf..241971ff3 100644 --- a/src/core/cpu_manager.cpp +++ b/src/core/cpu_manager.cpp @@ -80,9 +80,10 @@ void CpuManager::RunGuestThread() { } while (true) { auto& physical_core = kernel.CurrentPhysicalCore(); - if (!physical_core.IsInterrupted()) { + while (!physical_core.IsInterrupted()) { physical_core.Run(); } + physical_core.ClearExclusive(); auto& scheduler = physical_core.Scheduler(); scheduler.TryDoContextSwitch(); } diff --git a/src/core/hle/kernel/physical_core.cpp b/src/core/hle/kernel/physical_core.cpp index 69202540b..ff14fcb42 100644 --- a/src/core/hle/kernel/physical_core.cpp +++ b/src/core/hle/kernel/physical_core.cpp @@ -45,6 +45,9 @@ PhysicalCore::~PhysicalCore() = default; void PhysicalCore::Run() { arm_interface->Run(); +} + +void PhysicalCore::ClearExclusive() { arm_interface->ClearExclusiveState(); } diff --git a/src/core/hle/kernel/physical_core.h b/src/core/hle/kernel/physical_core.h index c3da30b72..cd2e42fc3 100644 --- a/src/core/hle/kernel/physical_core.h +++ b/src/core/hle/kernel/physical_core.h @@ -38,6 +38,8 @@ public: /// Execute current jit state void Run(); + /// Clear Exclusive state. + void ClearExclusive(); /// Set this core in IdleState. void Idle(); /// Execute a single instruction in current jit. |