summaryrefslogtreecommitdiffstats
path: root/drivers/mci/imx-esdhc-pbl.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2019-05-13 12:26:05 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2019-05-13 12:37:42 +0200
commitc5c08624f73a0b7e8f822127b256b19ff1b6f553 (patch)
tree9e5bcb34a67a3be99affbef2efac404bcc4a974a /drivers/mci/imx-esdhc-pbl.c
parentb0a89d8086577ee0b8d9eb81d7fdd07e8f7662dd (diff)
downloadbarebox-c5c08624f73a0b7e8f822127b256b19ff1b6f553.tar.gz
barebox-c5c08624f73a0b7e8f822127b256b19ff1b6f553.tar.xz
ARM: introduce sync_caches_for_execution
We have several places in the code which which prepares just modified code for execution. This is done differently in all the places, so add a common function to be used by all. Most places called arm_early_mmu_cache_flush(). This function includes invalidating the instruction cache, so doing it again is unnecessary. Sometimes we had arm_early_mmu_cache_flush() inside #ifdef CONFIG_MMU. The ifdef seems unnecessary since we do not have it consistently, so remove the ifdef. Some early i.MX xload code had icache_invalidate() but forgot to flush the caches. Replace the instruction cache invalidation with sync_caches_for_execution(). Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mci/imx-esdhc-pbl.c')
-rw-r--r--drivers/mci/imx-esdhc-pbl.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mci/imx-esdhc-pbl.c b/drivers/mci/imx-esdhc-pbl.c
index 0251757a2a..367daa85a6 100644
--- a/drivers/mci/imx-esdhc-pbl.c
+++ b/drivers/mci/imx-esdhc-pbl.c
@@ -332,6 +332,8 @@ esdhc_start_image(struct esdhc *esdhc, ptrdiff_t address, ptrdiff_t entry, u32 o
bb = buf + ofs;
+ sync_caches_for_execution();
+
bb();
}
@@ -458,7 +460,7 @@ int ls1046a_esdhc_start_image(unsigned long r0, unsigned long r1, unsigned long
return ret;
}
- icache_invalidate();
+ sync_caches_for_execution();
printf("Starting barebox\n");