From d8d31c16138a4d6dc1ff3d33b3172c151c221767 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Tue, 9 Jan 2024 21:40:46 +0100 Subject: properly remove the 1M-2M area from mmap --- stage3/main.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'stage3') diff --git a/stage3/main.c b/stage3/main.c index 9d2c43f..5f6756f 100644 --- a/stage3/main.c +++ b/stage3/main.c @@ -64,9 +64,15 @@ void kmain() #define MMAP for (MemRegion *mreg = (void *) 0x500; mreg->start != nil; mreg++) MMAP { - if (mreg->start == (void *) 0x100000) { - mreg->start = (void *) 0x200000; - mreg->size -= 0x100000; + // remove anything between 0x100000 and 0x200000. it has already been mapped + usize start = (usize) mreg->start; + if (start >= 0x100000 && start < 0x200000) { + if (start + mreg->size <= 0x200000) { + mreg->size = 0; // kill it + } else { + mreg->size = start + mreg->size - 0x200000; + mreg->start = (void *) 0x200000; + } } } -- cgit v1.2.3