From 9e76c81e9752c522871b289d7328b4f9c9ef8730 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Wed, 15 Nov 2023 15:55:24 -0800 Subject: [PATCH] [Zion] Move Kernel Stack Memory constants to separate file. --- zion/memory/constants.h | 11 +++++++++++ zion/memory/kernel_stack_manager.cpp | 15 ++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/zion/memory/constants.h b/zion/memory/constants.h index 55555b7..335746f 100644 --- a/zion/memory/constants.h +++ b/zion/memory/constants.h @@ -9,3 +9,14 @@ const uint64_t kKernelSlabHeapStart = 0xFFFF'FFFF'4000'0000; const uint64_t kKernelSlabHeapEnd = 0xFFFF'FFFF'6000'0000; const uint64_t kKernelBuddyHeapStart = 0xFFFF'FFFF'6000'0000; const uint64_t kKernelBuddyHeapEnd = 0xFFFF'FFFF'8000'0000; + +// Note the kernel code isn't actually this large, we just reserve a lot of +// address space for it. (256 MiB). +const uint64_t kKernelCodeStart = 0xFFFF'FFFF'8000'0000; +const uint64_t kKernelCodeEnd = 0xFFFF'FFFF'9000'0000; + +const uint64_t kKernelStackStart = 0xFFFF'FFFF'9000'0000; +const uint64_t kKernelStackEnd = 0xFFFF'FFFF'A000'0000; + +const uint64_t kKernelStackSize = 3 * kPageSize; +const uint64_t kKernelStackOffset = 4 * kPageSize; diff --git a/zion/memory/kernel_stack_manager.cpp b/zion/memory/kernel_stack_manager.cpp index 085e33f..d7ec980 100644 --- a/zion/memory/kernel_stack_manager.cpp +++ b/zion/memory/kernel_stack_manager.cpp @@ -3,14 +3,11 @@ #include "common/gdt.h" #include "debug/debug.h" #include "interrupt/interrupt.h" +#include "memory/constants.h" #include "memory/paging_util.h" -#define KERNEL_STACK_START 0xFFFFFFFF'90000000 -#define KERNEL_STACK_LIMIT 0xFFFFFFFF'9FFFFFFF -#define KERNEL_STACK_OFFSET 0x4000 - KernelStackManager::KernelStackManager() - : next_stack_addr_(KERNEL_STACK_START) {} + : next_stack_addr_(kKernelStackStart) {} void KernelStackManager::SetupInterruptStack() { SetIst1(AllocateKernelStack()); @@ -18,11 +15,11 @@ void KernelStackManager::SetupInterruptStack() { } uint64_t KernelStackManager::AllocateKernelStack() { - next_stack_addr_ += KERNEL_STACK_OFFSET; - if (next_stack_addr_ >= KERNEL_STACK_LIMIT) { - panic("No more kernelstack space"); + next_stack_addr_ += kKernelStackOffset; + if (next_stack_addr_ >= kKernelStackEnd) { + panic("No more kernel stack space"); } - EnsureResident(next_stack_addr_ - 0x3000, 0x3000); + EnsureResident(next_stack_addr_ - kKernelStackSize, kKernelStackSize); return next_stack_addr_ - 8; }