diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2009-05-22 14:25:34 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-05-22 14:25:34 -0400 |
commit | e4b636366c00738b9609cda307014d71b1225b7f (patch) | |
tree | 760b67b3624eda62e943e48ce93635c30a5b47bf /arch/arm/kernel/module.c | |
parent | b9ed7252d219c1c663944bf03846eabb515dbe75 (diff) | |
parent | 279e677faa775ad16e75c32e1bf4a37f8158bc61 (diff) |
Merge branch 'master' into for-2.6.31
Conflicts:
drivers/block/hd.c
drivers/block/mg_disk.c
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'arch/arm/kernel/module.c')
-rw-r--r-- | arch/arm/kernel/module.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c index d1731e39b496..bac03c81489d 100644 --- a/arch/arm/kernel/module.c +++ b/arch/arm/kernel/module.c | |||
@@ -169,6 +169,21 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, | |||
169 | *(u32 *)loc = offset & 0x7fffffff; | 169 | *(u32 *)loc = offset & 0x7fffffff; |
170 | break; | 170 | break; |
171 | 171 | ||
172 | case R_ARM_MOVW_ABS_NC: | ||
173 | case R_ARM_MOVT_ABS: | ||
174 | offset = *(u32 *)loc; | ||
175 | offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff); | ||
176 | offset = (offset ^ 0x8000) - 0x8000; | ||
177 | |||
178 | offset += sym->st_value; | ||
179 | if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_ABS) | ||
180 | offset >>= 16; | ||
181 | |||
182 | *(u32 *)loc &= 0xfff0f000; | ||
183 | *(u32 *)loc |= ((offset & 0xf000) << 4) | | ||
184 | (offset & 0x0fff); | ||
185 | break; | ||
186 | |||
172 | default: | 187 | default: |
173 | printk(KERN_ERR "%s: unknown relocation: %u\n", | 188 | printk(KERN_ERR "%s: unknown relocation: %u\n", |
174 | module->name, ELF32_R_TYPE(rel->r_info)); | 189 | module->name, ELF32_R_TYPE(rel->r_info)); |