diff options
author | bunnei <bunneidev@gmail.com> | 2020-08-10 18:04:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-10 18:04:30 +0200 |
commit | acfd771e79bee090c89b20361d25de4921d990e3 (patch) | |
tree | 8b3ced41f058ceb8f0a1d9c90cc4cc86940e25b8 /src/core/hle/kernel/scheduler.cpp | |
parent | Merge pull request #4488 from lioncash/file (diff) | |
parent | kernel: Remove unused variables (diff) | |
download | yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar.gz yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar.bz2 yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar.lz yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar.xz yuzu-acfd771e79bee090c89b20361d25de4921d990e3.tar.zst yuzu-acfd771e79bee090c89b20361d25de4921d990e3.zip |
Diffstat (limited to 'src/core/hle/kernel/scheduler.cpp')
-rw-r--r-- | src/core/hle/kernel/scheduler.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/core/hle/kernel/scheduler.cpp b/src/core/hle/kernel/scheduler.cpp index fc656d613..a4b234424 100644 --- a/src/core/hle/kernel/scheduler.cpp +++ b/src/core/hle/kernel/scheduler.cpp @@ -664,32 +664,26 @@ void Scheduler::Reload() { } void Scheduler::SwitchContextStep2() { - Thread* previous_thread = current_thread_prev.get(); - Thread* new_thread = selected_thread.get(); - // Load context of new thread - Process* const previous_process = - previous_thread != nullptr ? previous_thread->GetOwnerProcess() : nullptr; - - if (new_thread) { - ASSERT_MSG(new_thread->GetSchedulingStatus() == ThreadSchedStatus::Runnable, + if (selected_thread) { + ASSERT_MSG(selected_thread->GetSchedulingStatus() == ThreadSchedStatus::Runnable, "Thread must be runnable."); // Cancel any outstanding wakeup events for this thread - new_thread->SetIsRunning(true); - new_thread->last_running_ticks = system.CoreTiming().GetCPUTicks(); - new_thread->SetWasRunning(false); + selected_thread->SetIsRunning(true); + selected_thread->last_running_ticks = system.CoreTiming().GetCPUTicks(); + selected_thread->SetWasRunning(false); auto* const thread_owner_process = current_thread->GetOwnerProcess(); if (thread_owner_process != nullptr) { system.Kernel().MakeCurrentProcess(thread_owner_process); } - if (!new_thread->IsHLEThread()) { - Core::ARM_Interface& cpu_core = new_thread->ArmInterface(); - cpu_core.LoadContext(new_thread->GetContext32()); - cpu_core.LoadContext(new_thread->GetContext64()); - cpu_core.SetTlsAddress(new_thread->GetTLSAddress()); - cpu_core.SetTPIDR_EL0(new_thread->GetTPIDR_EL0()); + if (!selected_thread->IsHLEThread()) { + Core::ARM_Interface& cpu_core = selected_thread->ArmInterface(); + cpu_core.LoadContext(selected_thread->GetContext32()); + cpu_core.LoadContext(selected_thread->GetContext64()); + cpu_core.SetTlsAddress(selected_thread->GetTLSAddress()); + cpu_core.SetTPIDR_EL0(selected_thread->GetTPIDR_EL0()); cpu_core.ChangeProcessorID(this->core_id); cpu_core.ClearExclusiveState(); } |