|
@@ -39,8 +39,6 @@ struct mips_hi16 {
|
|
|
Elf_Addr value;
|
|
|
};
|
|
|
|
|
|
-static struct mips_hi16 *mips_hi16_list;
|
|
|
-
|
|
|
static LIST_HEAD(dbe_list);
|
|
|
static DEFINE_SPINLOCK(dbe_lock);
|
|
|
|
|
@@ -128,8 +126,8 @@ static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|
|
|
|
|
n->addr = (Elf_Addr *)location;
|
|
|
n->value = v;
|
|
|
- n->next = mips_hi16_list;
|
|
|
- mips_hi16_list = n;
|
|
|
+ n->next = me->arch.r_mips_hi16_list;
|
|
|
+ me->arch.r_mips_hi16_list = n;
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -151,9 +149,9 @@ static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|
|
/* Sign extend the addend we extract from the lo insn. */
|
|
|
vallo = ((insnlo & 0xffff) ^ 0x8000) - 0x8000;
|
|
|
|
|
|
- if (mips_hi16_list != NULL) {
|
|
|
+ if (me->arch.r_mips_hi16_list != NULL) {
|
|
|
|
|
|
- l = mips_hi16_list;
|
|
|
+ l = me->arch.r_mips_hi16_list;
|
|
|
while (l != NULL) {
|
|
|
unsigned long insn;
|
|
|
|
|
@@ -187,7 +185,7 @@ static int apply_r_mips_lo16_rel(struct module *me, u32 *location, Elf_Addr v)
|
|
|
l = next;
|
|
|
}
|
|
|
|
|
|
- mips_hi16_list = NULL;
|
|
|
+ me->arch.r_mips_hi16_list = NULL;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -278,6 +276,7 @@ int apply_relocate(Elf_Shdr *sechdrs, const char *strtab,
|
|
|
pr_debug("Applying relocate section %u to %u\n", relsec,
|
|
|
sechdrs[relsec].sh_info);
|
|
|
|
|
|
+ me->arch.r_mips_hi16_list = NULL;
|
|
|
for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) {
|
|
|
/* This is where to make the change */
|
|
|
location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
|