From 1b7c3b1b0da21fa11bc8686dab899c4aa5bf8f77 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 31 May 2026 17:22:47 +0100 Subject: [PATCH] libc: malloc: store the global heap in a fixed region of virtual memory --- lib/libc/malloc/CMakeLists.txt | 2 +- lib/libc/malloc/heap.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/libc/malloc/CMakeLists.txt b/lib/libc/malloc/CMakeLists.txt index c68243b..6335bbb 100644 --- a/lib/libc/malloc/CMakeLists.txt +++ b/lib/libc/malloc/CMakeLists.txt @@ -30,5 +30,5 @@ sysroot_add_library( HEADER_DIR /usr/include LIB_DIR /usr/lib) -target_compile_definitions(libc-malloc PRIVATE ENABLE_GLOBAL_HEAP=1) +target_compile_definitions(libc-malloc PRIVATE LIBC_STATIC=1 ENABLE_GLOBAL_HEAP=1) target_link_libraries(libc-malloc libc-core libmagenta) diff --git a/lib/libc/malloc/heap.c b/lib/libc/malloc/heap.c index 9b5f1a8..278ec0e 100644 --- a/lib/libc/malloc/heap.c +++ b/lib/libc/malloc/heap.c @@ -8,6 +8,12 @@ #include #include +#if defined(LIBC_STATIC) +#define HEAP_REGION_BASE 0x20000000000 +#else +#define HEAP_REGION_BASE 0x60000000000 +#endif + #define HEAP_REGION_SIZE 0x40000000 #define HEAP_EXPAND_INCREMENT 0x100000 @@ -40,7 +46,7 @@ static kern_status_t init_heap_region(heap_t *heap) kern_status_t status = address_space_reserve( address_space, - MAP_ADDRESS_ANY, + HEAP_REGION_BASE, HEAP_REGION_SIZE, &heap->heap_base);