Lines Matching refs:entry
173 static inline int entry_matches(struct ppc_plt_entry *entry, Elf32_Addr val) in entry_matches() argument
175 if (entry->jump[0] == 0x3d800000 + ((val + 0x8000) >> 16) in entry_matches()
176 && entry->jump[1] == 0x398c0000 + (val & 0xffff)) in entry_matches()
187 struct ppc_plt_entry *entry; in do_plt_call() local
193 entry = (void *)sechdrs[mod->arch.core_plt_section].sh_addr; in do_plt_call()
195 entry = (void *)sechdrs[mod->arch.init_plt_section].sh_addr; in do_plt_call()
198 while (entry->jump[0]) { in do_plt_call()
199 if (entry_matches(entry, val)) return (uint32_t)entry; in do_plt_call()
200 entry++; in do_plt_call()
203 entry->jump[0] = 0x3d800000+((val+0x8000)>>16); /* lis r12,sym@ha */ in do_plt_call()
204 entry->jump[1] = 0x398c0000 + (val&0xffff); /* addi r12,r12,sym@l*/ in do_plt_call()
205 entry->jump[2] = 0x7d8903a6; /* mtctr r12 */ in do_plt_call()
206 entry->jump[3] = 0x4e800420; /* bctr */ in do_plt_call()
208 pr_debug("Initialized plt for 0x%x at %p\n", val, entry); in do_plt_call()
209 return (uint32_t)entry; in do_plt_call()