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 #include #include +#include #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;