diff options
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
-rw-r--r-- | arch/arm/boot/compressed/head.S | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 6fdf4abb718..f9da41921c5 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -179,7 +179,7 @@ not_angel: | |||
179 | bl cache_on | 179 | bl cache_on |
180 | 180 | ||
181 | restart: adr r0, LC0 | 181 | restart: adr r0, LC0 |
182 | ldmia r0, {r1, r2, r3, r6, r9, r11, r12} | 182 | ldmia r0, {r1, r2, r3, r6, r10, r11, r12} |
183 | ldr sp, [r0, #28] | 183 | ldr sp, [r0, #28] |
184 | 184 | ||
185 | /* | 185 | /* |
@@ -188,6 +188,20 @@ restart: adr r0, LC0 | |||
188 | */ | 188 | */ |
189 | sub r0, r0, r1 @ calculate the delta offset | 189 | sub r0, r0, r1 @ calculate the delta offset |
190 | add r6, r6, r0 @ _edata | 190 | add r6, r6, r0 @ _edata |
191 | add r10, r10, r0 @ inflated kernel size location | ||
192 | |||
193 | /* | ||
194 | * The kernel build system appends the size of the | ||
195 | * decompressed kernel at the end of the compressed data | ||
196 | * in little-endian form. | ||
197 | */ | ||
198 | ldrb r9, [r10, #0] | ||
199 | ldrb lr, [r10, #1] | ||
200 | orr r9, r9, lr, lsl #8 | ||
201 | ldrb lr, [r10, #2] | ||
202 | ldrb r10, [r10, #3] | ||
203 | orr r9, r9, lr, lsl #16 | ||
204 | orr r9, r9, r10, lsl #24 | ||
191 | 205 | ||
192 | #ifndef CONFIG_ZBOOT_ROM | 206 | #ifndef CONFIG_ZBOOT_ROM |
193 | /* malloc space is above the relocated stack (64k max) */ | 207 | /* malloc space is above the relocated stack (64k max) */ |
@@ -347,10 +361,10 @@ LC0: .word LC0 @ r1 | |||
347 | .word __bss_start @ r2 | 361 | .word __bss_start @ r2 |
348 | .word _end @ r3 | 362 | .word _end @ r3 |
349 | .word _edata @ r6 | 363 | .word _edata @ r6 |
350 | .word _image_size @ r9 | 364 | .word input_data_end - 4 @ r10 (inflated size location) |
351 | .word _got_start @ r11 | 365 | .word _got_start @ r11 |
352 | .word _got_end @ ip | 366 | .word _got_end @ ip |
353 | .word user_stack_end @ sp | 367 | .word .L_user_stack_end @ sp |
354 | .size LC0, . - LC0 | 368 | .size LC0, . - LC0 |
355 | 369 | ||
356 | #ifdef CONFIG_ARCH_RPC | 370 | #ifdef CONFIG_ARCH_RPC |
@@ -763,12 +777,6 @@ proc_types: | |||
763 | W(b) __armv4_mmu_cache_off | 777 | W(b) __armv4_mmu_cache_off |
764 | W(b) __armv6_mmu_cache_flush | 778 | W(b) __armv6_mmu_cache_flush |
765 | 779 | ||
766 | .word 0x560f5810 @ Marvell PJ4 ARMv6 | ||
767 | .word 0xff0ffff0 | ||
768 | W(b) __armv4_mmu_cache_on | ||
769 | W(b) __armv4_mmu_cache_off | ||
770 | W(b) __armv6_mmu_cache_flush | ||
771 | |||
772 | .word 0x000f0000 @ new CPU Id | 780 | .word 0x000f0000 @ new CPU Id |
773 | .word 0x000f0000 | 781 | .word 0x000f0000 |
774 | W(b) __armv7_mmu_cache_on | 782 | W(b) __armv7_mmu_cache_on |
@@ -1094,5 +1102,5 @@ reloc_code_end: | |||
1094 | 1102 | ||
1095 | .align | 1103 | .align |
1096 | .section ".stack", "aw", %nobits | 1104 | .section ".stack", "aw", %nobits |
1097 | user_stack: .space 4096 | 1105 | .L_user_stack: .space 4096 |
1098 | user_stack_end: | 1106 | .L_user_stack_end: |