From 9c89433db5d51bb9fc5d97a551ec9ee9c8fa5b67 Mon Sep 17 00:00:00 2001 From: Starnakin Date: Wed, 29 Jan 2025 13:30:42 +0100 Subject: [PATCH] fix: task: use 8bit represent ptr instead of 32 to fix stack ptr --- headers/task.h | 4 ++-- src/multitasking/fork.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/headers/task.h b/headers/task.h index 55115f7..5033ce8 100644 --- a/headers/task.h +++ b/headers/task.h @@ -14,8 +14,8 @@ enum owner { OWNER_KERNEL, OWNER_USER }; #define STACK_SIZE PAGE_SIZE * 4 struct task { - u32 *esp; - u32 *esp0; + u8 *esp; + u8 *esp0; u32 *cr3; // physical u32 *heap; // virtual u32 *eip; diff --git a/src/multitasking/fork.c b/src/multitasking/fork.c index f871d34..84629eb 100644 --- a/src/multitasking/fork.c +++ b/src/multitasking/fork.c @@ -12,7 +12,7 @@ u16 fork(void) child->daddy = current_task; current_task->child = child; memcpy(child->esp0, current_task->esp0, STACK_SIZE); - u32 *daddy_esp = 0; + u8 *daddy_esp; asm("movl %%esp, %0" : "=m"(daddy_esp)); child->esp = child->esp0 + (daddy_esp - current_task->esp0); toris();