From f8b2636b594bdc158f89c8e360846598c68cf9c5 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Mon, 25 Jul 2016 19:45:02 +0200 Subject: [PATCH] determine upper limit of the usable memory --- hermit/arch/x86/loader/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hermit/arch/x86/loader/main.c b/hermit/arch/x86/loader/main.c index fa0dc278e..d00204f74 100644 --- a/hermit/arch/x86/loader/main.c +++ b/hermit/arch/x86/loader/main.c @@ -45,6 +45,7 @@ extern const void bss_end; void main(void) { + size_t limit = 0; elf_header_t* header = NULL; // initialize .bss section @@ -68,6 +69,9 @@ void main(void) /* set the available memory as "unused" */ start_addr = mmap->addr; end_addr = start_addr + mmap->len; + + if (limit < end_addr) + limit = end_addr; kprintf("Free region 0x%zx - 0x%zx\n", start_addr, end_addr); } @@ -138,6 +142,7 @@ void main(void) phyaddr += displacement; *((uint64_t*) (viraddr + 0x08)) = phyaddr; // physical start address + *((uint64_t*) (viraddr + 0x10)) = limit; // physical limit *((uint32_t*) (viraddr + 0x24)) = 1; // number of used cpus *((uint32_t*) (viraddr + 0x30)) = 0; // apicid *((uint64_t*) (viraddr + 0x38)) = prog_header->file_size;