diff options
| -rw-r--r-- | arch/arm/kernel/head-common.S | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S index 7c6f9ab47b95..c4effcfba1eb 100644 --- a/arch/arm/kernel/head-common.S +++ b/arch/arm/kernel/head-common.S | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | * and hope for the best (useful if bootloader fails to pass a proper | 24 | * and hope for the best (useful if bootloader fails to pass a proper |
| 25 | * machine ID for example). | 25 | * machine ID for example). |
| 26 | */ | 26 | */ |
| 27 | __HEAD | ||
| 27 | __error_a: | 28 | __error_a: |
| 28 | #ifdef CONFIG_DEBUG_LL | 29 | #ifdef CONFIG_DEBUG_LL |
| 29 | mov r4, r1 @ preserve machine ID | 30 | mov r4, r1 @ preserve machine ID |
| @@ -33,7 +34,7 @@ __error_a: | |||
| 33 | bl printhex8 | 34 | bl printhex8 |
| 34 | adr r0, str_a2 | 35 | adr r0, str_a2 |
| 35 | bl printascii | 36 | bl printascii |
| 36 | adr r3, 4f | 37 | adr r3, __lookup_machine_type_data |
| 37 | ldmia r3, {r4, r5, r6} @ get machine desc list | 38 | ldmia r3, {r4, r5, r6} @ get machine desc list |
| 38 | sub r4, r3, r4 @ get offset between virt&phys | 39 | sub r4, r3, r4 @ get offset between virt&phys |
| 39 | add r5, r5, r4 @ convert virt addresses to | 40 | add r5, r5, r4 @ convert virt addresses to |
| @@ -62,15 +63,6 @@ str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" | |||
| 62 | #endif | 63 | #endif |
| 63 | 64 | ||
| 64 | /* | 65 | /* |
| 65 | * Look in <asm/procinfo.h> and arch/arm/kernel/arch.[ch] for | ||
| 66 | * more information about the __proc_info and __arch_info structures. | ||
| 67 | */ | ||
| 68 | .align 2 | ||
| 69 | 4: .long . | ||
| 70 | .long __arch_info_begin | ||
| 71 | .long __arch_info_end | ||
| 72 | |||
| 73 | /* | ||
| 74 | * Lookup machine architecture in the linker-build list of architectures. | 66 | * Lookup machine architecture in the linker-build list of architectures. |
| 75 | * Note that we can't use the absolute addresses for the __arch_info | 67 | * Note that we can't use the absolute addresses for the __arch_info |
| 76 | * lists since we aren't running with the MMU on (and therefore, we are | 68 | * lists since we aren't running with the MMU on (and therefore, we are |
| @@ -82,7 +74,7 @@ str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" | |||
| 82 | * r5 = mach_info pointer in physical address space | 74 | * r5 = mach_info pointer in physical address space |
| 83 | */ | 75 | */ |
| 84 | __lookup_machine_type: | 76 | __lookup_machine_type: |
| 85 | adr r3, 4b | 77 | adr r3, __lookup_machine_type_data |
| 86 | ldmia r3, {r4, r5, r6} | 78 | ldmia r3, {r4, r5, r6} |
| 87 | sub r3, r3, r4 @ get offset between virt&phys | 79 | sub r3, r3, r4 @ get offset between virt&phys |
| 88 | add r5, r5, r3 @ convert virt addresses to | 80 | add r5, r5, r3 @ convert virt addresses to |
| @@ -97,6 +89,18 @@ __lookup_machine_type: | |||
| 97 | 2: mov pc, lr | 89 | 2: mov pc, lr |
| 98 | ENDPROC(__lookup_machine_type) | 90 | ENDPROC(__lookup_machine_type) |
| 99 | 91 | ||
| 92 | /* | ||
| 93 | * Look in arch/arm/kernel/arch.[ch] for information about the | ||
| 94 | * __arch_info structures. | ||
| 95 | */ | ||
| 96 | .align 2 | ||
| 97 | .type __lookup_machine_type_data, %object | ||
| 98 | __lookup_machine_type_data: | ||
| 99 | .long . | ||
| 100 | .long __arch_info_begin | ||
| 101 | .long __arch_info_end | ||
| 102 | .size __lookup_machine_type_data, . - __lookup_machine_type_data | ||
| 103 | |||
| 100 | /* Determine validity of the r2 atags pointer. The heuristic requires | 104 | /* Determine validity of the r2 atags pointer. The heuristic requires |
| 101 | * that the pointer be aligned, in the first 16k of physical RAM and | 105 | * that the pointer be aligned, in the first 16k of physical RAM and |
| 102 | * that the ATAG_CORE marker is first and present. Future revisions | 106 | * that the ATAG_CORE marker is first and present. Future revisions |
