arm: asm/cache.c: Introduce arm_reserve_mmu
authorOvidiu Panait <ovpanait@gmail.com>
Sun, 29 Mar 2020 17:57:40 +0000 (20:57 +0300)
committerTom Rini <trini@konsulko.com>
Fri, 24 Apr 2020 19:17:14 +0000 (15:17 -0400)
As a preparation for turning reserve_mmu into an arch-specific variant,
introduce arm_reserve_mmu on ARM. It implements the default routine for
reserving memory for MMU TLB and needs to be weakly defined in order to allow
for machines to override it.

Without this decoupling, after introducing arch_reserve_mmu, there would be two
weak definitions for it, one in common/board_f.c and one in
arch/arm/lib/cache.c.

Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
arch/arm/include/asm/cache.h
arch/arm/lib/cache.c
arch/arm/mach-versal/cpu.c
arch/arm/mach-zynqmp/cpu.c

index 950ec1e793cafe869624738961b4e276569b998b..c20e05ec7fdb0652a0459f389c95972ea6a0c1da 100644 (file)
@@ -49,4 +49,15 @@ void dram_bank_mmu_setup(int bank);
  */
 #define ARCH_DMA_MINALIGN      CONFIG_SYS_CACHELINE_SIZE
 
+/*
+ * arm_reserve_mmu() - Reserve memory for MMU TLB table
+ *
+ * Default implementation for reserving memory for MMU TLB table. It is used
+ * during generic board init sequence in common/board_f.c. Weakly defined, so
+ * that machines can override it if needed.
+ *
+ * Return: 0 if OK
+ */
+int arm_reserve_mmu(void);
+
 #endif /* _ASM_CACHE_H */
index b8e1e340a167e5a2cdd7e8d36a6ae56a17193523..3cbed602eb148300f3d372513757cb8cfcbcf13f 100644 (file)
@@ -122,6 +122,11 @@ void invalidate_l2_cache(void)
 #endif
 
 __weak int reserve_mmu(void)
+{
+       return arm_reserve_mmu();
+}
+
+__weak int arm_reserve_mmu(void)
 {
 #if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF))
        /* reserve TLB table */
index 829a6c1b3e5354dc7bbcdf2dd836faa6ffe3e15e..1b760ba5de3169972cf48610952ab3b1b5e857bf 100644 (file)
@@ -9,6 +9,7 @@
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/sys_proto.h>
+#include <asm/cache.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -107,7 +108,7 @@ u64 get_page_table_size(void)
 }
 
 #if defined(CONFIG_SYS_MEM_RSVD_FOR_MMU)
-int reserve_mmu(void)
+int arm_reserve_mmu(void)
 {
        tcm_init(TCM_LOCK);
        gd->arch.tlb_size = PGTABLE_SIZE;
index 442427bc1106be57cee58b46c8f476fc58744de0..811684a9f882bd62bc3b37ee8a39d9f0697c23d5 100644 (file)
@@ -11,6 +11,7 @@
 #include <asm/armv8/mmu.h>
 #include <asm/io.h>
 #include <zynqmp_firmware.h>
+#include <asm/cache.h>
 
 #define ZYNQ_SILICON_VER_MASK  0xF000
 #define ZYNQ_SILICON_VER_SHIFT 12
@@ -116,7 +117,7 @@ void tcm_init(u8 mode)
 #endif
 
 #ifdef CONFIG_SYS_MEM_RSVD_FOR_MMU
-int reserve_mmu(void)
+int arm_reserve_mmu(void)
 {
        tcm_init(TCM_LOCK);
        gd->arch.tlb_size = PGTABLE_SIZE;