| /linux/arch/arc/kernel/ |
| H A D | kprobes.c | 31 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/loongarch/kernel/ |
| H A D | kprobes.c | 15 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 …]
|
| /linux/arch/arm64/kernel/probes/ |
| H A D | kprobes.c | 61 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/riscv/kernel/probes/ |
| H A D | kprobes.c | 30 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 D | kprobes.c | 58 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 D | ftrace.c | 68 p->ainsn.api.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux/arch/mips/kernel/ |
| H A D | kprobes.c | 107 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 D | kprobes.c | 55 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/parisc/include/asm/ |
| H A D | kprobes.h | 32 flush_icache_range((unsigned long)&(p)->ainsn.insn[0], \ 33 (unsigned long)&(p)->ainsn.insn[0] + \
|
| /linux/arch/sparc/include/asm/ |
| H A D | kprobes.h | 23 do { flushi(&(p)->ainsn.insn[0]); \ 24 flushi(&(p)->ainsn.insn[1]); \
|
| /linux/arch/powerpc/kernel/ |
| H A D | kprobes-ftrace.c | 72 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace() 73 p->ainsn.boostable = -1; in arch_prepare_kprobe_ftrace()
|
| /linux/arch/sh/kernel/ |
| H A D | kprobes.c | 47 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/arch/s390/kernel/ |
| H A D | ftrace.c | 333 p->ainsn.insn = NULL; in arch_prepare_kprobe_ftrace()
|
| /linux/include/linux/ |
| H A D | kprobes.h | 87 struct arch_specific_insn ainsn; member
|
| /linux/kernel/ |
| H A D | kprobes.c | 415 memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn)); in copy_kprobe()
|