OSDN Git Service

arm64/module: switch to ADRP/ADD sequences for PLT entries
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Thu, 22 Nov 2018 08:46:46 +0000 (09:46 +0100)
committerWill Deacon <will.deacon@arm.com>
Tue, 27 Nov 2018 19:00:45 +0000 (19:00 +0000)
commitbdb85cd1d20669dfae813555dddb745ad09323ba
treeaf519f4e76f6d913d7ed665a12c4cdc51512edb6
parent7aaf7b2fd26c3a069472dd9778367b2f941dd866
arm64/module: switch to ADRP/ADD sequences for PLT entries

Now that we have switched to the small code model entirely, and
reduced the extended KASLR range to 4 GB, we can be sure that the
targets of relative branches that are out of range are in range
for a ADRP/ADD pair, which is one instruction shorter than our
current MOVN/MOVK/MOVK sequence, and is more idiomatic and so it
is more likely to be implemented efficiently by micro-architectures.

So switch over the ordinary PLT code and the special handling of
the Cortex-A53 ADRP errata, as well as the ftrace trampline
handling.

Reviewed-by: Torsten Duwe <duwe@lst.de>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
[will: Added a couple of comments in the plt equality check]
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/module.h
arch/arm64/kernel/ftrace.c
arch/arm64/kernel/module-plts.c
arch/arm64/kernel/module.c