From 1ba17d852ba879d0f0f266e63cd717abd4023645 Mon Sep 17 00:00:00 2001 From: Thomas Oltmann Date: Tue, 8 Jul 2025 14:15:51 +0200 Subject: [PATCH] Fixed bug in page table heap alloc --- lboot.S | 6 ++++-- loader.c | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lboot.S b/lboot.S index f33df4f..28bb358 100644 --- a/lboot.S +++ b/lboot.S @@ -184,9 +184,11 @@ _gmdone: add $24, %di // paging: Set up initial page tables for long mode paging: mov heap_ptr, %eax - add $6*4096, %eax - cmp heap_end, %eax + mov %eax, %ecx + add $6*4096, %ecx + cmp heap_end, %ecx ja out_of_mem + mov %ecx, heap_ptr mov %eax, pd_ptr add $4*4096, %eax diff --git a/loader.c b/loader.c index 9362222..991b1d1 100644 --- a/loader.c +++ b/loader.c @@ -172,6 +172,7 @@ load_elf(file_t file, uintptr_t *entry) if (file.size < phdr->p_offset + phdr->p_filesz) { return -1; } + panic("Loading segment"); memcpy((void *)ADDR_LOAD, file.ptr + phdr->p_offset, phdr->p_filesz); if (phdr->p_filesz < phdr->p_memsz) { memset((void *)(ADDR_LOAD + phdr->p_filesz), 0, phdr->p_memsz - phdr->p_filesz); @@ -188,7 +189,7 @@ void loader_main(void *initrd) { uint64_t entry = 0; - file_t elf = { initrd, 1024 }; + file_t elf = { initrd, MEG(2) }; if (load_elf(elf, &entry) < 0) { panic("panic: Malformed ELF64 executable"); }