From 035cca95fe87c67ee1e33b9edfb2d87e24476fa8 Mon Sep 17 00:00:00 2001 From: Frans Kaashoek Date: Sun, 8 Sep 2019 15:18:38 -0400 Subject: [PATCH] Make the end variable be really at the end of bss, and delete + 4096 in freerange() --- kernel/kalloc.c | 1 - kernel/kernel.ld | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/kalloc.c b/kernel/kalloc.c index ae3863b..fa6a0ac 100644 --- a/kernel/kalloc.c +++ b/kernel/kalloc.c @@ -35,7 +35,6 @@ freerange(void *pa_start, void *pa_end) { char *p; p = (char*)PGROUNDUP((uint64)pa_start); - p += 4096; // XXX I can't get kernel.ld to place end beyond the last bss symbol. for(; p + PGSIZE <= (char*)pa_end; p += PGSIZE) kfree(p); } diff --git a/kernel/kernel.ld b/kernel/kernel.ld index 711af5b..acc3c8e 100644 --- a/kernel/kernel.ld +++ b/kernel/kernel.ld @@ -26,7 +26,7 @@ SECTIONS } .bss : { *(.bss) - PROVIDE(end = .); + *(.sbss*) + PROVIDE(end = .); } - }