Home
last modified time | relevance | path

Searched refs:tramp (Results 1 – 25 of 44) sorted by relevance

12

/openbmc/linux/arch/powerpc/kernel/trace/
H A Dftrace_64_pg.c123 unsigned long entry, ptr, tramp; in __ftrace_make_nop() local
140 tramp = find_bl_target(ip, op); in __ftrace_make_nop()
142 pr_devel("ip:%lx jumps to %lx", ip, tramp); in __ftrace_make_nop()
144 if (module_trampoline_target(mod, tramp, &ptr)) { in __ftrace_make_nop()
239 static int add_ftrace_tramp(unsigned long tramp) in add_ftrace_tramp() argument
245 ftrace_tramps[i] = tramp; in add_ftrace_tramp()
258 static int setup_mcount_compiler_tramp(unsigned long tramp) in setup_mcount_compiler_tramp() argument
266 if (ftrace_tramps[i] == tramp) in setup_mcount_compiler_tramp()
270 if (copy_inst_from_kernel_nofault(&op, (void *)tramp)) { in setup_mcount_compiler_tramp()
282 ptr = find_bl_target(tramp, op); in setup_mcount_compiler_tramp()
[all …]
H A Dftrace.c120 stub = (addr == (unsigned long)ftrace_caller ? rec->arch.mod->arch.tramp : in ftrace_get_call_inst()
340 static void __init add_ftrace_tramp(unsigned long tramp) in add_ftrace_tramp() argument
346 ftrace_tramps[i] = tramp; in add_ftrace_tramp()
353 unsigned int *tramp[] = { ftrace_tramp_text, ftrace_tramp_init }; in ftrace_dyn_arch_init() local
380 reladdr = addr - (unsigned long)tramp[i]; in ftrace_dyn_arch_init()
388 memcpy(tramp[i], stub_insns, sizeof(stub_insns)); in ftrace_dyn_arch_init()
389 tramp[i][0] |= IMM_H18(reladdr); in ftrace_dyn_arch_init()
390 tramp[i][1] |= IMM_L(reladdr); in ftrace_dyn_arch_init()
391 add_ftrace_tramp((unsigned long)tramp[i]); in ftrace_dyn_arch_init()
403 memcpy(tramp[i], stub_insns, sizeof(stub_insns)); in ftrace_dyn_arch_init()
[all …]
/openbmc/linux/arch/powerpc/kernel/
H A Dstatic_call.c7 void arch_static_call_transform(void *site, void *tramp, void *func, bool tail) in arch_static_call_transform() argument
11 unsigned long target = (unsigned long)(is_ret0 ? tramp + PPC_SCT_RET0 : func); in arch_static_call_transform()
12 bool is_short = is_offset_in_branch_range((long)target - (long)tramp); in arch_static_call_transform()
14 if (!tramp) in arch_static_call_transform()
20 err = patch_instruction(tramp + PPC_SCT_DATA, ppc_inst(target)); in arch_static_call_transform()
26 err = patch_instruction(tramp, ppc_inst(PPC_RAW_BLR())); in arch_static_call_transform()
28 err = patch_branch(tramp, target, 0); in arch_static_call_transform()
30 err = patch_instruction(tramp, ppc_inst(PPC_RAW_NOP())); in arch_static_call_transform()
35 panic("%s: patching failed %pS at %pS\n", __func__, func, tramp); in arch_static_call_transform()
H A Dsignal_64.c61 unsigned int tramp[TRAMP_SIZE]; member
624 static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) in setup_trampoline() argument
630 err |= __put_user(PPC_RAW_BCTRL(), &tramp[0]); in setup_trampoline()
631 err |= __put_user(PPC_RAW_ADDI(_R1, _R1, __SIGNAL_FRAMESIZE), &tramp[1]); in setup_trampoline()
633 err |= __put_user(PPC_RAW_LI(_R0, syscall), &tramp[2]); in setup_trampoline()
634 err |= __put_user(PPC_RAW_SC(), &tramp[3]); in setup_trampoline()
638 err |= __put_user(0, &tramp[i]); in setup_trampoline()
641 flush_icache_range((unsigned long) &tramp[0], in setup_trampoline()
642 (unsigned long) &tramp[TRAMP_SIZE]); in setup_trampoline()
927 err |= setup_trampoline(__NR_rt_sigreturn, &frame->tramp[0]); in handle_rt_signal64()
[all …]
/openbmc/linux/arch/x86/kernel/
H A Dstatic_call.c114 static void __static_call_validate(u8 *insn, bool tail, bool tramp) in __static_call_validate() argument
118 if (tramp && memcmp(insn+5, tramp_ud, 3)) { in __static_call_validate()
157 void arch_static_call_transform(void *site, void *tramp, void *func, bool tail) in arch_static_call_transform() argument
161 if (tramp) { in arch_static_call_transform()
162 __static_call_validate(tramp, true, true); in arch_static_call_transform()
163 __static_call_transform(tramp, __sc_insn(!func, true), func, false); in arch_static_call_transform()
175 noinstr void __static_call_update_early(void *tramp, void *func) in __static_call_update_early() argument
179 __text_gen_insn(tramp, JMP32_INSN_OPCODE, tramp, func, JMP32_INSN_SIZE); in __static_call_update_early()
195 bool __static_call_fixup(void *tramp, u8 op, void *dest) in __static_call_fixup() argument
197 unsigned long addr = (unsigned long)tramp; in __static_call_fixup()
[all …]
/openbmc/qemu/linux-user/xtensa/
H A Dsignal.c131 static void install_sigtramp(uint8_t *tramp) in install_sigtramp() argument
135 __put_user(0x22, &tramp[0]); in install_sigtramp()
136 __put_user(0x0a, &tramp[1]); in install_sigtramp()
137 __put_user(TARGET_NR_rt_sigreturn, &tramp[2]); in install_sigtramp()
139 __put_user(0x00, &tramp[3]); in install_sigtramp()
140 __put_user(0x05, &tramp[4]); in install_sigtramp()
141 __put_user(0x00, &tramp[5]); in install_sigtramp()
144 __put_user(0x22, &tramp[0]); in install_sigtramp()
145 __put_user(0xa0, &tramp[1]); in install_sigtramp()
146 __put_user(TARGET_NR_rt_sigreturn, &tramp[2]); in install_sigtramp()
[all …]
/openbmc/qemu/linux-user/hppa/
H A Dsignal.c45 abi_uint tramp[2]; /* syscall restart return address */ member
202 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 6*4, 0); in setup_sigtramp() local
204 assert(tramp != NULL); in setup_sigtramp()
209 __put_user(SIGFRAME_CONTEXT_REGS32, tramp + 0); in setup_sigtramp()
210 __put_user(0x08000240, tramp + 1); /* nop - b/c dwarf2 unwind routines */ in setup_sigtramp()
211 __put_user(0x34190000, tramp + 2); /* ldi 0, %r25 (in_syscall=0) */ in setup_sigtramp()
212 __put_user(0x3414015a, tramp + 3); /* ldi __NR_rt_sigreturn, %r20 */ in setup_sigtramp()
213 __put_user(0xe4008200, tramp + 4); /* ble 0x100(%sr2, %r0) */ in setup_sigtramp()
214 __put_user(0x08000240, tramp + 5); /* nop */ in setup_sigtramp()
217 unlock_user(tramp, sigtramp_page, 6*4); in setup_sigtramp()
/openbmc/qemu/linux-user/alpha/
H A Dsignal.c263 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 6 * 4, 0); in setup_sigtramp() local
264 assert(tramp != NULL); in setup_sigtramp()
267 __put_user(INSN_MOV_R30_R16, &tramp[0]); in setup_sigtramp()
268 __put_user(INSN_LDI_R0 + TARGET_NR_sigreturn, &tramp[1]); in setup_sigtramp()
269 __put_user(INSN_CALLSYS, &tramp[2]); in setup_sigtramp()
272 __put_user(INSN_MOV_R30_R16, &tramp[3]); in setup_sigtramp()
273 __put_user(INSN_LDI_R0 + TARGET_NR_rt_sigreturn, &tramp[4]); in setup_sigtramp()
274 __put_user(INSN_CALLSYS, &tramp[5]); in setup_sigtramp()
276 unlock_user(tramp, sigtramp_page, 6 * 4); in setup_sigtramp()
/openbmc/linux/include/linux/
H A Dstatic_call.h144 extern void arch_static_call_transform(void *site, void *tramp, void *func, bool tail);
177 s32 tramp; member
181 extern void __static_call_update(struct static_call_key *key, void *tramp, void *func);
258 void __static_call_update(struct static_call_key *key, void *tramp, void *func) in __static_call_update() argument
262 arch_static_call_transform(NULL, tramp, func, false); in __static_call_update()
337 void __static_call_update(struct static_call_key *key, void *tramp, void *func) in __static_call_update() argument
/openbmc/linux/arch/loongarch/kernel/
H A Dmodule-sections.c108 Elf_Shdr *got_sec, *plt_sec, *plt_idx_sec, *tramp = NULL; in module_frob_arch_sections() local
121 tramp = sechdrs + i; in module_frob_arch_sections()
177 if (tramp) { in module_frob_arch_sections()
178 tramp->sh_type = SHT_NOBITS; in module_frob_arch_sections()
179 tramp->sh_flags = SHF_EXECINSTR | SHF_ALLOC; in module_frob_arch_sections()
180 tramp->sh_addralign = __alignof__(struct plt_entry); in module_frob_arch_sections()
181 tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry); in module_frob_arch_sections()
/openbmc/qemu/linux-user/sh4/
H A Dsignal.c334 uint16_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 6, 0); in setup_sigtramp() local
335 assert(tramp != NULL); in setup_sigtramp()
338 __put_user(MOVW(2), &tramp[0]); in setup_sigtramp()
339 __put_user(TRAP_NOARG, &tramp[1]); in setup_sigtramp()
340 __put_user(TARGET_NR_sigreturn, &tramp[2]); in setup_sigtramp()
343 __put_user(MOVW(2), &tramp[3]); in setup_sigtramp()
344 __put_user(TRAP_NOARG, &tramp[4]); in setup_sigtramp()
345 __put_user(TARGET_NR_rt_sigreturn, &tramp[5]); in setup_sigtramp()
347 unlock_user(tramp, sigtramp_page, 2 * 6); in setup_sigtramp()
/openbmc/qemu/linux-user/openrisc/
H A Dsignal.c168 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 8, 0); in setup_sigtramp() local
169 assert(tramp != NULL); in setup_sigtramp()
172 __put_user(0xa9600000 | TARGET_NR_rt_sigreturn, tramp + 0); in setup_sigtramp()
173 __put_user(0x20000001, tramp + 1); in setup_sigtramp()
176 unlock_user(tramp, sigtramp_page, 8); in setup_sigtramp()
/openbmc/qemu/linux-user/mips/
H A Dsignal.c90 static void install_sigtramp(uint32_t *tramp, unsigned int syscall) in install_sigtramp() argument
99 __put_user(0x24020000 + syscall, tramp + 0); in install_sigtramp()
100 __put_user(0x0000000c , tramp + 1); in install_sigtramp()
383 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0); in setup_sigtramp() local
384 assert(tramp != NULL); in setup_sigtramp()
388 install_sigtramp(tramp, TARGET_NR_sigreturn); in setup_sigtramp()
392 install_sigtramp(tramp + 2, TARGET_NR_rt_sigreturn); in setup_sigtramp()
394 unlock_user(tramp, sigtramp_page, 2 * 8); in setup_sigtramp()
/openbmc/linux/arch/microblaze/kernel/
H A Dsignal.c48 unsigned long tramp[2]; /* signal trampoline */ member
54 unsigned long tramp[2]; /* signal trampoline */ member
184 frame->tramp + 0); in setup_rt_frame()
186 err |= __put_user(0xb9cc0008, frame->tramp + 1); in setup_rt_frame()
190 regs->r15 = ((unsigned long)frame->tramp)-8; in setup_rt_frame()
192 address = ((unsigned long)frame->tramp); in setup_rt_frame()
200 address += ((unsigned long)frame->tramp) & ~PAGE_MASK; in setup_rt_frame()
/openbmc/qemu/linux-user/hexagon/
H A Dsignal.c59 uint32_t tramp[2]; member
144 static inline void install_sigtramp(uint32_t *tramp) in install_sigtramp() argument
146 __put_user(0x7800d166, tramp + 0); /* { r6=#__NR_rt_sigreturn } */ in install_sigtramp()
147 __put_user(0x5400c004, tramp + 1); /* { trap0(#1) } */ in install_sigtramp()
171 install_sigtramp(frame->tramp); in setup_rt_frame()
286 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 4 * 2, 0); in setup_sigtramp() local
287 assert(tramp != NULL); in setup_sigtramp()
290 install_sigtramp(tramp); in setup_sigtramp()
292 unlock_user(tramp, sigtramp_page, 4 * 2); in setup_sigtramp()
/openbmc/qemu/linux-user/riscv/
H A Dsignal.c207 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 8, 0); in setup_sigtramp() local
208 assert(tramp != NULL); in setup_sigtramp()
210 __put_user(0x08b00893, tramp + 0); /* li a7, 139 = __NR_rt_sigreturn */ in setup_sigtramp()
211 __put_user(0x00000073, tramp + 1); /* ecall */ in setup_sigtramp()
214 unlock_user(tramp, sigtramp_page, 8); in setup_sigtramp()
/openbmc/linux/arch/arm64/kernel/
H A Dmodule-plts.c287 Elf_Shdr *pltsec, *tramp = NULL; in module_frob_arch_sections() local
301 tramp = sechdrs + i; in module_frob_arch_sections()
360 if (tramp) { in module_frob_arch_sections()
361 tramp->sh_type = SHT_NOBITS; in module_frob_arch_sections()
362 tramp->sh_flags = SHF_EXECINSTR | SHF_ALLOC; in module_frob_arch_sections()
363 tramp->sh_addralign = __alignof__(struct plt_entry); in module_frob_arch_sections()
364 tramp->sh_size = NR_FTRACE_PLTS * sizeof(struct plt_entry); in module_frob_arch_sections()
/openbmc/linux/arch/parisc/kernel/
H A Dftrace.c116 u32 *tramp; in ftrace_make_call() local
160 tramp = ftrace_trampoline; in ftrace_make_call()
165 tramp = ftrace_trampoline_unaligned; in ftrace_make_call()
180 __patch_text_multiple(ip, tramp, size); in ftrace_make_call()
/openbmc/qemu/linux-user/arm/
H A Dsignal.c625 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, total_size, 0); in setup_sigtramp() local
627 assert(tramp != NULL); in setup_sigtramp()
630 write_arm_sigreturn(&tramp[0 * RETCODE_WORDS], TARGET_NR_sigreturn); in setup_sigtramp()
631 write_thm_sigreturn(&tramp[1 * RETCODE_WORDS], TARGET_NR_sigreturn); in setup_sigtramp()
632 write_arm_sigreturn(&tramp[2 * RETCODE_WORDS], TARGET_NR_rt_sigreturn); in setup_sigtramp()
633 write_thm_sigreturn(&tramp[3 * RETCODE_WORDS], TARGET_NR_rt_sigreturn); in setup_sigtramp()
636 write_arm_fdpic_sigreturn(tramp + 4 * RETCODE_WORDS, in setup_sigtramp()
638 write_thm_fdpic_sigreturn(tramp + 5 * RETCODE_WORDS, in setup_sigtramp()
640 write_arm_fdpic_sigreturn(tramp + 6 * RETCODE_WORDS, in setup_sigtramp()
642 write_thm_fdpic_sigreturn(tramp + 7 * RETCODE_WORDS, in setup_sigtramp()
[all …]
/openbmc/linux/kernel/
H A Dstatic_call_inline.c134 void __static_call_update(struct static_call_key *key, void *tramp, void *func) in __static_call_update() argument
147 arch_static_call_transform(NULL, tramp, func, false); in __static_call_update()
354 unsigned long tramp; in tramp_key_lookup() local
356 tramp = (long)tramp_key->tramp + (long)&tramp_key->tramp; in tramp_key_lookup()
357 if (tramp == addr) in tramp_key_lookup()
/openbmc/qemu/linux-user/i386/
H A Dsignal.c425 static void install_sigtramp(void *tramp) in install_sigtramp() argument
428 __put_user(0xb858, (uint16_t *)(tramp + 0)); in install_sigtramp()
429 __put_user(TARGET_NR_sigreturn, (int32_t *)(tramp + 2)); in install_sigtramp()
430 __put_user(0x80cd, (uint16_t *)(tramp + 6)); in install_sigtramp()
433 static void install_rt_sigtramp(void *tramp) in install_rt_sigtramp() argument
436 __put_user(0xb8, (uint8_t *)(tramp + 0)); in install_rt_sigtramp()
437 __put_user(TARGET_NR_rt_sigreturn, (int32_t *)(tramp + 1)); in install_rt_sigtramp()
438 __put_user(0x80cd, (uint16_t *)(tramp + 5)); in install_rt_sigtramp()
856 uint16_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0); in setup_sigtramp() local
857 assert(tramp != NULL); in setup_sigtramp()
[all …]
/openbmc/qemu/linux-user/microblaze/
H A Dsignal.c48 uint32_t tramp[2]; member
220 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 8, 0); in setup_sigtramp() local
221 assert(tramp != NULL); in setup_sigtramp()
227 __put_user(0x31800000U | TARGET_NR_rt_sigreturn, tramp); in setup_sigtramp()
228 __put_user(0xb9cc0008U, tramp + 1); in setup_sigtramp()
231 unlock_user(tramp, sigtramp_page, 8); in setup_sigtramp()
/openbmc/linux/arch/x86/include/asm/
H A Dstatic_call.h66 extern bool __static_call_fixup(void *tramp, u8 op, void *dest);
68 extern void __static_call_update_early(void *tramp, void *func);
/openbmc/qemu/linux-user/ppc/
H A Dsignal.c319 static void encode_trampoline(int sigret, uint32_t *tramp) in encode_trampoline() argument
322 __put_user(0x38000000 | sigret, &tramp[0]); in encode_trampoline()
323 __put_user(0x44000002, &tramp[1]); in encode_trampoline()
720 uint32_t *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 2 * 8, 0); in setup_sigtramp() local
721 assert(tramp != NULL); in setup_sigtramp()
725 encode_trampoline(TARGET_NR_sigreturn, tramp + 0); in setup_sigtramp()
729 encode_trampoline(TARGET_NR_rt_sigreturn, tramp + 2); in setup_sigtramp()
731 unlock_user(tramp, sigtramp_page, 2 * 8); in setup_sigtramp()
/openbmc/qemu/linux-user/m68k/
H A Dsignal.c394 void *tramp = lock_user(VERIFY_WRITE, sigtramp_page, 4 + 6, 0); in setup_sigtramp() local
395 assert(tramp != NULL); in setup_sigtramp()
400 __put_user(0x70004e40 + (TARGET_NR_sigreturn << 16), (uint32_t *)tramp); in setup_sigtramp()
406 (uint32_t *)(tramp + 4)); in setup_sigtramp()
407 __put_user(0x4e40, (uint16_t *)(tramp + 8)); in setup_sigtramp()
409 unlock_user(tramp, sigtramp_page, 4 + 6); in setup_sigtramp()

12