summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/k_scheduler.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2021-12-30 06:40:38 +0100
committerbunnei <bunneidev@gmail.com>2021-12-31 00:50:45 +0100
commit3a89723d97b8e646cde569030057777813f4371c (patch)
treec08f00b1ebb21c3652f0e23ab28fe06c4678aa42 /src/core/hle/kernel/k_scheduler.cpp
parentMerge pull request #7635 from bunnei/set-heap-size (diff)
downloadyuzu-3a89723d97b8e646cde569030057777813f4371c.tar
yuzu-3a89723d97b8e646cde569030057777813f4371c.tar.gz
yuzu-3a89723d97b8e646cde569030057777813f4371c.tar.bz2
yuzu-3a89723d97b8e646cde569030057777813f4371c.tar.lz
yuzu-3a89723d97b8e646cde569030057777813f4371c.tar.xz
yuzu-3a89723d97b8e646cde569030057777813f4371c.tar.zst
yuzu-3a89723d97b8e646cde569030057777813f4371c.zip
Diffstat (limited to 'src/core/hle/kernel/k_scheduler.cpp')
-rw-r--r--src/core/hle/kernel/k_scheduler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp
index 277201de4..31cec990e 100644
--- a/src/core/hle/kernel/k_scheduler.cpp
+++ b/src/core/hle/kernel/k_scheduler.cpp
@@ -15,6 +15,7 @@
#include "core/core.h"
#include "core/core_timing.h"
#include "core/cpu_manager.h"
+#include "core/hle/kernel/k_interrupt_manager.h"
#include "core/hle/kernel/k_process.h"
#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/k_scoped_scheduler_lock_and_sleep.h"
@@ -53,6 +54,13 @@ void KScheduler::RescheduleCores(KernelCore& kernel, u64 cores_pending_reschedul
}
cores_pending_reschedule &= ~(1ULL << core);
}
+
+ for (std::size_t core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; ++core_id) {
+ if (kernel.PhysicalCore(core_id).IsInterrupted()) {
+ KInterruptManager::HandleInterrupt(kernel, static_cast<s32>(core_id));
+ }
+ }
+
if (must_context_switch) {
auto core_scheduler = kernel.CurrentScheduler();
kernel.ExitSVCProfile();