Home
last modified time | relevance | path

Searched refs:modrm (Results 1 – 17 of 17) sorted by relevance

/arch/x86/lib/
A Dinsn.c368 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local
372 if (modrm->got) in insn_get_modrm()
381 insn_field_set(modrm, mod, 1); in insn_get_modrm()
397 modrm->got = 1; in insn_get_modrm()
414 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local
427 return (modrm->nbytes && (modrm->bytes[0] & 0xc7) == 0x5); in insn_rip_relative()
443 insn_byte_t modrm; in insn_get_sib() local
453 if (insn->modrm.nbytes) { in insn_get_sib()
454 modrm = insn->modrm.bytes[0]; in insn_get_sib()
456 X86_MODRM_MOD(modrm) != 3 && X86_MODRM_RM(modrm) == 4) { in insn_get_sib()
[all …]
A Dinsn-eval.c462 regno = X86_MODRM_RM(insn->modrm.value); in get_regno()
476 regno = X86_MODRM_REG(insn->modrm.value); in get_regno()
585 if (X86_MODRM_MOD(insn->modrm.value) == 3) { in get_reg_offset_16()
602 (X86_MODRM_RM(insn->modrm.value) == 6)) in get_reg_offset_16()
983 if (X86_MODRM_MOD(insn->modrm.value) != 3) in get_eff_addr_reg()
1036 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_modrm()
1101 if (!insn->modrm.nbytes) in get_eff_addr_modrm_16()
1104 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_modrm_16()
1172 if (!insn->modrm.nbytes) in get_eff_addr_sib()
1175 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_sib()
[all …]
A Dinat.c45 insn_attr_t inat_get_group_attribute(insn_byte_t modrm, int lpfx_id, in inat_get_group_attribute() argument
56 if (inat_has_variant(table[X86_MODRM_REG(modrm)]) && lpfx_id) { in inat_get_group_attribute()
61 return table[X86_MODRM_REG(modrm)] | in inat_get_group_attribute()
/arch/x86/include/asm/
A Dinsn.h80 struct insn_field modrm; member
107 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6) argument
108 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3) argument
109 #define X86_MODRM_RM(modrm) ((modrm) & 0x07) argument
256 return insn_offset_modrm(insn) + insn->modrm.nbytes; in insn_offset_sib()
297 X86_MODRM_REG(insn->modrm.bytes[0]) == 2); in insn_masking_exception()
A Dinat.h108 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/arch/x86/kernel/
A Dumip.c156 if (!insn->modrm.nbytes) in identify_insn()
164 switch (X86_MODRM_REG(insn->modrm.value)) { 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()
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()
379 if (X86_MODRM_MOD(insn.modrm.value) == 3) { in fixup_umip_exception()
A Dalternative.c721 u8 modrm; in emit_indirect() local
725 modrm = 0x10; /* Reg = 2; CALL r/m */ in emit_indirect()
729 modrm = 0x20; /* Reg = 4; JMP r/m */ in emit_indirect()
742 modrm |= 0xc0; /* Mod = 3 */ in emit_indirect()
743 modrm += reg; in emit_indirect()
746 bytes[i++] = modrm; in emit_indirect()
A Duprobes.c45 #define MODRM_REG(insn) X86_MODRM_REG((insn)->modrm.value)
/arch/x86/coco/sev/
A Dvc-shared.c7 u8 modrm = ctxt->insn.modrm.value; in vc_check_opcode_bytes() local
28 if (opcode == 0x010f && (modrm == 0xc8 || modrm == 0xfa)) in vc_check_opcode_bytes()
34 if (opcode == 0x010f && (modrm == 0xc9 || modrm == 0xfb)) in vc_check_opcode_bytes()
57 if (opcode == 0x010f && modrm == 0xf9) in vc_check_opcode_bytes()
63 X86_MODRM_REG(ctxt->insn.modrm.value) == 7) in vc_check_opcode_bytes()
68 if (opcode == 0x010f && modrm == 0xd9) in vc_check_opcode_bytes()
75 X86_MODRM_REG(ctxt->insn.modrm.value) == 7) in vc_check_opcode_bytes()
/arch/x86/kernel/kprobes/
A Dcore.c186 return X86_MODRM_REG(insn->modrm.bytes[0]) != 0b110; in can_boost()
189 return X86_MODRM_REG(insn->modrm.bytes[0]) != 0b001; in can_boost()
192 return X86_MODRM_REG(insn->modrm.bytes[0]) == 0b000 || in can_boost()
193 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b001; in can_boost()
196 return X86_MODRM_REG(insn->modrm.bytes[0]) == 0b000 || in can_boost()
197 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b001 || in can_boost()
198 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b100; in can_boost()
674 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 && in prepare_emulation()
675 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) { in prepare_emulation()
694 opcode = insn->modrm.bytes[0]; in prepare_emulation()
A Dopt.c232 (X86_MODRM_REG(insn->modrm.value) & 6) == 4) || /* Jump */ in insn_is_indirect_jump()
/arch/x86/events/
A Dutils.c55 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in decode_branch_type()
/arch/x86/tools/
A Dinsn_decoder_test.c76 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
A Dinsn_sanity.c70 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
/arch/x86/kvm/
A Demulate.c1192 ctxt->modrm_mod = (ctxt->modrm & 0xc0) >> 6; in decode_modrm()
1193 ctxt->modrm_reg |= (ctxt->modrm & 0x38) >> 3; in decode_modrm()
1194 ctxt->modrm_rm = base_reg | (ctxt->modrm & 0x07); in decode_modrm()
4871 ctxt->modrm = insn_fetch(u8, ctxt); in x86_decode_insn()
4882 goffset = (ctxt->modrm >> 3) & 7; in x86_decode_insn()
4886 goffset = (ctxt->modrm >> 3) & 7; in x86_decode_insn()
4887 if ((ctxt->modrm >> 6) == 3) in x86_decode_insn()
4893 goffset = ctxt->modrm & 7; in x86_decode_insn()
4908 if (ctxt->modrm > 0xbf) { in x86_decode_insn()
4911 ctxt->modrm - 0xc0, size); in x86_decode_insn()
[all …]
A Dkvm_emulate.h369 u8 modrm; member
/arch/x86/kvm/svm/
A Dsvm.c2223 switch (ctxt->modrm) { in svm_instr_opcode()

Completed in 46 milliseconds