Home
last modified time | relevance | path

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

12

/openbmc/linux/arch/x86/lib/
H A Dinsn.c335 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local
339 if (modrm->got) in insn_get_modrm()
350 insn_field_set(modrm, mod, 1); in insn_get_modrm()
366 modrm->got = 1; in insn_get_modrm()
383 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local
389 if (!modrm->got) { in insn_rip_relative()
398 return (modrm->nbytes && (modrm->bytes[0] & 0xc7) == 0x5); in insn_rip_relative()
414 insn_byte_t modrm; in insn_get_sib() local
420 if (!insn->modrm.got) { in insn_get_sib()
426 if (insn->modrm.nbytes) { in insn_get_sib()
[all …]
H A Dinsn-eval.c461 regno = X86_MODRM_RM(insn->modrm.value); in get_regno()
467 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5) in get_regno()
475 regno = X86_MODRM_REG(insn->modrm.value); in get_regno()
492 if (X86_MODRM_MOD(insn->modrm.value) != 3 && regno == 4) in get_regno()
503 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5) in get_regno()
584 if (X86_MODRM_MOD(insn->modrm.value) == 3) { in get_reg_offset_16()
590 *offs1 = regoff1[X86_MODRM_RM(insn->modrm.value)]; in get_reg_offset_16()
591 *offs2 = regoff2[X86_MODRM_RM(insn->modrm.value)]; in get_reg_offset_16()
600 if ((X86_MODRM_MOD(insn->modrm.value) == 0) && in get_reg_offset_16()
601 (X86_MODRM_RM(insn->modrm.value) == 6)) in get_reg_offset_16()
[all …]
H 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()
/openbmc/linux/tools/arch/x86/lib/
H A Dinsn.c335 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local
339 if (modrm->got) in insn_get_modrm()
350 insn_field_set(modrm, mod, 1); in insn_get_modrm()
366 modrm->got = 1; in insn_get_modrm()
383 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local
389 if (!modrm->got) { in insn_rip_relative()
398 return (modrm->nbytes && (modrm->bytes[0] & 0xc7) == 0x5); in insn_rip_relative()
414 insn_byte_t modrm; in insn_get_sib() local
420 if (!insn->modrm.got) { in insn_get_sib()
426 if (insn->modrm.nbytes) { in insn_get_sib()
[all …]
H 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()
/openbmc/linux/arch/x86/include/asm/
H 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
232 return insn_offset_modrm(insn) + insn->modrm.nbytes; in insn_offset_sib()
273 X86_MODRM_REG(insn->modrm.bytes[0]) == 2); in insn_masking_exception()
H A Dinat.h102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/openbmc/linux/tools/arch/x86/include/asm/
H 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
232 return insn_offset_modrm(insn) + insn->modrm.nbytes; in insn_offset_sib()
273 X86_MODRM_REG(insn->modrm.bytes[0]) == 2); in insn_masking_exception()
H A Dinat.h102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/openbmc/qemu/target/i386/hvf/
H A Dx86_decode.c113 op->reg = decode->modrm.reg; in decode_modrm_reg()
281 if (!decode->modrm.reg) { in decode_incgroup2()
283 } else if (1 == decode->modrm.reg) { in decode_incgroup2()
329 decode->cmd = group[decode->modrm.reg]; in decode_addgroup()
344 decode->cmd = group[decode->modrm.reg]; in decode_rotgroup()
359 decode->cmd = group[decode->modrm.reg]; in decode_f7group()
362 switch (decode->modrm.reg) { in decode_f7group()
465 int mode = decode->modrm.mod == 3 ? 1 : 0; in decode_x87_ins()
467 decode->modrm.reg; in decode_x87_ins()
490 decode->opcode[0], decode->modrm.modrm, decoder->modrm_reg, in decode_x87_ins()
[all …]
H A Dx86_decode.h216 uint8_t modrm; member
295 struct x86_modrm modrm; member
/openbmc/linux/arch/x86/kernel/
H 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()
H A Dalternative.c494 u8 modrm; in emit_indirect() local
498 modrm = 0x10; /* Reg = 2; CALL r/m */ in emit_indirect()
502 modrm = 0x20; /* Reg = 4; JMP r/m */ in emit_indirect()
515 modrm |= 0xc0; /* Mod = 3 */ in emit_indirect()
516 modrm += reg; in emit_indirect()
519 bytes[i++] = modrm; in emit_indirect()
/openbmc/linux/tools/objtool/arch/x86/
H A Ddecode.c157 modrm = 0, modrm_mod = 0, modrm_rm = 0, modrm_reg = 0, in arch_decode_instruction() local
194 if (ins.modrm.nbytes) { in arch_decode_instruction()
195 modrm = ins.modrm.bytes[0]; in arch_decode_instruction()
196 modrm_mod = X86_MODRM_MOD(modrm); in arch_decode_instruction()
197 modrm_reg = X86_MODRM_REG(modrm) + 8*rex_r; in arch_decode_instruction()
198 modrm_rm = X86_MODRM_RM(modrm) + 8*rex_b; in arch_decode_instruction()
512 if (modrm == 0xca) in arch_decode_instruction()
514 else if (modrm == 0xcb) in arch_decode_instruction()
539 if (prefix == 0xf3 && (modrm == 0xfa || modrm == 0xfb)) in arch_decode_instruction()
/openbmc/qemu/target/i386/tcg/
H A Dtranslate.c97 uint8_t modrm; member
1560 int modrm, bool is_vsib) in gen_lea_modrm_0() argument
1571 mod = (modrm >> 6) & 3; in gen_lea_modrm_0()
1572 rm = modrm & 7; in gen_lea_modrm_0()
1735 int modrm = s->modrm; in gen_ld_modrm() local
1738 mod = (modrm >> 6) & 3; in gen_ld_modrm()
1739 rm = (modrm & 7) | REX_B(s); in gen_ld_modrm()
1751 int modrm = s->modrm; in gen_st_modrm() local
1754 mod = (modrm >> 6) & 3; in gen_st_modrm()
1755 rm = (modrm & 7) | REX_B(s); in gen_st_modrm()
[all …]
H A Ddecode-new.c.inc138 * a switch statement to decode modrm bits 3-5 and prefixes after decoding
285 s->modrm = x86_ldub_code(env, s);
288 return s->modrm;
331 int modrm = get_modrm(s, env);
332 int op = (modrm >> 3) & 7;
334 if ((modrm >> 6) == 3) {
369 uint8_t modrm = get_modrm(s, env);
370 int op = (modrm >> 3) & 7;
372 if ((modrm >> 6) == 3) {
827 int modrm = get_modrm(s, env);
[all …]
/openbmc/linux/tools/perf/util/intel-pt-decoder/
H A Dintel-pt-insn-decoder.c49 switch (insn->modrm.bytes[0]) { in intel_pt_insn_decoder()
136 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in intel_pt_insn_decoder()
/openbmc/qemu/hw/i386/
H A Dvapic.c184 static uint8_t modrm_reg(uint8_t modrm) in modrm_reg() argument
186 return (modrm >> 3) & 7; in modrm_reg()
189 static bool is_abs_modrm(uint8_t modrm) in is_abs_modrm() argument
191 return (modrm & 0xc7) == 0x05; in is_abs_modrm()
/openbmc/linux/arch/x86/kernel/kprobes/
H A Dcore.c187 return X86_MODRM_REG(insn->modrm.bytes[0]) == 4; in can_boost()
663 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 && in prepare_emulation()
664 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) { in prepare_emulation()
683 opcode = insn->modrm.bytes[0]; in prepare_emulation()
H A Dopt.c232 (X86_MODRM_REG(insn->modrm.value) & 6) == 4) || /* Jump */ in insn_is_indirect_jump()
/openbmc/linux/arch/x86/events/
H A Dutils.c54 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in decode_branch_type()
/openbmc/linux/arch/x86/tools/
H A Dinsn_decoder_test.c77 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
H A Dinsn_sanity.c70 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
/openbmc/linux/arch/x86/kvm/
H A Demulate.c1187 ctxt->modrm_mod = (ctxt->modrm & 0xc0) >> 6; in decode_modrm()
1188 ctxt->modrm_reg |= (ctxt->modrm & 0x38) >> 3; in decode_modrm()
1189 ctxt->modrm_rm = base_reg | (ctxt->modrm & 0x07); in decode_modrm()
4898 ctxt->modrm = insn_fetch(u8, ctxt); in x86_decode_insn()
4902 (mode == X86EMUL_MODE_PROT64 || (ctxt->modrm & 0xc0) == 0xc0)) { in x86_decode_insn()
4909 goffset = (ctxt->modrm >> 3) & 7; in x86_decode_insn()
4913 goffset = (ctxt->modrm >> 3) & 7; in x86_decode_insn()
4914 if ((ctxt->modrm >> 6) == 3) in x86_decode_insn()
4920 goffset = ctxt->modrm & 7; in x86_decode_insn()
4935 if (ctxt->modrm > 0xbf) { in x86_decode_insn()
[all …]
H A Dkvm_emulate.h346 u8 modrm; member

12