From 8b1d7cb085a84b2f69c41b53c96880fe1175413b Mon Sep 17 00:00:00 2001 From: ngiddings Date: Tue, 23 Aug 2022 13:13:46 -0500 Subject: [PATCH] Kernel initializes a stack for new processes --- src/kernel.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/kernel.c b/src/kernel.c index 414128b..dad6537 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -230,10 +230,16 @@ unsigned long kernel_spawn_process(void *program_entry, int priority, physaddr_t { return 0; } + physaddr_t stack_page = reserve_page(); + if(stack_page % page_size) + { + return 0; + } + map_page((void*)&_kernel_start - page_size, stack_page, PAGE_PRESENT | PAGE_USERMODE | PAGE_RW); memset(initial_context, 0, sizeof(struct process_context_t)); set_context_pc(initial_context, program_entry); set_context_flags(initial_context, DEFAULT_FLAGS); - set_context_stack(initial_context, NULL); + set_context_stack(initial_context, &_kernel_start); new_process->priority = priority; new_process->pid = kernel.next_pid; new_process->page_table = address_space;