From d247da0a8ebcc4ebb4c766487de6af5df560adac Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Tue, 18 Mar 2014 17:36:28 +1030 Subject: [PATCH] powerpc: modules implement R_PPC64_TOCSAVE relocation. Signed-off-by: Rusty Russell --- arch/powerpc/include/uapi/asm/elf.h | 5 ++++- arch/powerpc/kernel/module_64.c | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/include/uapi/asm/elf.h b/arch/powerpc/include/uapi/asm/elf.h index 7e39c9146a71..0341109e4395 100644 --- a/arch/powerpc/include/uapi/asm/elf.h +++ b/arch/powerpc/include/uapi/asm/elf.h @@ -291,9 +291,12 @@ do { \ #define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ #define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ +#define R_PPC64_TLSGD 107 +#define R_PPC64_TLSLD 108 +#define R_PPC64_TOCSAVE 109 /* Keep this the last entry. */ -#define R_PPC64_NUM 107 +#define R_PPC64_NUM 110 /* There's actually a third entry here, but it's unused */ struct ppc64_opd_entry diff --git a/arch/powerpc/kernel/module_64.c b/arch/powerpc/kernel/module_64.c index 7c16b2eefd95..a8694d462079 100644 --- a/arch/powerpc/kernel/module_64.c +++ b/arch/powerpc/kernel/module_64.c @@ -454,6 +454,14 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, *location = value - (unsigned long)location; break; + case R_PPC64_TOCSAVE: + /* + * Marker reloc indicates we don't have to save r2. + * That would only save us one instruction, so ignore + * it. + */ + break; + default: printk("%s: Unknown ADD relocation: %lu\n", me->name, -- GitLab