[U-Boot] [PATCH] bootm: qnx: Disable data cache before booting QNX image
Emmanuel Vadot
manu at bidouilliste.com
Thu Jan 19 10:23:56 CET 2017
Instead of disabling the data cache in the bootelf command, disabling
it in the do_bootm_qnxelf function.
Some ELF binary might want the cache enabled.
Signed-off-by: Emmanuel Vadot <manu at bidouilliste.com>
---
cmd/elf.c | 11 -----------
common/bootm_os.c | 12 ++++++++++++
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/cmd/elf.c b/cmd/elf.c
index 5190cc6c0f..e4c6535111 100644
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -110,22 +110,11 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]),
unsigned long ret;
/*
- * QNX images require the data cache is disabled.
- * Data cache is already flushed, so just turn it off.
- */
- int dcache = dcache_status();
- if (dcache)
- dcache_disable();
-
- /*
* pass address parameter as argv[0] (aka command name),
* and all remaining args
*/
ret = entry(argc, argv);
- if (dcache)
- dcache_enable();
-
return ret;
}
diff --git a/common/bootm_os.c b/common/bootm_os.c
index e3f5a46412..6e463c317e 100644
--- a/common/bootm_os.c
+++ b/common/bootm_os.c
@@ -353,6 +353,7 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[],
{
char *local_args[2];
char str[16];
+ int dcache;
if (flag != BOOTM_STATE_OS_GO)
return 0;
@@ -367,8 +368,19 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[],
sprintf(str, "%lx", images->ep); /* write entry-point into string */
local_args[0] = argv[0];
local_args[1] = str; /* and provide it via the arguments */
+
+ /*
+ * QNX images require the data cache is disabled.
+ */
+ dcache = dcache_status();
+ if (dcache)
+ dcache_disable();
+
do_bootelf(NULL, 0, 2, local_args);
+ if (dcache)
+ dcache_enable();
+
return 1;
}
#endif
--
2.11.0
More information about the U-Boot
mailing list