From f27823babeb785e58c3841bb92cc7960f67463e4 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 5 Aug 2025 02:44:45 +0300 Subject: [PATCH] Kernel: Move stacks to the top of userspace address space --- kernel/kernel/Thread.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/Thread.cpp b/kernel/kernel/Thread.cpp index 52db624d..2986bf92 100644 --- a/kernel/kernel/Thread.cpp +++ b/kernel/kernel/Thread.cpp @@ -119,9 +119,15 @@ namespace Kernel thread->m_is_userspace = true; +#if ARCH(x86_64) + static constexpr vaddr_t stack_addr_start = 0x0000700000000000; +#elif ARCH(i686) + static constexpr vaddr_t stack_addr_start = 0xB0000000; +#endif + thread->m_kernel_stack = TRY(VirtualRange::create_to_vaddr_range( page_table, - 0x200000, USERSPACE_END, + stack_addr_start, USERSPACE_END, kernel_stack_size, PageTable::Flags::ReadWrite | PageTable::Flags::Present, true, true @@ -129,7 +135,7 @@ namespace Kernel thread->m_userspace_stack = TRY(VirtualRange::create_to_vaddr_range( page_table, - 0x200000, USERSPACE_END, + stack_addr_start, USERSPACE_END, userspace_stack_size, PageTable::Flags::UserSupervisor | PageTable::Flags::ReadWrite | PageTable::Flags::Present, true, true