summaryrefslogtreecommitdiff
path: root/arch/powerpc/lib
diff options
context:
space:
mode:
authorDiana CRACIUN <Diana.Craciun@freescale.com>2011-08-31 02:45:23 +0000
committerWolfgang Denk <wd@denx.de>2011-09-05 16:07:44 +0200
commit99ffccbd3e5b7bc715e2eed6ea6d36f4020b56d8 (patch)
treee7a052f7678d7d86acbbfd0bf4d70385d99477ff /arch/powerpc/lib
parent019fd6d45b611193610e3366392c53a817c3cee2 (diff)
Flush cache after the OS image is loaded into the memory.
Since we are loading an executable image into memory we need flush it out of the cache to possible maintain coherence on CPUs with split instruction and data caches. We do this for other executable image loading command. On PowerPC once we do this we no longer need to explicitly flush the dcache on multi-core systems in the BOOTM_STATE_OS_PREP phase. We now treat the BOOTM_STATE_OS_PREP as a no-op to maintain backwards compatibility with the bootm subcommand. Signed-off-by: James Yang <James.Yang@freescale.com> Signed-off-by: Diana CRACIUN <Diana.Craciun@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/lib')
-rw-r--r--arch/powerpc/lib/bootm.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
index 137547451b3..8233f1fd7b5 100644
--- a/arch/powerpc/lib/bootm.c
+++ b/arch/powerpc/lib/bootm.c
@@ -174,16 +174,6 @@ void arch_lmb_reserve(struct lmb *lmb)
return ;
}
-static void boot_prep_linux(void)
-{
-#ifdef CONFIG_MP
- /* if we are MP make sure to flush the dcache() to any changes are made
- * visibile to all other cores */
- flush_dcache();
-#endif
- return ;
-}
-
static int boot_cmdline_linux(bootm_headers_t *images)
{
ulong of_size = images->ft_len;
@@ -339,17 +329,19 @@ int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *ima
return 0;
}
- if (flag & BOOTM_STATE_OS_PREP) {
- boot_prep_linux();
+ /*
+ * We do nothing & report success to retain compatiablity with older
+ * versions of u-boot in which this use to flush the dcache on MP
+ * systems
+ */
+ if (flag & BOOTM_STATE_OS_PREP)
return 0;
- }
if (flag & BOOTM_STATE_OS_GO) {
boot_jump_linux(images);
return 0;
}
- boot_prep_linux();
ret = boot_body_linux(images);
if (ret)
return ret;