| /linux-6.15/arch/x86/lib/ |
| H A D | insn.c | 362 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local 366 if (modrm->got) in insn_get_modrm() 375 insn_field_set(modrm, mod, 1); in insn_get_modrm() 391 modrm->got = 1; in insn_get_modrm() 408 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local 421 return (modrm->nbytes && (modrm->bytes[0] & 0xc7) == 0x5); in insn_rip_relative() 437 insn_byte_t modrm; in insn_get_sib() local 447 if (insn->modrm.nbytes) { in insn_get_sib() 448 modrm = insn->modrm.bytes[0]; in insn_get_sib() 450 X86_MODRM_MOD(modrm) != 3 && X86_MODRM_RM(modrm) == 4) { in insn_get_sib() [all …]
|
| H A D | insn-eval.c | 461 regno = X86_MODRM_RM(insn->modrm.value); in get_regno() 475 regno = X86_MODRM_REG(insn->modrm.value); in get_regno() 584 if (X86_MODRM_MOD(insn->modrm.value) == 3) { in get_reg_offset_16() 601 (X86_MODRM_RM(insn->modrm.value) == 6)) in get_reg_offset_16() 975 if (X86_MODRM_MOD(insn->modrm.value) != 3) in get_eff_addr_reg() 1028 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_modrm() 1093 if (!insn->modrm.nbytes) in get_eff_addr_modrm_16() 1096 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_modrm_16() 1164 if (!insn->modrm.nbytes) in get_eff_addr_sib() 1167 if (X86_MODRM_MOD(insn->modrm.value) > 2) in get_eff_addr_sib() [all …]
|
| H A D | inat.c | 45 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()
|
| /linux-6.15/tools/arch/x86/lib/ |
| H A D | insn.c | 362 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local 366 if (modrm->got) in insn_get_modrm() 375 insn_field_set(modrm, mod, 1); in insn_get_modrm() 391 modrm->got = 1; in insn_get_modrm() 408 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local 421 return (modrm->nbytes && (modrm->bytes[0] & 0xc7) == 0x5); in insn_rip_relative() 437 insn_byte_t modrm; in insn_get_sib() local 447 if (insn->modrm.nbytes) { in insn_get_sib() 448 modrm = insn->modrm.bytes[0]; in insn_get_sib() 450 X86_MODRM_MOD(modrm) != 3 && X86_MODRM_RM(modrm) == 4) { in insn_get_sib() [all …]
|
| H A D | inat.c | 45 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()
|
| /linux-6.15/arch/x86/include/asm/ |
| H A D | insn.h | 80 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()
|
| H A D | inat.h | 107 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
|
| /linux-6.15/tools/arch/x86/include/asm/ |
| H A D | insn.h | 80 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()
|
| H A D | inat.h | 107 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
|
| /linux-6.15/arch/x86/kernel/ |
| H A D | umip.c | 156 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 D | alternative.c | 722 u8 modrm; in emit_indirect() local 726 modrm = 0x10; /* Reg = 2; CALL r/m */ in emit_indirect() 730 modrm = 0x20; /* Reg = 4; JMP r/m */ in emit_indirect() 743 modrm |= 0xc0; /* Mod = 3 */ in emit_indirect() 744 modrm += reg; in emit_indirect() 747 bytes[i++] = modrm; in emit_indirect()
|
| H A D | uprobes.c | 45 #define MODRM_REG(insn) X86_MODRM_REG((insn)->modrm.value)
|
| /linux-6.15/tools/objtool/arch/x86/ |
| H A D | decode.c | 163 modrm = 0, modrm_mod = 0, modrm_rm = 0, modrm_reg = 0, in arch_decode_instruction() local 209 if (ins.modrm.nbytes) { in arch_decode_instruction() 210 modrm = ins.modrm.bytes[0]; in arch_decode_instruction() 211 modrm_mod = X86_MODRM_MOD(modrm); in arch_decode_instruction() 212 modrm_reg = X86_MODRM_REG(modrm) + 8*rex_r; in arch_decode_instruction() 213 modrm_rm = X86_MODRM_RM(modrm) + 8*rex_b; in arch_decode_instruction() 532 if (modrm == 0xca) in arch_decode_instruction() 537 if (modrm == 0xca) in arch_decode_instruction() 539 else if (modrm == 0xcb) in arch_decode_instruction() 569 if (prefix == 0xf3 && (modrm == 0xfa || modrm == 0xfb)) in arch_decode_instruction()
|
| /linux-6.15/arch/x86/kernel/kprobes/ |
| H A D | core.c | 186 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() 692 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 && in prepare_emulation() 693 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) { in prepare_emulation() 712 opcode = insn->modrm.bytes[0]; in prepare_emulation()
|
| H A D | opt.c | 232 (X86_MODRM_REG(insn->modrm.value) & 6) == 4) || /* Jump */ in insn_is_indirect_jump()
|
| /linux-6.15/arch/x86/coco/sev/ |
| H A D | shared.c | 1570 u8 modrm = ctxt->insn.modrm.value; in vc_check_opcode_bytes() local 1591 if (opcode == 0x010f && (modrm == 0xc8 || modrm == 0xfa)) in vc_check_opcode_bytes() 1597 if (opcode == 0x010f && (modrm == 0xc9 || modrm == 0xfb)) in vc_check_opcode_bytes() 1620 if (opcode == 0x010f && modrm == 0xf9) in vc_check_opcode_bytes() 1626 X86_MODRM_REG(ctxt->insn.modrm.value) == 7) in vc_check_opcode_bytes() 1631 if (opcode == 0x010f && modrm == 0xd9) in vc_check_opcode_bytes() 1638 X86_MODRM_REG(ctxt->insn.modrm.value) == 7) in vc_check_opcode_bytes()
|
| /linux-6.15/tools/perf/util/intel-pt-decoder/ |
| H A D | intel-pt-insn-decoder.c | 46 switch (insn->modrm.bytes[0]) { in intel_pt_insn_decoder() 142 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in intel_pt_insn_decoder()
|
| /linux-6.15/arch/x86/events/ |
| H A D | utils.c | 54 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in decode_branch_type()
|
| /linux-6.15/arch/x86/tools/ |
| H A D | insn_decoder_test.c | 76 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
|
| H A D | insn_sanity.c | 70 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()
|
| /linux-6.15/arch/x86/kvm/ |
| H A D | emulate.c | 1192 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 …]
|
| H A D | kvm_emulate.h | 369 u8 modrm; member
|
| /linux-6.15/arch/x86/kvm/svm/ |
| H A D | svm.c | 2409 switch (ctxt->modrm) { in svm_instr_opcode()
|