[PATCH v2 11/29] ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
Nicolas Pitre
nicolas.pitre at linaro.org
Mon Sep 4 09:50:32 PDT 2017
On Sun, 3 Sep 2017, Ard Biesheuvel wrote:
> Replace the open coded arithmetic with a simple adr_l/sub pair. This
> ensures these quantities are invariant under runtime relocation.
>
> Cc: Russell King <linux at armlinux.org.uk>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
Of course there won't be anything to relocate in a XIP kernel. But
consistency is good and this looks nicer.
Acked-by: Nicolas Pitre <nico at linaro.org>
> ---
> arch/arm/kernel/head.S | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
> index f607e290ef4b..62c961849035 100644
> --- a/arch/arm/kernel/head.S
> +++ b/arch/arm/kernel/head.S
> @@ -106,10 +106,8 @@ ENTRY(stext)
> #endif
>
> #ifndef CONFIG_XIP_KERNEL
> - adr r3, 2f
> - ldmia r3, {r4, r8}
> - sub r4, r3, r4 @ (PHYS_OFFSET - PAGE_OFFSET)
> - add r8, r8, r4 @ PHYS_OFFSET
> + adr_l r8, _text @ __pa(_text)
> + sub r8, r8, #TEXT_OFFSET @ PHYS_OFFSET
> #else
> ldr r8, =PLAT_PHYS_OFFSET @ always constant in this case
> #endif
> @@ -161,10 +159,6 @@ ENTRY(stext)
> 1: b __enable_mmu
> ENDPROC(stext)
> .ltorg
> -#ifndef CONFIG_XIP_KERNEL
> -2: .long .
> - .long PAGE_OFFSET
> -#endif
>
> /*
> * Setup the initial page tables. We only setup the barest
> --
> 2.11.0
>
>
More information about the linux-arm-kernel
mailing list