diff --git a/arch/x86/kernel/tasks.c b/arch/x86/kernel/tasks.c index 58a40f1..799a3cd 100644 --- a/arch/x86/kernel/tasks.c +++ b/arch/x86/kernel/tasks.c @@ -36,6 +36,9 @@ size_t* get_current_stack(void) { task_t* curr_task = current_task; + // use new page table + write_cr3(curr_task->page_map); + return curr_task->last_stack_pointer; } diff --git a/include/eduos/tasks_types.h b/include/eduos/tasks_types.h index 4185283..6efd018 100644 --- a/include/eduos/tasks_types.h +++ b/include/eduos/tasks_types.h @@ -76,7 +76,7 @@ typedef struct task { /// Task priority uint8_t prio; /// Physical address of root page table - size_t page_map; + size_t page_map; /// Lock for page tables spinlock_irqsave_t page_lock; /// usage in number of pages (including page map tables) diff --git a/kernel/main.c b/kernel/main.c index 88798aa..51ba5a5 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -127,7 +127,7 @@ int main(void) create_kernel_task(&id1, foo, "foo1", NORMAL_PRIO); - create_kernel_task(&id2, wrapper, "userfoo", NORMAL_PRIO); + //create_kernel_task(&id2, wrapper, "userfoo", NORMAL_PRIO); while(1) { HALT;