Lines Matching refs:insn
151 static int identify_insn(struct insn *insn) in identify_insn() argument
154 insn_get_modrm(insn); in identify_insn()
156 if (!insn->modrm.nbytes) in identify_insn()
160 if (insn->opcode.bytes[0] != 0xf) in identify_insn()
163 if (insn->opcode.bytes[1] == 0x1) { in identify_insn()
164 switch (X86_MODRM_REG(insn->modrm.value)) { in identify_insn()
174 } else if (insn->opcode.bytes[1] == 0x0) { in identify_insn()
175 if (X86_MODRM_REG(insn->modrm.value) == 0) in identify_insn()
177 else if (X86_MODRM_REG(insn->modrm.value) == 1) in identify_insn()
205 static int emulate_umip_insn(struct insn *insn, int umip_inst, in emulate_umip_insn() argument
208 if (!data || !data_size || !insn) in emulate_umip_insn()
224 if (X86_MODRM_MOD(insn->modrm.value) == 3) in emulate_umip_insn()
277 if (X86_MODRM_MOD(insn->modrm.value) == 3) in emulate_umip_insn()
278 *data_size = insn->opnd_bytes; in emulate_umip_insn()
344 struct insn insn; in fixup_umip_exception() local
357 if (!insn_decode_from_regs(&insn, regs, buf, nr_copied)) in fixup_umip_exception()
360 umip_inst = identify_insn(&insn); in fixup_umip_exception()
369 if (emulate_umip_insn(&insn, umip_inst, dummy_data, &dummy_data_size, in fixup_umip_exception()
379 if (X86_MODRM_MOD(insn.modrm.value) == 3) { in fixup_umip_exception()
380 reg_offset = insn_get_modrm_rm_off(&insn, regs); in fixup_umip_exception()
393 uaddr = insn_get_addr_ref(&insn, regs); in fixup_umip_exception()
409 regs->ip += insn.length; in fixup_umip_exception()