Commit 62c4a2e2 authored by Ard Biesheuvel's avatar Ard Biesheuvel

ARM: head-common.S: use PC-relative insn sequence for __proc_info

Replace the open coded PC relative offset calculations with a pair of
adr_l invocations. This removes some open coded arithmetic involving
virtual addresses, avoids literal pools on v7+, and slightly reduces
the footprint of the code.
Reviewed-by: default avatarNicolas Pitre <nico@fluxnic.net>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent 67e3f828
...@@ -170,11 +170,12 @@ ENDPROC(lookup_processor_type) ...@@ -170,11 +170,12 @@ ENDPROC(lookup_processor_type)
* r9 = cpuid (preserved) * r9 = cpuid (preserved)
*/ */
__lookup_processor_type: __lookup_processor_type:
adr r3, __lookup_processor_type_data /*
ldmia r3, {r4 - r6} * Look in <asm/procinfo.h> for information about the __proc_info
sub r3, r3, r4 @ get offset between virt&phys * structure.
add r5, r5, r3 @ convert virt addresses to */
add r6, r6, r3 @ physical address space adr_l r5, __proc_info_begin
adr_l r6, __proc_info_end
1: ldmia r5, {r3, r4} @ value, mask 1: ldmia r5, {r3, r4} @ value, mask
and r4, r4, r9 @ mask wanted bits and r4, r4, r9 @ mask wanted bits
teq r3, r4 teq r3, r4
...@@ -186,17 +187,6 @@ __lookup_processor_type: ...@@ -186,17 +187,6 @@ __lookup_processor_type:
2: ret lr 2: ret lr
ENDPROC(__lookup_processor_type) ENDPROC(__lookup_processor_type)
/*
* Look in <asm/procinfo.h> for information about the __proc_info structure.
*/
.align 2
.type __lookup_processor_type_data, %object
__lookup_processor_type_data:
.long .
.long __proc_info_begin
.long __proc_info_end
.size __lookup_processor_type_data, . - __lookup_processor_type_data
__error_lpae: __error_lpae:
#ifdef CONFIG_DEBUG_LL #ifdef CONFIG_DEBUG_LL
adr r0, str_lpae adr r0, str_lpae
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment