From b57ffe4006bd8dccfebf73738739efa2fb90ddae Mon Sep 17 00:00:00 2001 From: David Karoly Date: Fri, 14 Jan 2022 15:56:01 +0100 Subject: [PATCH] kernel/arm/paging: zero out the bottom portion of the new pgdir Change-Id: I899f288f451dd4c413403cd0e14a855f68355050 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4866 Tested-by: Commit checker robot Reviewed-by: Fredrik Holmqvist Reviewed-by: Alex von Gluck IV --- .../kernel/arch/arm/paging/32bit/ARMPagingStructures32Bit.cpp | 3 +-- src/system/kernel/arch/arm/paging/32bit/paging.h | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/arch/arm/paging/32bit/ARMPagingStructures32Bit.cpp b/src/system/kernel/arch/arm/paging/32bit/ARMPagingStructures32Bit.cpp index 59513ebfb9..43a55f4a55 100644 --- a/src/system/kernel/arch/arm/paging/32bit/ARMPagingStructures32Bit.cpp +++ b/src/system/kernel/arch/arm/paging/32bit/ARMPagingStructures32Bit.cpp @@ -65,11 +65,10 @@ ARMPagingStructures32Bit::Init(page_directory_entry* virtualPageDir, pgdir_virt = virtualPageDir; pgdir_phys = physicalPageDir; -#if 0 // IRA: handle UART better; identity map of DEVICE_BASE from loader gets wiped here // zero out the bottom portion of the new pgdir memset(pgdir_virt + FIRST_USER_PGDIR_ENT, 0, NUM_USER_PGDIR_ENTS * sizeof(page_directory_entry)); -#endif + // insert this new map into the map list { int state = disable_interrupts(); diff --git a/src/system/kernel/arch/arm/paging/32bit/paging.h b/src/system/kernel/arch/arm/paging/32bit/paging.h index a0f05f88eb..b6479c2351 100644 --- a/src/system/kernel/arch/arm/paging/32bit/paging.h +++ b/src/system/kernel/arch/arm/paging/32bit/paging.h @@ -21,12 +21,12 @@ #define FIRST_USER_PGDIR_ENT (VADDR_TO_PDENT(USER_BASE)) #define NUM_USER_PGDIR_ENTS (VADDR_TO_PDENT(ROUNDUP(USER_SIZE, \ - B_PAGE_SIZE * 1024))) + B_PAGE_SIZE * ARM_MMU_L2_COARSE_ENTRY_COUNT))) #define FIRST_KERNEL_PGDIR_ENT (VADDR_TO_PDENT(KERNEL_BASE)) #define NUM_KERNEL_PGDIR_ENTS (VADDR_TO_PDENT(KERNEL_SIZE)) -static const size_t kPageTableAlignment = 1024 * B_PAGE_SIZE; +static const size_t kPageTableAlignment = ARM_MMU_L2_COARSE_ENTRY_COUNT * B_PAGE_SIZE; typedef uint32 page_table_entry;