diff --git a/kernel/src/thread/Scheduler.cpp b/kernel/src/thread/Scheduler.cpp index 4e331010..5edb1cd6 100644 --- a/kernel/src/thread/Scheduler.cpp +++ b/kernel/src/thread/Scheduler.cpp @@ -233,9 +233,11 @@ namespace Scheduler { switch_context(old_thread, new_thread, regs); if (!old_thread->is_kernel) old_thread->fp_data.save(); + if (old_thread->is_kernel && MMU::get_page_directory() != MMU::kernel_page_directory()) + old_thread->directory = MMU::get_page_directory(); + if (new_thread->directory) MMU::switch_page_directory(new_thread->directory); if (!new_thread->is_kernel) { - MMU::switch_page_directory(new_thread->directory); CPU::switch_kernel_stack(new_thread->kernel_stack.top()); new_thread->fp_data.restore(); }