From c3e4387c57997fcbf1b514b96c6b5faaf8840f82 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 Jan 2020 11:10:44 +0100 Subject: [PATCH] Kernel: Stop flushing GDT/IDT registers all the time --- Kernel/Arch/i386/CPU.cpp | 2 -- Kernel/Scheduler.cpp | 2 -- 2 files changed, 4 deletions(-) diff --git a/Kernel/Arch/i386/CPU.cpp b/Kernel/Arch/i386/CPU.cpp index b53fcc722b..b83899136b 100644 --- a/Kernel/Arch/i386/CPU.cpp +++ b/Kernel/Arch/i386/CPU.cpp @@ -447,14 +447,12 @@ void register_interrupt_handler(u8 index, void (*f)()) { s_idt[index].low = 0x00080000 | LSW((f)); s_idt[index].high = ((u32)(f)&0xffff0000) | 0x8e00; - flush_idt(); } void register_user_callable_interrupt_handler(u8 index, void (*f)()) { s_idt[index].low = 0x00080000 | LSW((f)); s_idt[index].high = ((u32)(f)&0xffff0000) | 0xef00; - flush_idt(); } void flush_idt() diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 266be96ae1..c42126e990 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -464,7 +464,6 @@ void Scheduler::switch_now() { Descriptor& descriptor = get_gdt_entry(current->selector()); descriptor.type = 9; - flush_gdt(); asm("sti\n" "ljmp *(%%eax)\n" ::"a"(¤t->far_ptr())); } @@ -521,7 +520,6 @@ bool Scheduler::context_switch(Thread& thread) auto& descriptor = get_gdt_entry(thread.selector()); descriptor.type = 11; // Busy TSS - flush_gdt(); return true; }