From 913c4f7e04b07974e0cfcd28246b645a29df291c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Thu, 16 Jan 2014 16:29:29 +0000 Subject: [PATCH] extended mmu_map_page() by size and flags args --- BaS_gcc/include/mmu.h | 7 ++++++- BaS_gcc/sys/mmu.c | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/BaS_gcc/include/mmu.h b/BaS_gcc/include/mmu.h index 01839b8..1d69c29 100644 --- a/BaS_gcc/include/mmu.h +++ b/BaS_gcc/include/mmu.h @@ -28,6 +28,11 @@ #define SCA_PAGE_ID 6 /* indicates video memory page */ +#define MMU_PAGE_SIZE_1M 0 +#define MMU_PAGE_SIZE_4K 1 +#define MMU_PAGE_SIZE_8K 2 +#define MMU_PAGE_SIZE_1K 3 + /* * global variables from linker script */ @@ -35,6 +40,6 @@ extern long video_tlb; extern long video_sbt; extern void mmu_init(void); -extern void mmu_map_page(uint32_t virt, uint32_t phys); +extern void mmu_map_page(uint32_t virt, uint32_t phys, uint32_t map_size, uint32_t map_flags); #endif /* _MMU_H_ */ diff --git a/BaS_gcc/sys/mmu.c b/BaS_gcc/sys/mmu.c index b315d29..845d174 100644 --- a/BaS_gcc/sys/mmu.c +++ b/BaS_gcc/sys/mmu.c @@ -447,6 +447,8 @@ bool access_exception(uint32_t pc, uint32_t format_status) } else { + uint32_t flags; + fault_address = MCF_MMU_MMUAR; /* retrieve fault access address from MMU */ if (fault_address >= FASTRAM_END) { @@ -454,7 +456,8 @@ bool access_exception(uint32_t pc, uint32_t format_status) } else /* map this page */ { - mmu_map_page(fault_address & 0xfff00000, fault_address & 0xfff00000); + mmu_map_page(fault_address & 0xfff00000, fault_address & 0xfff00000, + MMU_PAGE_SIZE_1M, flags); return true; } } @@ -463,7 +466,7 @@ bool access_exception(uint32_t pc, uint32_t format_status) } -void mmu_map_page(uint32_t virt, uint32_t phys) +void mmu_map_page(uint32_t virt, uint32_t phys, uint32_t map_size, uint32_t map_flags) { dbg("%s: map virt=%p to phys=%p\r\n", __FUNCTION__, virt, phys);