diff options
| author | 2022-07-09 18:47:32 -0400 | |
|---|---|---|
| committer | 2022-07-14 22:47:18 -0400 | |
| commit | 77137583cd49526a492293d47477657c23ca164f (patch) | |
| tree | 7ab3fdc7a4dd8a02cdedf2004f3d21403022d36d /src | |
| parent | kernel: fix single-core preemption points (diff) | |
| download | yuzu-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.cpp | 1 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_thread.cpp | 8 |
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 | ||
| 260 | Result KThread::InitializeDummyThread(KThread* thread) { | 260 | Result 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 | ||
| 264 | Result KThread::InitializeMainThread(Core::System& system, KThread* thread, s32 virt_core) { | 270 | Result KThread::InitializeMainThread(Core::System& system, KThread* thread, s32 virt_core) { |