diff options
author | Rabin Vincent <rabin@rab.in> | 2010-08-03 11:47:03 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-08-10 17:10:51 -0400 |
commit | 77754410fb8ecd7cf307bcd75d60f3b22b8c3cd2 (patch) | |
tree | 649c8306543df05b56ae4d220982dfce4725c85c /arch | |
parent | 81ef806163ebfd4775fc3154e031aad6feaaa192 (diff) |
ARM: 6286/1: fix Thumb-2 decompressor broken by "Auto calculate ZRELADDR"
"ARM: Auto calculate ZRELADDR and provide option for exceptions" broke
the Thumb-2 decompressor because it removed an entry in the LC0 table
but didn't adjust the offset the Thumb-2 code uses to load the SP from
that table.
Fix it, and also change the ARM code to use the separate SP-load since
ARM instructions that include the SP in the LDM register list are
deprecated.
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Rabin Vincent <rabin@rab.in>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index abf4d65acf62..6af9907c3b5c 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -170,9 +170,8 @@ not_angel: | |||
170 | 170 | ||
171 | .text | 171 | .text |
172 | adr r0, LC0 | 172 | adr r0, LC0 |
173 | ARM( ldmia r0, {r1, r2, r3, r5, r6, r11, ip, sp}) | 173 | ldmia r0, {r1, r2, r3, r5, r6, r11, ip} |
174 | THUMB( ldmia r0, {r1, r2, r3, r5, r6, r11, ip} ) | 174 | ldr sp, [r0, #28] |
175 | THUMB( ldr sp, [r0, #32] ) | ||
176 | #ifdef CONFIG_AUTO_ZRELADDR | 175 | #ifdef CONFIG_AUTO_ZRELADDR |
177 | @ determine final kernel image address | 176 | @ determine final kernel image address |
178 | and r4, pc, #0xf8000000 | 177 | and r4, pc, #0xf8000000 |