X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/d251b620d312e819923e55e223e0eb43b72a3bc6..12293ed1d71cd306ed9a5d021a79ba945fe4e680:/lunaix-os/kernel/mm/kalloc.c diff --git a/lunaix-os/kernel/mm/kalloc.c b/lunaix-os/kernel/mm/kalloc.c index 3aba61e..d5116a2 100644 --- a/lunaix-os/kernel/mm/kalloc.c +++ b/lunaix-os/kernel/mm/kalloc.c @@ -13,6 +13,7 @@ */ #include #include +#include #include #include @@ -61,12 +62,22 @@ lx_grow_heap(heap_context_t* heap, size_t sz); // FIXME: This should be per-process but not global! static heap_context_t kheap; +#define KHEAP_SIZE_MB 256 + int kalloc_init() { kheap.start = &__kernel_heap_start; kheap.brk = NULL; - kheap.max_addr = (void*)KSTACK_START; + kheap.max_addr = (void*)((uintptr_t)kheap.start + (KHEAP_SIZE_MB << 20)); + + for (size_t i = 0; i < KHEAP_SIZE_MB >> 2; i++) { + vmm_set_mapping(PD_REFERENCED, + (uintptr_t)kheap.start + (i << 22), + 0, + PG_PREM_RW, + VMAP_NOMAP); + } if (!dmm_init(&kheap)) { return 0;