diff options
Diffstat (limited to 'arch/parisc/kernel/module.c')
-rw-r--r-- | arch/parisc/kernel/module.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/arch/parisc/kernel/module.c b/arch/parisc/kernel/module.c index 3c63a820fcda..b9d75d9fa9ac 100644 --- a/arch/parisc/kernel/module.c +++ b/arch/parisc/kernel/module.c | |||
@@ -42,9 +42,9 @@ | |||
42 | * We are not doing SEGREL32 handling correctly. According to the ABI, we | 42 | * We are not doing SEGREL32 handling correctly. According to the ABI, we |
43 | * should do a value offset, like this: | 43 | * should do a value offset, like this: |
44 | * if (in_init(me, (void *)val)) | 44 | * if (in_init(me, (void *)val)) |
45 | * val -= (uint32_t)me->module_init; | 45 | * val -= (uint32_t)me->init_layout.base; |
46 | * else | 46 | * else |
47 | * val -= (uint32_t)me->module_core; | 47 | * val -= (uint32_t)me->core_layout.base; |
48 | * However, SEGREL32 is used only for PARISC unwind entries, and we want | 48 | * However, SEGREL32 is used only for PARISC unwind entries, and we want |
49 | * those entries to have an absolute address, and not just an offset. | 49 | * those entries to have an absolute address, and not just an offset. |
50 | * | 50 | * |
@@ -100,14 +100,14 @@ | |||
100 | * or init pieces the location is */ | 100 | * or init pieces the location is */ |
101 | static inline int in_init(struct module *me, void *loc) | 101 | static inline int in_init(struct module *me, void *loc) |
102 | { | 102 | { |
103 | return (loc >= me->module_init && | 103 | return (loc >= me->init_layout.base && |
104 | loc <= (me->module_init + me->init_size)); | 104 | loc <= (me->init_layout.base + me->init_layout.size)); |
105 | } | 105 | } |
106 | 106 | ||
107 | static inline int in_core(struct module *me, void *loc) | 107 | static inline int in_core(struct module *me, void *loc) |
108 | { | 108 | { |
109 | return (loc >= me->module_core && | 109 | return (loc >= me->core_layout.base && |
110 | loc <= (me->module_core + me->core_size)); | 110 | loc <= (me->core_layout.base + me->core_layout.size)); |
111 | } | 111 | } |
112 | 112 | ||
113 | static inline int in_local(struct module *me, void *loc) | 113 | static inline int in_local(struct module *me, void *loc) |
@@ -367,13 +367,13 @@ int module_frob_arch_sections(CONST Elf_Ehdr *hdr, | |||
367 | } | 367 | } |
368 | 368 | ||
369 | /* align things a bit */ | 369 | /* align things a bit */ |
370 | me->core_size = ALIGN(me->core_size, 16); | 370 | me->core_layout.size = ALIGN(me->core_layout.size, 16); |
371 | me->arch.got_offset = me->core_size; | 371 | me->arch.got_offset = me->core_layout.size; |
372 | me->core_size += gots * sizeof(struct got_entry); | 372 | me->core_layout.size += gots * sizeof(struct got_entry); |
373 | 373 | ||
374 | me->core_size = ALIGN(me->core_size, 16); | 374 | me->core_layout.size = ALIGN(me->core_layout.size, 16); |
375 | me->arch.fdesc_offset = me->core_size; | 375 | me->arch.fdesc_offset = me->core_layout.size; |
376 | me->core_size += fdescs * sizeof(Elf_Fdesc); | 376 | me->core_layout.size += fdescs * sizeof(Elf_Fdesc); |
377 | 377 | ||
378 | me->arch.got_max = gots; | 378 | me->arch.got_max = gots; |
379 | me->arch.fdesc_max = fdescs; | 379 | me->arch.fdesc_max = fdescs; |
@@ -391,7 +391,7 @@ static Elf64_Word get_got(struct module *me, unsigned long value, long addend) | |||
391 | 391 | ||
392 | BUG_ON(value == 0); | 392 | BUG_ON(value == 0); |
393 | 393 | ||
394 | got = me->module_core + me->arch.got_offset; | 394 | got = me->core_layout.base + me->arch.got_offset; |
395 | for (i = 0; got[i].addr; i++) | 395 | for (i = 0; got[i].addr; i++) |
396 | if (got[i].addr == value) | 396 | if (got[i].addr == value) |
397 | goto out; | 397 | goto out; |
@@ -409,7 +409,7 @@ static Elf64_Word get_got(struct module *me, unsigned long value, long addend) | |||
409 | #ifdef CONFIG_64BIT | 409 | #ifdef CONFIG_64BIT |
410 | static Elf_Addr get_fdesc(struct module *me, unsigned long value) | 410 | static Elf_Addr get_fdesc(struct module *me, unsigned long value) |
411 | { | 411 | { |
412 | Elf_Fdesc *fdesc = me->module_core + me->arch.fdesc_offset; | 412 | Elf_Fdesc *fdesc = me->core_layout.base + me->arch.fdesc_offset; |
413 | 413 | ||
414 | if (!value) { | 414 | if (!value) { |
415 | printk(KERN_ERR "%s: zero OPD requested!\n", me->name); | 415 | printk(KERN_ERR "%s: zero OPD requested!\n", me->name); |
@@ -427,7 +427,7 @@ static Elf_Addr get_fdesc(struct module *me, unsigned long value) | |||
427 | 427 | ||
428 | /* Create new one */ | 428 | /* Create new one */ |
429 | fdesc->addr = value; | 429 | fdesc->addr = value; |
430 | fdesc->gp = (Elf_Addr)me->module_core + me->arch.got_offset; | 430 | fdesc->gp = (Elf_Addr)me->core_layout.base + me->arch.got_offset; |
431 | return (Elf_Addr)fdesc; | 431 | return (Elf_Addr)fdesc; |
432 | } | 432 | } |
433 | #endif /* CONFIG_64BIT */ | 433 | #endif /* CONFIG_64BIT */ |
@@ -839,7 +839,7 @@ register_unwind_table(struct module *me, | |||
839 | 839 | ||
840 | table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr; | 840 | table = (unsigned char *)sechdrs[me->arch.unwind_section].sh_addr; |
841 | end = table + sechdrs[me->arch.unwind_section].sh_size; | 841 | end = table + sechdrs[me->arch.unwind_section].sh_size; |
842 | gp = (Elf_Addr)me->module_core + me->arch.got_offset; | 842 | gp = (Elf_Addr)me->core_layout.base + me->arch.got_offset; |
843 | 843 | ||
844 | DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", | 844 | DEBUGP("register_unwind_table(), sect = %d at 0x%p - 0x%p (gp=0x%lx)\n", |
845 | me->arch.unwind_section, table, end, gp); | 845 | me->arch.unwind_section, table, end, gp); |