[U-Boot] [PATCH 5/5] cmd: bootelf: Flush cache before starting

Emmanuel Vadot manu at freebsd.org
Mon Apr 30 08:34:41 UTC 2018


Some application might load some code at location that contain stale
cache entries. Before running a elf or raw binary, flush the caches
if they are enabled.

Signed-off-by: Emmanuel Vadot <manu at freebsd.org>
---
 cmd/elf.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/cmd/elf.c b/cmd/elf.c
index 5b59fc6329..f372306de5 100644
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -109,6 +109,17 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]),
 {
 	unsigned long ret;
 
+#if defined(CONFIG_SYS_HAVE_DCACHE_MAINTENANCE) && \
+	!defined(CONFIG_SYS_DCACHE_OFF)
+	if (dcache_status())
+		flush_dcache_all();
+#endif
+#if defined(CONFIG_SYS_HAVE_ICACHE_MAINTENANCE) && \
+	!defined(CONFIG_SYS_ICACHE_OFF)
+	if (icache_status())
+		invalidate_icache_all();
+#endif
+
 	/*
 	 * pass address parameter as argv[0] (aka command name),
 	 * and all remaining args
-- 
2.16.3



More information about the U-Boot mailing list