summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/global_scheduler_context.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/global_scheduler_context.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/global_scheduler_context.cpp')
-rw-r--r--src/core/hle/kernel/global_scheduler_context.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/hle/kernel/global_scheduler_context.cpp b/src/core/hle/kernel/global_scheduler_context.cpp
index 4f4e338e3..baad2c5d6 100644
--- a/src/core/hle/kernel/global_scheduler_context.cpp
+++ b/src/core/hle/kernel/global_scheduler_context.cpp
@@ -9,6 +9,7 @@
#include "core/hle/kernel/global_scheduler_context.h"
#include "core/hle/kernel/k_scheduler.h"
#include "core/hle/kernel/kernel.h"
+#include "core/hle/kernel/physical_core.h"
namespace Kernel {
@@ -42,6 +43,11 @@ void GlobalSchedulerContext::PreemptThreads() {
for (u32 core_id = 0; core_id < Core::Hardware::NUM_CPU_CORES; core_id++) {
const u32 priority = preemption_priorities[core_id];
kernel.Scheduler(core_id).RotateScheduledQueue(core_id, priority);
+
+ // Signal an interrupt occurred. For core 3, this is a certainty, as preemption will result
+ // in the rotator thread being scheduled. For cores 0-2, this is to simulate or system
+ // interrupts that may have occurred.
+ kernel.PhysicalCore(core_id).Interrupt();
}
}