diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
index 137547451b342a192424477a45faae802146f8d4..8233f1fd7b572e843d14e32e06bb001d8c3feafc 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;
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 272d879bebc2036a244794e6631da9cf3dc551cc..8909ee703d32db806ba677196788af623cde2bf4 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -432,6 +432,9 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)
 		printf ("Unimplemented compression type %d\n", comp);
 		return BOOTM_ERR_UNIMPLEMENTED;
 	}
+
+	flush_cache(load, (*load_end - load) * sizeof(ulong));
+
 	puts ("OK\n");
 	debug ("   kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
 	if (boot_progress)