mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 08:31:55 +00:00
[ARM] 4392/2: Do not corrupt the SP register in compressed/head.S
ARMv7 support code requires a valid stack for saving/restoring registers as the whole D-cache flushing function is more complex. This patch ensures that the SP register is not corrupted. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
f285e3d329
commit
c7341d436a
@ -247,7 +247,7 @@ not_relocated: mov r0, #0
|
||||
mov r3, r7
|
||||
bl decompress_kernel
|
||||
|
||||
add r0, r0, #127
|
||||
add r0, r0, #127 + 128 @ alignment + stack
|
||||
bic r0, r0, #127 @ align the kernel length
|
||||
/*
|
||||
* r0 = decompressed kernel length
|
||||
@ -269,6 +269,7 @@ not_relocated: mov r0, #0
|
||||
stmia r1!, {r9 - r14}
|
||||
cmp r2, r3
|
||||
blo 1b
|
||||
add sp, r1, #128 @ relocate the stack
|
||||
|
||||
bl cache_clean_flush
|
||||
add pc, r5, r0 @ call relocation code
|
||||
@ -476,6 +477,7 @@ __common_mmu_cache_on:
|
||||
*/
|
||||
.align 5
|
||||
reloc_start: add r9, r5, r0
|
||||
sub r9, r9, #128 @ do not copy the stack
|
||||
debug_reloc_start
|
||||
mov r1, r4
|
||||
1:
|
||||
@ -486,6 +488,7 @@ reloc_start: add r9, r5, r0
|
||||
|
||||
cmp r5, r9
|
||||
blo 1b
|
||||
add sp, r1, #128 @ relocate the stack
|
||||
debug_reloc_end
|
||||
|
||||
call_kernel: bl cache_clean_flush
|
||||
|
Loading…
Reference in New Issue
Block a user