Home
last modified time | relevance | path

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

/linux/arch/arc/kernel/
H A Dkprobes.c31 p->ainsn.is_short = is_short_instr((unsigned long)p->addr); in arch_prepare_kprobe()
58 if (p->ainsn.t1_addr) { in arch_remove_kprobe()
59 *(p->ainsn.t1_addr) = p->ainsn.t1_opcode; in arch_remove_kprobe()
61 flush_icache_range((unsigned long)p->ainsn.t1_addr, in arch_remove_kprobe()
62 (unsigned long)p->ainsn.t1_addr + in arch_remove_kprobe()
65 p->ainsn.t1_addr = NULL; in arch_remove_kprobe()
68 if (p->ainsn.t2_addr) { in arch_remove_kprobe()
69 *(p->ainsn.t2_addr) = p->ainsn.t2_opcode; in arch_remove_kprobe()
71 flush_icache_range((unsigned long)p->ainsn.t2_addr, in arch_remove_kprobe()
72 (unsigned long)p->ainsn.t2_addr + in arch_remove_kprobe()
[all …]
/linux/arch/x86/kernel/kprobes/
H A Dcore.c467 synthesize_reljump(buf + len, p->ainsn.insn + len, in prepare_singlestep()
470 p->ainsn.boostable = 1; in prepare_singlestep()
487 switch (p->ainsn.opcode) { in kprobe_emulate_ifmodifiers()
501 regs->ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_ifmodifiers()
513 unsigned long func = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_call()
515 func += p->ainsn.rel32; in kprobe_emulate_call()
522 unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_jmp()
524 ip += p->ainsn.rel32; in kprobe_emulate_jmp()
531 unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_jcc()
533 int3_emulate_jcc(regs, p->ainsn.jcc.type, ip, p->ainsn.rel32); in kprobe_emulate_jcc()
[all …]
H A Dftrace.c73 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
74 p->ainsn.boostable = false; in arch_prepare_kprobe_ftrace()
/linux/arch/powerpc/kernel/
H A Dkprobes.c151 ppc_inst_prefixed(ppc_inst_read(prev->ainsn.insn))) { in arch_prepare_kprobe()
159 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
160 if (!p->ainsn.insn) in arch_prepare_kprobe()
165 patch_instruction(p->ainsn.insn, insn); in arch_prepare_kprobe()
169 p->ainsn.boostable = 0; in arch_prepare_kprobe()
188 if (p->ainsn.insn) { in arch_remove_kprobe()
189 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
190 p->ainsn.insn = NULL; in arch_remove_kprobe()
205 regs_set_return_ip(regs, (unsigned long)p->ainsn.insn); in prepare_singlestep()
232 ppc_inst_t insn = ppc_inst_read(p->ainsn.insn); in try_to_emulate()
[all …]
H A Dkprobes-ftrace.c72 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
73 p->ainsn.boostable = -1; in arch_prepare_kprobe_ftrace()
H A Doptprobes.c87 if (!is_conditional_branch(ppc_inst_read(p->ainsn.insn)) && in can_optimize()
88 analyse_instr(&op, &regs, ppc_inst_read(p->ainsn.insn)) == 1) { in can_optimize()
231 temp = ppc_inst_read(p->ainsn.insn); in arch_prepare_optimized_kprobe()
/linux/arch/loongarch/kernel/
H A Dkprobes.c15 p->ainsn.insn[0] = *p->addr; in arch_prepare_ss_slot()
16 p->ainsn.insn[1] = KPROBE_SSTEPBP_INSN; in arch_prepare_ss_slot()
17 p->ainsn.restore = (unsigned long)p->addr + LOONGARCH_INSN_SIZE; in arch_prepare_ss_slot()
23 p->ainsn.restore = 0; in arch_prepare_simulate()
43 p->ainsn.insn = NULL; in arch_prepare_kprobe()
45 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
46 if (!p->ainsn.insn) in arch_prepare_kprobe()
51 if (p->ainsn.insn) in arch_prepare_kprobe()
78 if (p->ainsn.insn) { in arch_remove_kprobe()
79 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
[all …]
H A Dftrace_dyn.c348 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
/linux/arch/arm64/kernel/probes/
H A Dkprobes.c61 kprobe_opcode_t *addr = p->ainsn.xol_insn; in arch_prepare_ss_slot()
88 p->ainsn.xol_restore = (unsigned long) p->addr + in arch_prepare_ss_slot()
95 p->ainsn.xol_restore = 0; in arch_prepare_simulate()
102 if (p->ainsn.api.handler) in arch_simulate_insn()
103 p->ainsn.api.handler(le32_to_cpu(p->opcode), (long)p->addr, regs); in arch_simulate_insn()
123 switch (arm_kprobe_decode_insn(p->addr, &p->ainsn)) { in arch_prepare_kprobe()
128 p->ainsn.xol_insn = NULL; in arch_prepare_kprobe()
132 p->ainsn.xol_insn = get_insn_slot(); in arch_prepare_kprobe()
133 if (!p->ainsn.xol_insn) in arch_prepare_kprobe()
139 if (p->ainsn.xol_insn) in arch_prepare_kprobe()
[all …]
/linux/arch/arm/probes/kprobes/
H A Dcore.c85 p->ainsn.insn = tmp_insn; in arch_prepare_kprobe()
87 switch ((*decode_insn)(insn, &p->ainsn, true, actions, checkers)) { in arch_prepare_kprobe()
92 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
93 if (!p->ainsn.insn) in arch_prepare_kprobe()
96 p->ainsn.insn[is] = tmp_insn[is]; in arch_prepare_kprobe()
97 flush_insns(p->ainsn.insn, in arch_prepare_kprobe()
98 sizeof(p->ainsn.insn[0]) * MAX_INSN_SIZE); in arch_prepare_kprobe()
99 p->ainsn.insn_fn = (probes_insn_fn_t *) in arch_prepare_kprobe()
100 ((uintptr_t)p->ainsn.insn | thumb); in arch_prepare_kprobe()
104 p->ainsn.insn = NULL; in arch_prepare_kprobe()
[all …]
H A Dopt-arm.c127 if (kp->ainsn.stack_space < 0) in can_optimize()
133 if (kp->ainsn.stack_space > 255 - sizeof(struct pt_regs)) in can_optimize()
175 if (!p->ainsn.kprobe_direct_exec) in optimized_callback()
176 op->kp.ainsn.insn_singlestep(p->opcode, &p->ainsn, regs); in optimized_callback()
239 BUG_ON(orig->ainsn.stack_space < 0); in NOKPROBE_SYMBOL()
241 stack_protect += orig->ainsn.stack_space; in NOKPROBE_SYMBOL()
260 orig->ainsn.kprobe_direct_exec = false; in NOKPROBE_SYMBOL()
261 if (can_kprobe_direct_exec(orig->ainsn.register_usage_flags)) { in NOKPROBE_SYMBOL()
277 orig->ainsn.kprobe_direct_exec = true; in NOKPROBE_SYMBOL()
/linux/arch/riscv/kernel/probes/
H A Dkprobes.c30 p->ainsn.api.restore = (unsigned long)p->addr + len; in arch_prepare_ss_slot()
32 patch_text_nosync(p->ainsn.api.insn, &p->opcode, len); in arch_prepare_ss_slot()
33 patch_text_nosync((void *)p->ainsn.api.insn + len, &insn, GET_INSN_LENGTH(insn)); in arch_prepare_ss_slot()
38 p->ainsn.api.restore = 0; in arch_prepare_simulate()
45 if (p->ainsn.api.handler) in arch_simulate_insn()
46 p->ainsn.api.handler((u32)p->opcode, in arch_simulate_insn()
88 switch (riscv_probe_decode_insn(p->addr, &p->ainsn.api)) { in arch_prepare_kprobe()
93 p->ainsn.api.insn = NULL; in arch_prepare_kprobe()
97 p->ainsn.api.insn = get_insn_slot(); in arch_prepare_kprobe()
98 if (!p->ainsn.api.insn) in arch_prepare_kprobe()
[all …]
/linux/arch/csky/kernel/probes/
H A Dkprobes.c58 p->ainsn.api.restore = (unsigned long)p->addr + offset; in arch_prepare_ss_slot()
60 patch_text(p->ainsn.api.insn, p->opcode); in arch_prepare_ss_slot()
65 p->ainsn.api.restore = 0; in arch_prepare_simulate()
72 if (p->ainsn.api.handler) in arch_simulate_insn()
73 p->ainsn.api.handler((u32)p->opcode, (long)p->addr, regs); in arch_simulate_insn()
89 switch (csky_probe_decode_insn(p->addr, &p->ainsn.api)) { in arch_prepare_kprobe()
94 p->ainsn.api.insn = NULL; in arch_prepare_kprobe()
98 p->ainsn.api.insn = get_insn_slot(); in arch_prepare_kprobe()
99 if (!p->ainsn.api.insn) in arch_prepare_kprobe()
105 if (p->ainsn.api.insn) in arch_prepare_kprobe()
[all …]
H A Dftrace.c68 p->ainsn.api.insn = NULL; in arch_prepare_kprobe_ftrace()
/linux/arch/parisc/kernel/
H A Dkprobes.c25 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
26 if (!p->ainsn.insn) in arch_prepare_kprobe()
34 p->ainsn.insn[0] = p->opcode; in arch_prepare_kprobe()
35 p->ainsn.insn[1] = PARISC_KPROBES_BREAK_INSN2; in arch_prepare_kprobe()
43 if (!p->ainsn.insn) in arch_remove_kprobe()
46 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
47 p->ainsn.insn = NULL; in arch_remove_kprobe()
82 instruction_pointer_set(regs, (unsigned long)p->ainsn.insn); in setup_singlestep()
143 if (regs->iaoq[0] != (unsigned long)p->ainsn.insn+4) in parisc_kprobe_ss_handler()
H A Dftrace.c251 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
/linux/arch/s390/kernel/
H A Dkprobes.c67 new_addr = (u64)(unsigned long)p->ainsn.insn; in copy_instruction()
71 s390_kernel_write(p->ainsn.insn, &insn, len); in copy_instruction()
128 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
129 if (!p->ainsn.insn) in arch_prepare_kprobe()
181 if (!p->ainsn.insn) in arch_remove_kprobe()
183 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
184 p->ainsn.insn = NULL; in arch_remove_kprobe()
324 enable_singlestep(kcb, regs, (unsigned long) p->ainsn.insn); in kprobe_handler()
349 int fixup = probe_get_fixup_type(p->ainsn.insn); in resume_execution()
352 ip += (unsigned long) p->addr - (unsigned long) p->ainsn.insn; in resume_execution()
[all …]
H A Dftrace.c333 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
/linux/arch/mips/kernel/
H A Dkprobes.c107 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
108 if (!p->ainsn.insn) { in arch_prepare_kprobe()
127 memcpy(&p->ainsn.insn[0], p->addr + 1, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
129 memcpy(&p->ainsn.insn[0], p->addr, sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
131 p->ainsn.insn[1] = breakpoint2_insn; in arch_prepare_kprobe()
155 if (p->ainsn.insn) { in arch_remove_kprobe()
156 free_insn_slot(p->ainsn.insn, 0); in arch_remove_kprobe()
157 p->ainsn.insn = NULL; in arch_remove_kprobe()
212 if (p->ainsn.insn->word == 0) in evaluate_branch_instruction()
251 regs->cp0_epc = (unsigned long)&p->ainsn.insn[0]; in prepare_singlestep()
[all …]
/linux/arch/sparc/kernel/
H A Dkprobes.c55 p->ainsn.insn[0] = *p->addr; in arch_prepare_kprobe()
56 flushi(&p->ainsn.insn[0]); in arch_prepare_kprobe()
58 p->ainsn.insn[1] = BREAKPOINT_INSTRUCTION_2; in arch_prepare_kprobe()
59 flushi(&p->ainsn.insn[1]); in arch_prepare_kprobe()
111 regs->tpc = (unsigned long) &p->ainsn.insn[0]; in prepare_singlestep()
112 regs->tnpc = (unsigned long) &p->ainsn.insn[1]; in prepare_singlestep()
218 ainsn_addr = (unsigned long) &p->ainsn.insn[0]; in relbranch_fixup()
280 u32 insn = p->ainsn.insn[0]; in resume_execution()
/linux/arch/sparc/include/asm/
H A Dkprobes.h23 do { flushi(&(p)->ainsn.insn[0]); \
24 flushi(&(p)->ainsn.insn[1]); \
/linux/arch/parisc/include/asm/
H A Dkprobes.h32 flush_icache_range((unsigned long)&(p)->ainsn.insn[0], \
33 (unsigned long)&(p)->ainsn.insn[0] + \
/linux/arch/sh/kernel/
H A Dkprobes.c47 memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); in arch_prepare_kprobe()
229 *p->ainsn.insn == BREAKPOINT_INSTRUCTION) { in kprobe_handler()
/linux/include/linux/
H A Dkprobes.h87 struct arch_specific_insn ainsn; member
/linux/kernel/
H A Dkprobes.c415 memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn)); in copy_kprobe()