|
@@ -187,7 +187,7 @@ not_angel:
|
|
|
bl cache_on
|
|
|
|
|
|
restart: adr r0, LC0
|
|
|
- ldmia r0, {r1, r2, r3, r6, r9, r11, r12}
|
|
|
+ ldmia r0, {r1, r2, r3, r6, r10, r11, r12}
|
|
|
ldr sp, [r0, #28]
|
|
|
|
|
|
/*
|
|
@@ -196,6 +196,20 @@ restart: adr r0, LC0
|
|
|
*/
|
|
|
sub r0, r0, r1 @ calculate the delta offset
|
|
|
add r6, r6, r0 @ _edata
|
|
|
+ add r10, r10, r0 @ inflated kernel size location
|
|
|
+
|
|
|
+ /*
|
|
|
+ * The kernel build system appends the size of the
|
|
|
+ * decompressed kernel at the end of the compressed data
|
|
|
+ * in little-endian form.
|
|
|
+ */
|
|
|
+ ldrb r9, [r10, #0]
|
|
|
+ ldrb lr, [r10, #1]
|
|
|
+ orr r9, r9, lr, lsl #8
|
|
|
+ ldrb lr, [r10, #2]
|
|
|
+ ldrb r10, [r10, #3]
|
|
|
+ orr r9, r9, lr, lsl #16
|
|
|
+ orr r9, r9, r10, lsl #24
|
|
|
|
|
|
#ifndef CONFIG_ZBOOT_ROM
|
|
|
/* malloc space is above the relocated stack (64k max) */
|
|
@@ -355,7 +369,7 @@ LC0: .word LC0 @ r1
|
|
|
.word __bss_start @ r2
|
|
|
.word _end @ r3
|
|
|
.word _edata @ r6
|
|
|
- .word _image_size @ r9
|
|
|
+ .word input_data_end - 4 @ r10 (inflated size location)
|
|
|
.word _got_start @ r11
|
|
|
.word _got_end @ ip
|
|
|
.word user_stack_end @ sp
|