diff options
Diffstat (limited to 'arch/parisc/kernel/module.c')
-rw-r--r-- | arch/parisc/kernel/module.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c index b9d75d9fa9ac..a0ecdb4abcc8 100644 --- a/arch/parisc/kernel/module.c +++ b/arch/parisc/kernel/module.c | |||
@@ -660,6 +660,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs, | |||
660 | } | 660 | } |
661 | *loc = (*loc & ~0x3ff1ffd) | reassemble_22(val); | 661 | *loc = (*loc & ~0x3ff1ffd) | reassemble_22(val); |
662 | break; | 662 | break; |
663 | case R_PARISC_PCREL32: | ||
664 | /* 32-bit PC relative address */ | ||
665 | *loc = val - dot - 8 + addend; | ||
666 | break; | ||
663 | 667 | ||
664 | default: | 668 | default: |
665 | printk(KERN_ERR "module %s: Unknown relocation: %u\n", | 669 | printk(KERN_ERR "module %s: Unknown relocation: %u\n", |
@@ -788,6 +792,10 @@ int apply_relocate_add(Elf_Shdr *sechdrs, | |||
788 | CHECK_RELOC(val, 22); | 792 | CHECK_RELOC(val, 22); |
789 | *loc = (*loc & ~0x3ff1ffd) | reassemble_22(val); | 793 | *loc = (*loc & ~0x3ff1ffd) | reassemble_22(val); |
790 | break; | 794 | break; |
795 | case R_PARISC_PCREL32: | ||
796 | /* 32-bit PC relative address */ | ||
797 | *loc = val - dot - 8 + addend; | ||
798 | break; | ||
791 | case R_PARISC_DIR64: | 799 | case R_PARISC_DIR64: |
792 | /* 64-bit effective address */ | 800 | /* 64-bit effective address */ |
793 | *loc64 = val + addend; | 801 | *loc64 = val + addend; |