Lines Matching refs:ainsn

430 		synthesize_reljump(buf + len, p->ainsn.insn + len,  in prepare_singlestep()
433 p->ainsn.boostable = 1; in prepare_singlestep()
468 switch (p->ainsn.opcode) { in kprobe_emulate_ifmodifiers()
482 regs->ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_ifmodifiers()
494 unsigned long func = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_call()
496 func += p->ainsn.rel32; in kprobe_emulate_call()
503 unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_jmp()
505 ip += p->ainsn.rel32; in kprobe_emulate_jmp()
512 unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_jcc()
514 int3_emulate_jcc(regs, p->ainsn.jcc.type, ip, p->ainsn.rel32); in kprobe_emulate_jcc()
520 unsigned long ip = regs->ip - INT3_INSN_SIZE + p->ainsn.size; in kprobe_emulate_loop()
523 if (p->ainsn.loop.type != 3) { /* LOOP* */ in kprobe_emulate_loop()
524 if (p->ainsn.loop.asize == 32) in kprobe_emulate_loop()
527 else if (p->ainsn.loop.asize == 64) in kprobe_emulate_loop()
533 if (p->ainsn.loop.asize == 32) in kprobe_emulate_loop()
536 else if (p->ainsn.loop.asize == 64) in kprobe_emulate_loop()
543 if (p->ainsn.loop.type == 0) /* LOOPNE */ in kprobe_emulate_loop()
545 else if (p->ainsn.loop.type == 1) /* LOOPE */ in kprobe_emulate_loop()
549 ip += p->ainsn.rel32; in kprobe_emulate_loop()
577 unsigned long offs = addrmode_regoffs[p->ainsn.indirect.reg]; in kprobe_emulate_call_indirect()
585 unsigned long offs = addrmode_regoffs[p->ainsn.indirect.reg]; in kprobe_emulate_jmp_indirect()
604 p->ainsn.emulate_op = kprobe_emulate_ifmodifiers; in prepare_emulation()
605 p->ainsn.opcode = opcode; in prepare_emulation()
611 p->ainsn.emulate_op = kprobe_emulate_ret; in prepare_emulation()
620 p->ainsn.emulate_op = kprobe_emulate_call; in prepare_emulation()
622 p->ainsn.rel32 = *(s16 *)&insn->immediate.value; in prepare_emulation()
624 p->ainsn.rel32 = *(s32 *)&insn->immediate.value; in prepare_emulation()
628 p->ainsn.emulate_op = kprobe_emulate_jmp; in prepare_emulation()
630 p->ainsn.rel32 = *(s8 *)&insn->immediate.value; in prepare_emulation()
632 p->ainsn.rel32 = *(s16 *)&insn->immediate.value; in prepare_emulation()
634 p->ainsn.rel32 = *(s32 *)&insn->immediate.value; in prepare_emulation()
638 p->ainsn.emulate_op = kprobe_emulate_jcc; in prepare_emulation()
639 p->ainsn.jcc.type = opcode & 0xf; in prepare_emulation()
640 p->ainsn.rel32 = insn->immediate.value; in prepare_emulation()
646 p->ainsn.emulate_op = kprobe_emulate_jcc; in prepare_emulation()
647 p->ainsn.jcc.type = opcode & 0xf; in prepare_emulation()
649 p->ainsn.rel32 = *(s16 *)&insn->immediate.value; in prepare_emulation()
651 p->ainsn.rel32 = *(s32 *)&insn->immediate.value; in prepare_emulation()
663 p->ainsn.emulate_op = kprobe_emulate_loop; in prepare_emulation()
664 p->ainsn.loop.type = opcode & 0x3; in prepare_emulation()
665 p->ainsn.loop.asize = insn->addr_bytes * 8; in prepare_emulation()
666 p->ainsn.rel32 = *(s8 *)&insn->immediate.value; in prepare_emulation()
676 p->ainsn.emulate_op = kprobe_emulate_call_indirect; in prepare_emulation()
679 p->ainsn.emulate_op = kprobe_emulate_jmp_indirect; in prepare_emulation()
686 if (!p->ainsn.emulate_op) in prepare_emulation()
694 p->ainsn.indirect.reg = X86_MODRM_RM(opcode); in prepare_emulation()
697 p->ainsn.indirect.reg += 8; in prepare_emulation()
703 p->ainsn.size = insn->length; in prepare_emulation()
715 len = __copy_instruction(buf, p->addr, p->ainsn.insn, &insn); in arch_copy_kprobe()
732 p->ainsn.tp_len = len; in arch_copy_kprobe()
733 perf_event_text_poke(p->ainsn.insn, NULL, 0, buf, len); in arch_copy_kprobe()
736 text_poke(p->ainsn.insn, buf, len); in arch_copy_kprobe()
751 memset(&p->ainsn, 0, sizeof(p->ainsn)); in arch_prepare_kprobe()
754 p->ainsn.insn = get_insn_slot(); in arch_prepare_kprobe()
755 if (!p->ainsn.insn) in arch_prepare_kprobe()
760 free_insn_slot(p->ainsn.insn, 0); in arch_prepare_kprobe()
761 p->ainsn.insn = NULL; in arch_prepare_kprobe()
787 if (p->ainsn.insn) { in arch_remove_kprobe()
789 perf_event_text_poke(p->ainsn.insn, p->ainsn.insn, in arch_remove_kprobe()
790 p->ainsn.tp_len, NULL, 0); in arch_remove_kprobe()
791 free_insn_slot(p->ainsn.insn, p->ainsn.boostable); in arch_remove_kprobe()
792 p->ainsn.insn = NULL; in arch_remove_kprobe()
850 if (p->ainsn.boostable) { in setup_singlestep()
859 regs->ip = (unsigned long)p->ainsn.insn; in setup_singlestep()
870 if (p->ainsn.emulate_op) { in setup_singlestep()
871 p->ainsn.emulate_op(p, regs); in setup_singlestep()
878 regs->ip = (unsigned long)p->ainsn.insn; in setup_singlestep()
903 unsigned long copy_ip = (unsigned long)p->ainsn.insn; in resume_singlestep()
1000 if ((unsigned long)p->ainsn.insn < regs->ip && in kprobe_int3_handler()
1001 (unsigned long)p->ainsn.insn + MAX_INSN_SIZE > regs->ip) { in kprobe_int3_handler()
1018 if (unlikely(regs->ip == (unsigned long)cur->ainsn.insn)) { in kprobe_fault_handler()