summaryrefslogtreecommitdiffstats
path: root/arch/arm/include/asm/elf.h
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2021-11-24 18:56:22 +0100
committerArd Biesheuvel <ardb@kernel.org>2021-12-06 12:49:16 +0100
commit1fa8c4b19543ae8c8894ec92a18696c9f9b03fc8 (patch)
treecc6a2f523338f66bf6b59be8b91e3433e0f9baa4 /arch/arm/include/asm/elf.h
parent831a469bc1674b7898984ce96f2902534445c0cf (diff)
downloadlinux-1fa8c4b19543ae8c8894ec92a18696c9f9b03fc8.tar.bz2
ARM: module: implement support for PC-relative group relocations
Add support for the R_ARM_ALU_PC_Gn_NC and R_ARM_LDR_PC_G2 group relocations [0] so we can use them in modules. These will be used to load the current task pointer from a global variable without having to rely on a literal pool entry to carry the address of this variable, which may have a significant negative impact on cache utilization for variables that are used often and in many different places, as each occurrence will result in a literal pool entry and therefore a line in the D-cache. [0] 'ELF for the ARM architecture' https://github.com/ARM-software/abi-aa/releases Acked-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Nicolas Pitre <nico@fluxnic.net> Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Tested-by: Marc Zyngier <maz@kernel.org> Tested-by: Vladimir Murzin <vladimir.murzin@arm.com> # ARMv7M
Diffstat (limited to 'arch/arm/include/asm/elf.h')
-rw-r--r--arch/arm/include/asm/elf.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm/include/asm/elf.h b/arch/arm/include/asm/elf.h
index b8102a6ddf16..d68101655b74 100644
--- a/arch/arm/include/asm/elf.h
+++ b/arch/arm/include/asm/elf.h
@@ -61,6 +61,9 @@ typedef struct user_fp elf_fpregset_t;
#define R_ARM_MOVT_ABS 44
#define R_ARM_MOVW_PREL_NC 45
#define R_ARM_MOVT_PREL 46
+#define R_ARM_ALU_PC_G0_NC 57
+#define R_ARM_ALU_PC_G1_NC 59
+#define R_ARM_LDR_PC_G2 63
#define R_ARM_THM_CALL 10
#define R_ARM_THM_JUMP24 30