diff options
author | York Sun <york.sun@nxp.com> | 2016-06-24 16:46:20 -0700 |
---|---|---|
committer | York Sun <york.sun@nxp.com> | 2016-07-15 09:01:43 -0700 |
commit | 252cdb46ee33ff876823d0ce0a0190c3878c76ff (patch) | |
tree | 967fe80a33fe9024799bc6cc65256a4bce6e3729 | |
parent | 50e93b95653da44b9743357dfa3701e8482fd167 (diff) | |
download | u-boot-imx-252cdb46ee33ff876823d0ce0a0190c3878c76ff.zip u-boot-imx-252cdb46ee33ff876823d0ce0a0190c3878c76ff.tar.gz u-boot-imx-252cdb46ee33ff876823d0ce0a0190c3878c76ff.tar.bz2 |
armv8: mmu: house cleaning
Make setup_pgtages() and get_tcr() available for platform code to
customize MMU tables.
Remove unintentional call of create_table().
Signed-off-by: York Sun <york.sun@nxp.com>
-rw-r--r-- | arch/arm/cpu/armv8/cache_v8.c | 13 | ||||
-rw-r--r-- | arch/arm/include/asm/armv8/mmu.h | 2 |
2 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/cpu/armv8/cache_v8.c b/arch/arm/cpu/armv8/cache_v8.c index 1615542..b8867a7 100644 --- a/arch/arm/cpu/armv8/cache_v8.c +++ b/arch/arm/cpu/armv8/cache_v8.c @@ -35,7 +35,7 @@ DECLARE_GLOBAL_DATA_PTR; * off: FFF */ -static u64 get_tcr(int el, u64 *pips, u64 *pva_bits) +u64 get_tcr(int el, u64 *pips, u64 *pva_bits) { u64 max_addr = 0; u64 ips, va_bits; @@ -349,10 +349,13 @@ __weak u64 get_page_table_size(void) return size; } -static void setup_pgtables(void) +void setup_pgtables(void) { int i; + if (!gd->arch.tlb_fillptr || !gd->arch.tlb_addr) + panic("Page table pointer not setup."); + /* * Allocate the first level we're on with invalidate entries. * If the starting level is 0 (va_bits >= 39), then this is our @@ -363,9 +366,6 @@ static void setup_pgtables(void) /* Now add all MMU table entries one after another to the table */ for (i = 0; mem_map[i].size || mem_map[i].attrs; i++) add_map(&mem_map[i]); - - /* Create the same thing once more for our emergency page table */ - create_table(); } static void setup_all_pgtables(void) @@ -527,6 +527,9 @@ void mmu_set_region_dcache_behaviour(phys_addr_t start, size_t size, debug("start=%lx size=%lx\n", (ulong)start, (ulong)size); + if (!gd->arch.tlb_emerg) + panic("Emergency page table not setup."); + /* * We can not modify page tables that we're currently running on, * so we first need to switch to the "emergency" page tables where diff --git a/arch/arm/include/asm/armv8/mmu.h b/arch/arm/include/asm/armv8/mmu.h index 0d08ed3..b7b4706 100644 --- a/arch/arm/include/asm/armv8/mmu.h +++ b/arch/arm/include/asm/armv8/mmu.h @@ -141,6 +141,8 @@ struct mm_region { }; extern struct mm_region *mem_map; +void setup_pgtables(void); +u64 get_tcr(int el, u64 *pips, u64 *pva_bits); #endif #endif /* _ASM_ARMV8_MMU_H_ */ |