[PATCH] ARM: Fix bad SP address after relocating kernel
Tony Lindgren
tony at atomide.com
Tue Apr 26 08:37:46 EDT 2011
Otherwise cache_clean_flush can overwrite some of the relocated
area depending on where the kernel image gets loaded. This fixes
booting on n900 after commit 6d7d0ae51574943bf571d269da3243257a2d15db
(ARM: 6750/1: improvements to compressed/head.S).
Thanks to Aaro Koskinen <aaro.koskinen at nokia.com> for debugging
the address of the relocated area that gets corrupted, and to
Nicolas Pitre <nicolas.pitre at linaro.org> for the other uncompress
related fixes.
Signed-off-by: Tony Lindgren <tony at atomide.com>
---
I think this is the right fix.. And we don't want to mess with the
ZBOOT_ROM sp address, right?
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -253,6 +253,15 @@ restart: adr r0, LC0
/* Preserve offset to relocated code. */
sub r6, r9, r6
+#ifndef CONFIG_ZBOOT_ROM
+ /*
+ * Fix sp to use the relocated address in case old sp is
+ * within the relocated area. Otherwise cache_clean_flush
+ * will trash some of the relocated area.
+ */
+ add sp, r6
+#endif
+
bl cache_clean_flush
adr r0, BSYM(restart)
More information about the linux-arm-kernel
mailing list