diff --git a/include/gdt.h b/include/gdt.h index bcf6fe3..8dceff4 100644 --- a/include/gdt.h +++ b/include/gdt.h @@ -92,11 +92,4 @@ struct tss_entry_struct { extern struct tss_entry_struct tss; -struct seg_desc gdt[NR_GDT_ENTRIES]; - -struct desc_r gdtr = { - sizeof(gdt) - 1, - (uint32_t)&gdt -}; - #endif diff --git a/src/kernel/gdt.c b/src/kernel/gdt.c index 1a19b84..c9c56a8 100644 --- a/src/kernel/gdt.c +++ b/src/kernel/gdt.c @@ -4,6 +4,13 @@ struct tss_entry_struct tss; +struct seg_desc gdt[NR_GDT_ENTRIES]; + +struct desc_r gdtr = { + sizeof(gdt) - 1, + (uint32_t)&gdt +}; + void bss_init() { memset((void *)((int)_edata), 0, KERNEL_BSS_SIZE); diff --git a/src/tasking/task.c b/src/tasking/task.c index e1e9ff0..5452f53 100644 --- a/src/tasking/task.c +++ b/src/tasking/task.c @@ -3,6 +3,7 @@ #include "../include/paging.h" #include "../include/string.h" #include "../include/liballoc.h" +#include "../include/gdt.h" #include @@ -145,6 +146,7 @@ void schedule() { } if (next && next != current) { + tss.esp0 = next->kesp; switchProcess(next); }