Home
last modified time | relevance | path

Searched refs:modrm (Results 1 - 25 of 44) sorted by relevance

12

/kernel/linux/linux-5.10/arch/x86/lib/
H A Dinsn.c310 * Populates @insn->modrm and updates @insn->next_byte to point past the
312 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
320 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local
324 if (modrm->got) in insn_get_modrm()
335 modrm->value = mod; in insn_get_modrm()
336 modrm->nbytes = 1; in insn_get_modrm()
352 modrm->got = 1; in insn_get_modrm()
369 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local
400 insn_byte_t modrm; insn_get_sib() local
[all...]
H A Dinsn-eval.c454 regno = X86_MODRM_RM(insn->modrm.value); in get_reg_offset()
460 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5) in get_reg_offset()
468 regno = X86_MODRM_REG(insn->modrm.value); in get_reg_offset()
485 if (X86_MODRM_MOD(insn->modrm.value) != 3 && regno == 4) in get_reg_offset()
496 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5) in get_reg_offset()
566 if (X86_MODRM_MOD(insn->modrm.value) == 3) { in get_reg_offset_16()
572 *offs1 = regoff1[X86_MODRM_RM(insn->modrm.value)]; in get_reg_offset_16()
573 *offs2 = regoff2[X86_MODRM_RM(insn->modrm.value)]; in get_reg_offset_16()
582 if ((X86_MODRM_MOD(insn->modrm.value) == 0) && in get_reg_offset_16()
583 (X86_MODRM_RM(insn->modrm 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()
/kernel/linux/linux-5.10/tools/arch/x86/lib/
H A Dinsn.c310 * Populates @insn->modrm and updates @insn->next_byte to point past the
312 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
320 struct insn_field *modrm = &insn->modrm; in insn_get_modrm() local
324 if (modrm->got) in insn_get_modrm()
335 modrm->value = mod; in insn_get_modrm()
336 modrm->nbytes = 1; in insn_get_modrm()
352 modrm->got = 1; in insn_get_modrm()
369 struct insn_field *modrm = &insn->modrm; in insn_rip_relative() local
400 insn_byte_t modrm; insn_get_sib() local
[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()
/kernel/linux/linux-6.6/arch/x86/lib/
H A Dinsn.c325 * Populates @insn->modrm and updates @insn->next_byte to point past the
327 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
335 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 in insn_rip_relative()
414 insn_byte_t modrm; insn_get_sib() local
[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 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()
/kernel/linux/linux-6.6/tools/arch/x86/lib/
H A Dinsn.c325 * Populates @insn->modrm and updates @insn->next_byte to point past the
327 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
335 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 in insn_rip_relative()
414 insn_byte_t modrm; insn_get_sib() local
[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()
/kernel/linux/linux-5.10/arch/x86/include/asm/
H A Dinsn.h35 struct insn_field modrm; member
62 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6)
63 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3)
64 #define X86_MODRM_RM(modrm) ((modrm) & 0x07)
152 return insn->opcode.got && insn->modrm.got && insn->sib.got && in insn_complete()
205 return insn_offset_modrm(insn) + insn->modrm.nbytes; in insn_offset_sib()
246 X86_MODRM_REG(insn->modrm in insn_masking_exception()
[all...]
H A Dinat.h102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/kernel/linux/linux-5.10/tools/arch/x86/include/asm/
H A Dinsn.h35 struct insn_field modrm; member
62 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6)
63 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3)
64 #define X86_MODRM_RM(modrm) ((modrm) & 0x07)
152 return insn->opcode.got && insn->modrm.got && insn->sib.got && in insn_complete()
205 return insn_offset_modrm(insn) + insn->modrm.nbytes; in insn_offset_sib()
246 X86_MODRM_REG(insn->modrm in insn_masking_exception()
[all...]
/kernel/linux/linux-6.6/arch/x86/include/asm/
H A Dinsn.h80 struct insn_field modrm; member
107 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6)
108 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3)
109 #define X86_MODRM_RM(modrm) ((modrm) & 0x07)
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()
/kernel/linux/linux-6.6/tools/arch/x86/include/asm/
H A Dinsn.h80 struct insn_field modrm; member
107 #define X86_MODRM_MOD(modrm) (((modrm) & 0xc0) >> 6)
108 #define X86_MODRM_REG(modrm) (((modrm) & 0x38) >> 3)
109 #define X86_MODRM_RM(modrm) ((modrm) & 0x07)
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()
/kernel/linux/linux-5.10/tools/objtool/arch/x86/
H A Ddecode.c96 rex_x = 0, modrm = 0, modrm_mod = 0, modrm_rm = 0, in arch_decode_instruction() local
130 if (insn.modrm.nbytes) { in arch_decode_instruction()
131 modrm = insn.modrm.bytes[0]; in arch_decode_instruction()
132 modrm_mod = X86_MODRM_MOD(modrm); in arch_decode_instruction()
133 modrm_reg = X86_MODRM_REG(modrm); in arch_decode_instruction()
134 modrm_rm = X86_MODRM_RM(modrm); in arch_decode_instruction()
196 if (modrm == 0xe4) { in arch_decode_instruction()
208 if (modrm == 0xc4) in arch_decode_instruction()
210 else if (modrm in arch_decode_instruction()
[all...]
/kernel/linux/linux-5.10/arch/x86/kernel/
H A Dumip.c153 /* By getting modrm we also get the opcode. */ in identify_insn()
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()
381 if (X86_MODRM_MOD(insn.modrm.value) == 3) { in fixup_umip_exception()
H A Dalternative.c517 u8 modrm; in emit_indirect() local
521 modrm = 0x10; /* Reg = 2; CALL r/m */ in emit_indirect()
525 modrm = 0x20; /* Reg = 4; JMP r/m */ in emit_indirect()
538 modrm |= 0xc0; /* Mod = 3 */ in emit_indirect()
539 modrm += reg; in emit_indirect()
542 bytes[i++] = modrm; in emit_indirect()
/kernel/linux/linux-6.6/arch/x86/kernel/
H A Dumip.c153 /* By getting modrm we also get the opcode. */ in identify_insn()
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()
/kernel/linux/linux-6.6/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 in arch_decode_instruction()
[all...]
/kernel/linux/linux-6.6/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()
/kernel/linux/linux-6.6/arch/x86/events/
H A Dutils.c54 ext = (insn->modrm.bytes[0] >> 3) & 0x7; in decode_branch_type()
/kernel/linux/linux-5.10/arch/x86/kernel/kprobes/
H A Dcore.c187 return X86_MODRM_REG(insn->modrm.bytes[0]) == 4; in can_boost()
647 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 && in prepare_emulation()
648 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) { in prepare_emulation()
667 opcode = insn->modrm.bytes[0]; in prepare_emulation()
/kernel/linux/linux-6.6/arch/x86/kernel/kprobes/
H A Dcore.c187 return X86_MODRM_REG(insn->modrm.bytes[0]) == 4; in can_boost()
654 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 && in prepare_emulation()
655 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) { in prepare_emulation()
674 opcode = insn->modrm.bytes[0]; in prepare_emulation()
/kernel/linux/linux-5.10/arch/x86/tools/
H A Dinsn_decoder_test.c77 dump_field(fp, "modrm", "\t", &insn->modrm); in dump_insn()

Completed in 19 milliseconds

12