Lines Matching defs:insn
12 #include <asm/insn.h>
13 #include <asm/insn-eval.h>
138 * @insn: Instruction structure with opcode and ModRM byte.
140 * From the opcode and ModRM.reg in @insn identify, if any, a UMIP-protected
151 static int identify_insn(struct insn *insn)
154 insn_get_modrm(insn);
156 if (!insn->modrm.nbytes)
160 if (insn->opcode.bytes[0] != 0xf)
163 if (insn->opcode.bytes[1] == 0x1) {
164 switch (X86_MODRM_REG(insn->modrm.value)) {
174 } else if (insn->opcode.bytes[1] == 0x0) {
175 if (X86_MODRM_REG(insn->modrm.value) == 0)
177 else if (X86_MODRM_REG(insn->modrm.value) == 1)
188 * @insn: Instruction structure with operands
205 static int emulate_umip_insn(struct insn *insn, int umip_inst,
208 if (!data || !data_size || !insn)
224 if (X86_MODRM_MOD(insn->modrm.value) == 3)
277 if (X86_MODRM_MOD(insn->modrm.value) == 3)
278 *data_size = insn->opnd_bytes;
344 struct insn insn;
357 if (!insn_decode_from_regs(&insn, regs, buf, nr_copied))
360 umip_inst = identify_insn(&insn);
369 if (emulate_umip_insn(&insn, umip_inst, dummy_data, &dummy_data_size,
379 if (X86_MODRM_MOD(insn.modrm.value) == 3) {
380 reg_offset = insn_get_modrm_rm_off(&insn, regs);
393 uaddr = insn_get_addr_ref(&insn, regs);
409 regs->ip += insn.length;