[PATCH 00/12] ARM: use adr_l/ldr_l macros for PC-relative references
Nicolas Pitre
nico at fluxnic.net
Mon Sep 14 10:06:11 EDT 2020
On Mon, 14 Sep 2020, Ard Biesheuvel wrote:
> This is a respin of the adr_l/ldr_l code I wrote some years ago in the
> context of my KASLR proof of concept for 32-bit ARM.
>
> A new use case came up, in the form of Clang, which does not implement
> the 'adrl' pseudo-instruction in its assembler, and so for PC-relative
> references that don't fit into a ARM adr instruction, we need something
> else. Patch #2 addresses an actual Clang build issue of this nature, by
> replacing an occurrence of adrl with adr_l.
>
> I have included my existing cleanup patches that were built on top of the
> adr_l macro, which replace several occurrences of open coded arithmetic to
> calculate runtime addresses based on link time virtual addresses stored
> in literals.
>
> Note that all of these patches with the exception of #2 were reviewed or
> acked by Nico before, but given that this was a while ago (and the fact
Certainly it must have been, as I didn't remember much of it.
> that neither of us work for Linaro anymore), I have dropped these. Note
> that only patch #1 deviates significantly from the last version that I
> sent out, the remaining ones were just freshened up (and their commit
> logs slightly expanded).
Reviewed-by: Nicolas Pitre <nico at fluxnic.net>
> Cc: Russell King <linux at armlinux.org.uk>
> Cc: Linus Walleij <linus.walleij at linaro.org>
> Cc: Nicolas Pitre <nico at fluxnic.net>
> Cc: Nick Desaulniers <ndesaulniers at google.com>
> Cc: Stefan Agner <stefan at agner.ch>
> Cc: Peter Smith <Peter.Smith at arm.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Will Deacon <will at kernel.org>
>
> Ard Biesheuvel (12):
> ARM: assembler: introduce adr_l, ldr_l and str_l macros
> ARM: efistub: replace adrl pseudo-op with adr_l macro invocation
> ARM: module: add support for place relative relocations
> ARM: head-common.S: use PC-relative insn sequence for __proc_info
> ARM: head-common.S: use PC-relative insn sequence for idmap creation
> ARM: head.S: use PC-relative insn sequence for secondary_data
> ARM: kernel: use relative references for UP/SMP alternatives
> ARM: head: use PC-relative insn sequence for __smp_alt
> ARM: sleep.S: use PC-relative insn sequence for
> sleep_save_sp/mpidr_hash
> ARM: head.S: use PC-relative insn sequences for __fixup_pv_table
> ARM: head.S: use PC relative insn sequence to calculate PHYS_OFFSET
> ARM: kvm: replace open coded VA->PA calculations with adr_l call
>
> arch/arm/boot/compressed/head.S | 18 +---
> arch/arm/include/asm/assembler.h | 88 ++++++++++++++++++-
> arch/arm/include/asm/elf.h | 5 ++
> arch/arm/include/asm/processor.h | 2 +-
> arch/arm/kernel/head-common.S | 22 ++---
> arch/arm/kernel/head.S | 90 +++++---------------
> arch/arm/kernel/hyp-stub.S | 27 +++---
> arch/arm/kernel/module.c | 20 ++++-
> arch/arm/kernel/sleep.S | 19 ++---
> 9 files changed, 159 insertions(+), 132 deletions(-)
>
> --
> 2.17.1
>
>
More information about the linux-arm-kernel
mailing list