summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Liam2022-07-09 18:47:32 -0400
committerGravatar Liam2022-07-14 22:47:18 -0400
commit77137583cd49526a492293d47477657c23ca164f (patch)
tree7ab3fdc7a4dd8a02cdedf2004f3d21403022d36d /src
parentkernel: fix single-core preemption points (diff)
downloadyuzu-77137583cd49526a492293d47477657c23ca164f.tar.gz
yuzu-77137583cd49526a492293d47477657c23ca164f.tar.xz
yuzu-77137583cd49526a492293d47477657c23ca164f.zip
kernel: be more careful about initialization path for HLE threads
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/k_scheduler.cpp1
-rw-r--r--src/core/hle/kernel/k_thread.cpp8
2 files changed, 8 insertions, 1 deletions
diff --git a/src/core/hle/kernel/k_scheduler.cpp b/src/core/hle/kernel/k_scheduler.cpp
index 230ca3b95..d9ba8e409 100644
--- a/src/core/hle/kernel/k_scheduler.cpp
+++ b/src/core/hle/kernel/k_scheduler.cpp
@@ -70,6 +70,7 @@ void KScheduler::EnableScheduling(KernelCore& kernel, u64 cores_needing_scheduli
70 GetCurrentThread(kernel).IfDummyThreadTryWait(); 70 GetCurrentThread(kernel).IfDummyThreadTryWait();
71 } 71 }
72 GetCurrentThread(kernel).EnableDispatch(); 72 GetCurrentThread(kernel).EnableDispatch();
73 ASSERT(GetCurrentThread(kernel).GetState() != ThreadState::Waiting);
73 return; 74 return;
74 } 75 }
75 76
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp
index 3640d1d13..985ce448e 100644
--- a/src/core/hle/kernel/k_thread.cpp
+++ b/src/core/hle/kernel/k_thread.cpp
@@ -258,7 +258,13 @@ Result KThread::InitializeThread(KThread* thread, KThreadFunction func, uintptr_
258} 258}
259 259
260Result KThread::InitializeDummyThread(KThread* thread) { 260Result KThread::InitializeDummyThread(KThread* thread) {
261 return thread->Initialize({}, {}, {}, DummyThreadPriority, 3, {}, ThreadType::Dummy); 261 // Initialize the thread.
262 R_TRY(thread->Initialize({}, {}, {}, DummyThreadPriority, 3, {}, ThreadType::Dummy));
263
264 // Initialize emulation parameters.
265 thread->stack_parameters.disable_count = 0;
266
267 return ResultSuccess;
262} 268}
263 269
264Result KThread::InitializeMainThread(Core::System& system, KThread* thread, s32 virt_core) { 270Result KThread::InitializeMainThread(Core::System& system, KThread* thread, s32 virt_core) {