From 15205711b35db0d8ac5516f84ba73fa3550ccc62 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Thu, 17 Mar 2022 21:49:10 -0700 Subject: Initialize all BSS sections in MMU --- src/lib/mmu.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/lib/mmu.c b/src/lib/mmu.c index 6a947c5..0a2f892 100644 --- a/src/lib/mmu.c +++ b/src/lib/mmu.c @@ -15,11 +15,15 @@ void mmu_section(unsigned long virtual, unsigned long physical, unsigned long fl *entry = physval; } +extern unsigned long __bss_end; void mmu_init(void) { - mmu_section(0x00000000, 0x00000000, CACHABLE | BUFFERABLE); - for (unsigned long addr = 0x00100000;; addr += 0x00100000) { - mmu_section(addr, addr, NO_PERMISSIONS_REQUIRED); + for (unsigned long addr = 0x00000000;; addr += 0x00100000) { + if (addr < (unsigned long)&__bss_end) { + mmu_section(addr, addr, CACHABLE | BUFFERABLE); + } else { + mmu_section(addr, addr, NO_PERMISSIONS_REQUIRED); + } if (addr == 0x02000000) mmu_section(addr, addr, CACHABLE | BUFFERABLE | NO_PERMISSIONS_REQUIRED); //else if (addr == 0x3F000000) -- cgit v1.2.1