[Zion] Move Kernel Stack Memory constants to separate file.
This commit is contained in:
parent
07e6e3028d
commit
9e76c81e97
|
@ -9,3 +9,14 @@ const uint64_t kKernelSlabHeapStart = 0xFFFF'FFFF'4000'0000;
|
||||||
const uint64_t kKernelSlabHeapEnd = 0xFFFF'FFFF'6000'0000;
|
const uint64_t kKernelSlabHeapEnd = 0xFFFF'FFFF'6000'0000;
|
||||||
const uint64_t kKernelBuddyHeapStart = 0xFFFF'FFFF'6000'0000;
|
const uint64_t kKernelBuddyHeapStart = 0xFFFF'FFFF'6000'0000;
|
||||||
const uint64_t kKernelBuddyHeapEnd = 0xFFFF'FFFF'8000'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;
|
||||||
|
|
|
@ -3,14 +3,11 @@
|
||||||
#include "common/gdt.h"
|
#include "common/gdt.h"
|
||||||
#include "debug/debug.h"
|
#include "debug/debug.h"
|
||||||
#include "interrupt/interrupt.h"
|
#include "interrupt/interrupt.h"
|
||||||
|
#include "memory/constants.h"
|
||||||
#include "memory/paging_util.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()
|
KernelStackManager::KernelStackManager()
|
||||||
: next_stack_addr_(KERNEL_STACK_START) {}
|
: next_stack_addr_(kKernelStackStart) {}
|
||||||
|
|
||||||
void KernelStackManager::SetupInterruptStack() {
|
void KernelStackManager::SetupInterruptStack() {
|
||||||
SetIst1(AllocateKernelStack());
|
SetIst1(AllocateKernelStack());
|
||||||
|
@ -18,11 +15,11 @@ void KernelStackManager::SetupInterruptStack() {
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t KernelStackManager::AllocateKernelStack() {
|
uint64_t KernelStackManager::AllocateKernelStack() {
|
||||||
next_stack_addr_ += KERNEL_STACK_OFFSET;
|
next_stack_addr_ += kKernelStackOffset;
|
||||||
if (next_stack_addr_ >= KERNEL_STACK_LIMIT) {
|
if (next_stack_addr_ >= kKernelStackEnd) {
|
||||||
panic("No more kernelstack space");
|
panic("No more kernel stack space");
|
||||||
}
|
}
|
||||||
EnsureResident(next_stack_addr_ - 0x3000, 0x3000);
|
EnsureResident(next_stack_addr_ - kKernelStackSize, kKernelStackSize);
|
||||||
return next_stack_addr_ - 8;
|
return next_stack_addr_ - 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue