diff options
Diffstat (limited to 'arch/arm/boot/compressed/head.S')
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 9be21ba648c..7193884ed8b 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -125,9 +125,13 @@ wait: mrc p14, 0, pc, c0, c1, 0 | |||
| 125 | * sort out different calling conventions | 125 | * sort out different calling conventions |
| 126 | */ | 126 | */ |
| 127 | .align | 127 | .align |
| 128 | .arm @ Always enter in ARM state | ||
| 128 | start: | 129 | start: |
| 129 | .type start,#function | 130 | .type start,#function |
| 130 | .rept 8 | 131 | THUMB( adr r12, BSYM(1f) ) |
| 132 | THUMB( bx r12 ) | ||
| 133 | THUMB( .rept 6 ) | ||
| 134 | ARM( .rept 8 ) | ||
| 131 | mov r0, r0 | 135 | mov r0, r0 |
| 132 | .endr | 136 | .endr |
| 133 | 137 | ||
| @@ -135,6 +139,7 @@ start: | |||
| 135 | .word 0x016f2818 @ Magic numbers to help the loader | 139 | .word 0x016f2818 @ Magic numbers to help the loader |
| 136 | .word start @ absolute load/run zImage address | 140 | .word start @ absolute load/run zImage address |
| 137 | .word _edata @ zImage end address | 141 | .word _edata @ zImage end address |
| 142 | THUMB( .thumb ) | ||
| 138 | 1: mov r7, r1 @ save architecture ID | 143 | 1: mov r7, r1 @ save architecture ID |
| 139 | mov r8, r2 @ save atags pointer | 144 | mov r8, r2 @ save atags pointer |
| 140 | 145 | ||
| @@ -174,7 +179,8 @@ not_angel: | |||
| 174 | ldr sp, [r0, #28] | 179 | ldr sp, [r0, #28] |
| 175 | #ifdef CONFIG_AUTO_ZRELADDR | 180 | #ifdef CONFIG_AUTO_ZRELADDR |
| 176 | @ determine final kernel image address | 181 | @ determine final kernel image address |
| 177 | and r4, pc, #0xf8000000 | 182 | mov r4, pc |
| 183 | and r4, r4, #0xf8000000 | ||
| 178 | add r4, r4, #TEXT_OFFSET | 184 | add r4, r4, #TEXT_OFFSET |
| 179 | #else | 185 | #else |
| 180 | ldr r4, =zreladdr | 186 | ldr r4, =zreladdr |
| @@ -445,7 +451,8 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size | |||
| 445 | */ | 451 | */ |
| 446 | mov r1, #0x1e | 452 | mov r1, #0x1e |
| 447 | orr r1, r1, #3 << 10 | 453 | orr r1, r1, #3 << 10 |
| 448 | mov r2, pc, lsr #20 | 454 | mov r2, pc |
| 455 | mov r2, r2, lsr #20 | ||
| 449 | orr r1, r1, r2, lsl #20 | 456 | orr r1, r1, r2, lsl #20 |
| 450 | add r0, r3, r2, lsl #2 | 457 | add r0, r3, r2, lsl #2 |
| 451 | str r1, [r0], #4 | 458 | str r1, [r0], #4 |
