/openbmc/linux/arch/powerpc/kernel/trace/ |
H A D | ftrace_64_pg.c | 123 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 D | ftrace.c | 120 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 D | static_call.c | 7 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 D | signal_64.c | 61 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 D | static_call.c | 114 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 D | signal.c | 131 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 D | signal.c | 45 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 D | signal.c | 263 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 D | static_call.h | 144 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 D | module-sections.c | 108 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 D | signal.c | 334 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 D | signal.c | 168 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 D | signal.c | 90 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 D | signal.c | 48 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 D | signal.c | 59 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 D | signal.c | 207 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 D | module-plts.c | 287 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 D | ftrace.c | 116 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 D | signal.c | 625 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 D | static_call_inline.c | 134 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 D | signal.c | 425 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 D | signal.c | 48 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 D | static_call.h | 66 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 D | signal.c | 319 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 D | signal.c | 394 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()
|