diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/powerpc/include/uapi/asm/elf.h | 5 | ||||
-rw-r--r-- | arch/powerpc/kernel/module_64.c | 8 |
2 files changed, 12 insertions, 1 deletions
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 { \ | |||
291 | #define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ | 291 | #define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ |
292 | #define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ | 292 | #define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ |
293 | #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ | 293 | #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */ |
294 | #define R_PPC64_TLSGD 107 | ||
295 | #define R_PPC64_TLSLD 108 | ||
296 | #define R_PPC64_TOCSAVE 109 | ||
294 | 297 | ||
295 | /* Keep this the last entry. */ | 298 | /* Keep this the last entry. */ |
296 | #define R_PPC64_NUM 107 | 299 | #define R_PPC64_NUM 110 |
297 | 300 | ||
298 | /* There's actually a third entry here, but it's unused */ | 301 | /* There's actually a third entry here, but it's unused */ |
299 | struct ppc64_opd_entry | 302 | 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, | |||
454 | *location = value - (unsigned long)location; | 454 | *location = value - (unsigned long)location; |
455 | break; | 455 | break; |
456 | 456 | ||
457 | case R_PPC64_TOCSAVE: | ||
458 | /* | ||
459 | * Marker reloc indicates we don't have to save r2. | ||
460 | * That would only save us one instruction, so ignore | ||
461 | * it. | ||
462 | */ | ||
463 | break; | ||
464 | |||
457 | default: | 465 | default: |
458 | printk("%s: Unknown ADD relocation: %lu\n", | 466 | printk("%s: Unknown ADD relocation: %lu\n", |
459 | me->name, | 467 | me->name, |