summaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv8/start.S
diff options
context:
space:
mode:
authorYork Sun <yorksun@freescale.com>2014-02-26 13:26:04 -0800
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>2014-04-07 17:43:41 +0200
commit1e6ad55c058200010bb0649524a2c874e7049242 (patch)
treece208690a42037bb29a34a24ea512b8d0edd0835 /arch/arm/cpu/armv8/start.S
parent83571bcab10bc8d6d73dc77b64442dbd281afc99 (diff)
downloadu-boot-imx-1e6ad55c058200010bb0649524a2c874e7049242.zip
u-boot-imx-1e6ad55c058200010bb0649524a2c874e7049242.tar.gz
u-boot-imx-1e6ad55c058200010bb0649524a2c874e7049242.tar.bz2
armv8/cache: Change cache invalidate and flush function
When SoC first boots up, we should invalidate the cache but not flush it. We can use the same function for invalid and flush mostly, with a wrapper. Invalidating large cache can ben slow on emulator, so we postpone doing so until I-cache is enabled, and before enabling D-cache. Signed-off-by: York Sun <yorksun@freescale.com> CC: David Feng <fenghua@phytium.com.cn>
Diffstat (limited to 'arch/arm/cpu/armv8/start.S')
-rw-r--r--arch/arm/cpu/armv8/start.S10
1 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/cpu/armv8/start.S b/arch/arm/cpu/armv8/start.S
index e70c51d..4f95289 100644
--- a/arch/arm/cpu/armv8/start.S
+++ b/arch/arm/cpu/armv8/start.S
@@ -64,10 +64,12 @@ reset:
msr cpacr_el1, x0 /* Enable FP/SIMD */
0:
- /* Cache/BPB/TLB Invalidate */
- bl __asm_flush_dcache_all /* dCache clean&invalidate */
- bl __asm_invalidate_icache_all /* iCache invalidate */
- bl __asm_invalidate_tlb_all /* invalidate TLBs */
+ /*
+ * Cache/BPB/TLB Invalidate
+ * i-cache is invalidated before enabled in icache_enable()
+ * tlb is invalidated before mmu is enabled in dcache_enable()
+ * d-cache is invalidated before enabled in dcache_enable()
+ */
/* Processor specific initialization */
bl lowlevel_init