diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-08-27 22:00:20 -0700 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-08-27 22:00:20 -0700 |
| commit | 4b61bb575b1fb42ab1df228ae7812e5135f656da (patch) | |
| tree | 03456466e6f678456ea462a7da4b352d1aa03aa3 /arch/microblaze/kernel/module.c | |
| parent | Input: xpad - add USB ID for the drumkit controller from Rock Band (diff) | |
| parent | Linux 2.6.31-rc8 (diff) | |
| download | linux-4b61bb575b1fb42ab1df228ae7812e5135f656da.tar.gz linux-4b61bb575b1fb42ab1df228ae7812e5135f656da.zip | |
Merge commit 'v2.6.31-rc8' into next
Diffstat (limited to 'arch/microblaze/kernel/module.c')
| -rw-r--r-- | arch/microblaze/kernel/module.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/arch/microblaze/kernel/module.c b/arch/microblaze/kernel/module.c index 51414171326f..5a45b1adfef1 100644 --- a/arch/microblaze/kernel/module.c +++ b/arch/microblaze/kernel/module.c @@ -57,7 +57,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, Elf32_Rela *rela = (void *)sechdrs[relsec].sh_addr; Elf32_Sym *sym; unsigned long int *location; - unsigned long int locoffs; unsigned long int value; #if __GNUC__ < 4 unsigned long int old_value; @@ -113,10 +112,12 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, break; case R_MICROBLAZE_64_PCREL: - locoffs = (location[0] & 0xFFFF) << 16 | +#if __GNUC__ < 4 + old_value = (location[0] & 0xFFFF) << 16 | (location[1] & 0xFFFF); - value -= (unsigned long int)(location) + 4 + - locoffs; + value -= old_value; +#endif + value -= (unsigned long int)(location) + 4; location[0] = (location[0] & 0xFFFF0000) | (value >> 16); location[1] = (location[1] & 0xFFFF0000) | @@ -125,6 +126,14 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, value); break; + case R_MICROBLAZE_32_PCREL_LO: + pr_debug("R_MICROBLAZE_32_PCREL_LO\n"); + break; + + case R_MICROBLAZE_64_NONE: + pr_debug("R_MICROBLAZE_NONE\n"); + break; + case R_MICROBLAZE_NONE: pr_debug("R_MICROBLAZE_NONE\n"); break; @@ -133,7 +142,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, printk(KERN_ERR "module %s: " "Unknown relocation: %u\n", module->name, - ELF32_R_TYPE(rela->r_info)); + ELF32_R_TYPE(rela[i].r_info)); return -ENOEXEC; } } |
