From 35c64707ae58155bc4f22ac7ce9824ede21f7c38 Mon Sep 17 00:00:00 2001 From: Russell King Date: Mon, 4 Oct 2010 17:45:25 +0100 Subject: [PATCH] --- yaml --- r: 212463 b: refs/heads/master c: 80924ac595f3ca32ec0a80cc1217c7019d3519ff h: refs/heads/master i: 212461: 1330935482cd5643d561465dfeb65276dde8210a 212459: 50033c0db5181f7372c8d49309a548776404810e 212455: 2e4e50fc07090d5b0f705f483551cdfc4f6398bf 212447: d2f2ca996a1ede6dcba6d82b9202d22c19f809ca v: v3 --- [refs] | 2 +- trunk/arch/arm/kernel/head-common.S | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index 1d706bf8f5b0..42d7b2de46d4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c083c6609b290a650894f846270a9233401adc22 +refs/heads/master: 80924ac595f3ca32ec0a80cc1217c7019d3519ff diff --git a/trunk/arch/arm/kernel/head-common.S b/trunk/arch/arm/kernel/head-common.S index 7c6f9ab47b95..c4effcfba1eb 100644 --- a/trunk/arch/arm/kernel/head-common.S +++ b/trunk/arch/arm/kernel/head-common.S @@ -24,6 +24,7 @@ * and hope for the best (useful if bootloader fails to pass a proper * machine ID for example). */ + __HEAD __error_a: #ifdef CONFIG_DEBUG_LL mov r4, r1 @ preserve machine ID @@ -33,7 +34,7 @@ __error_a: bl printhex8 adr r0, str_a2 bl printascii - adr r3, 4f + adr r3, __lookup_machine_type_data ldmia r3, {r4, r5, r6} @ get machine desc list sub r4, r3, r4 @ get offset between virt&phys add r5, r5, r4 @ convert virt addresses to @@ -61,15 +62,6 @@ str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" .align #endif -/* - * Look in and arch/arm/kernel/arch.[ch] for - * more information about the __proc_info and __arch_info structures. - */ - .align 2 -4: .long . - .long __arch_info_begin - .long __arch_info_end - /* * Lookup machine architecture in the linker-build list of architectures. * Note that we can't use the absolute addresses for the __arch_info @@ -82,7 +74,7 @@ str_a3: .asciz "\nPlease check your kernel config and/or bootloader.\n" * r5 = mach_info pointer in physical address space */ __lookup_machine_type: - adr r3, 4b + adr r3, __lookup_machine_type_data ldmia r3, {r4, r5, r6} sub r3, r3, r4 @ get offset between virt&phys add r5, r5, r3 @ convert virt addresses to @@ -97,6 +89,18 @@ __lookup_machine_type: 2: mov pc, lr ENDPROC(__lookup_machine_type) +/* + * Look in arch/arm/kernel/arch.[ch] for information about the + * __arch_info structures. + */ + .align 2 + .type __lookup_machine_type_data, %object +__lookup_machine_type_data: + .long . + .long __arch_info_begin + .long __arch_info_end + .size __lookup_machine_type_data, . - __lookup_machine_type_data + /* Determine validity of the r2 atags pointer. The heuristic requires * that the pointer be aligned, in the first 16k of physical RAM and * that the ATAG_CORE marker is first and present. Future revisions