diff options
-rw-r--r-- | Kernel/Heap/kmalloc.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Kernel/Heap/kmalloc.cpp b/Kernel/Heap/kmalloc.cpp index 5936b3641b..df2f4dd23b 100644 --- a/Kernel/Heap/kmalloc.cpp +++ b/Kernel/Heap/kmalloc.cpp @@ -40,6 +40,7 @@ #include <Kernel/Scheduler.h> #include <Kernel/SpinLock.h> #include <Kernel/StdLib.h> +#include <Kernel/VM/MemoryManager.h> #define SANITIZE_KMALLOC @@ -48,13 +49,16 @@ struct AllocationHeader { u8 data[0]; }; -#define BASE_PHYSICAL (0xc0000000 + (4 * MiB)) #define CHUNK_SIZE 32 #define POOL_SIZE (3 * MiB) - -#define ETERNAL_BASE_PHYSICAL (0xc0000000 + (2 * MiB)) #define ETERNAL_RANGE_SIZE (2 * MiB) +// We need to make sure to not stomp on global variables or other parts +// of the kernel image! +extern u32 end_of_kernel_bss; +#define ETERNAL_BASE_PHYSICAL ((u8*)PAGE_ROUND_UP(&end_of_kernel_bss)) +#define BASE_PHYSICAL (ETERNAL_BASE_PHYSICAL + ETERNAL_RANGE_SIZE) + static u8 alloc_map[POOL_SIZE / CHUNK_SIZE / 8]; size_t g_kmalloc_bytes_allocated = 0; |