diff options
author | bunnei <bunneidev@gmail.com> | 2022-06-26 11:38:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-26 11:38:48 -0700 |
commit | abfd690601eaa567b60c5eb844a688fe85e7dcea (patch) | |
tree | bb7cc7e8746ffedb0f8ddf2ca82c19ae41f5c1be /src/core/hle/kernel/kernel.cpp | |
parent | b321c3937137120f27a54ae01decf94f7fa781d1 (diff) | |
parent | 2c56e94702e897c609711d82057d8267d8f4d0b3 (diff) |
Merge pull request #8475 from liamwhite/x18
kernel: make current thread pointer thread local
Diffstat (limited to 'src/core/hle/kernel/kernel.cpp')
-rw-r--r-- | src/core/hle/kernel/kernel.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp index 94953e2576..0009193be4 100644 --- a/src/core/hle/kernel/kernel.cpp +++ b/src/core/hle/kernel/kernel.cpp @@ -331,6 +331,8 @@ struct KernelCore::Impl { return is_shutting_down.load(std::memory_order_relaxed); } + static inline thread_local KThread* current_thread{nullptr}; + KThread* GetCurrentEmuThread() { // If we are shutting down the kernel, none of this is relevant anymore. if (IsShuttingDown()) { @@ -341,7 +343,12 @@ struct KernelCore::Impl { if (thread_id >= Core::Hardware::NUM_CPU_CORES) { return GetHostDummyThread(); } - return schedulers[thread_id]->GetCurrentThread(); + + return current_thread; + } + + void SetCurrentEmuThread(KThread* thread) { + current_thread = thread; } void DeriveInitialMemoryLayout() { @@ -1024,6 +1031,10 @@ KThread* KernelCore::GetCurrentEmuThread() const { return impl->GetCurrentEmuThread(); } +void KernelCore::SetCurrentEmuThread(KThread* thread) { + impl->SetCurrentEmuThread(thread); +} + KMemoryManager& KernelCore::MemoryManager() { return *impl->memory_manager; } |