[PATCH v2 08/29] ARM: head: use PC-relative insn sequence for __smp_alt
Nicolas Pitre
nicolas.pitre at linaro.org
Mon Sep 4 09:19:10 PDT 2017
On Sun, 3 Sep 2017, Ard Biesheuvel wrote:
> Replace the open coded PC relative offset calculations with a pair
> of adr_l invocations. This ensures these quantities are invariant
> under runtime relocation.
You probably should add that this patch must be applied on top of "ARM:
kernel: use relative references for UP/SMP alternatives" because of the
expected r3 value prior to that patch.
Acked-by: Nicolas Pitre <nico at linaro.org>
> Cc: Russell King <linux at armlinux.org.uk>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
> ---
> arch/arm/kernel/head.S | 12 ++----------
> 1 file changed, 2 insertions(+), 10 deletions(-)
>
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index ec22f42fd8bb..db6b823f20a4 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -523,19 +523,11 @@ ARM_BE8(rev r0, r0) @ byteswap if big endian
> retne lr
>
> __fixup_smp_on_up:
> - adr r0, 1f
> - ldmia r0, {r3 - r5}
> - sub r3, r0, r3
> - add r4, r4, r3
> - add r5, r5, r3
> + adr_l r4, __smpalt_begin
> + adr_l r5, __smpalt_end
> b __do_fixup_smp_on_up
> ENDPROC(__fixup_smp)
>
> - .align
> -1: .word .
> - .word __smpalt_begin
> - .word __smpalt_end
> -
> .pushsection .data
> .globl smp_on_up
> smp_on_up:
> --
> 2.11.0
>
>
More information about the linux-arm-kernel
mailing list