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

/linux-master/arch/x86/lib/
H A Dinat.c45 insn_attr_t inat_get_group_attribute(insn_byte_t modrm, int lpfx_id, argument
56 if (inat_has_variant(table[X86_MODRM_REG(modrm)]) && lpfx_id) {
61 return table[X86_MODRM_REG(modrm)] |
H A Dinsn.c323 * Populates @insn->modrm and updates @insn->next_byte to point past the
325 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
333 struct insn_field *modrm = &insn->modrm; local
337 if (modrm->got)
346 insn_field_set(modrm, mod, 1);
362 modrm->got = 1;
379 struct insn_field *modrm = &insn->modrm; local
392 return (modrm
408 insn_byte_t modrm; local
[all...]
H A Dinsn-eval.c461 regno = X86_MODRM_RM(insn->modrm.value);
467 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5)
475 regno = X86_MODRM_REG(insn->modrm.value);
492 if (X86_MODRM_MOD(insn->modrm.value) != 3 && regno == 4)
503 if (!X86_MODRM_MOD(insn->modrm.value) && regno == 5)
584 if (X86_MODRM_MOD(insn->modrm.value) == 3) {
590 *offs1 = regoff1[X86_MODRM_RM(insn->modrm.value)];
591 *offs2 = regoff2[X86_MODRM_RM(insn->modrm.value)];
600 if ((X86_MODRM_MOD(insn->modrm.value) == 0) &&
601 (X86_MODRM_RM(insn->modrm
[all...]
/linux-master/tools/arch/x86/lib/
H A Dinat.c45 insn_attr_t inat_get_group_attribute(insn_byte_t modrm, int lpfx_id, argument
56 if (inat_has_variant(table[X86_MODRM_REG(modrm)]) && lpfx_id) {
61 return table[X86_MODRM_REG(modrm)] |
H A Dinsn.c323 * Populates @insn->modrm and updates @insn->next_byte to point past the
325 * (prefixes and opcode(s)). No effect if @insn->modrm.got is already 1.
333 struct insn_field *modrm = &insn->modrm; local
337 if (modrm->got)
346 insn_field_set(modrm, mod, 1);
362 modrm->got = 1;
379 struct insn_field *modrm = &insn->modrm; local
392 return (modrm
408 insn_byte_t modrm; local
[all...]
/linux-master/arch/x86/include/asm/
H A Dinsn.h80 struct insn_field modrm; member in struct:insn
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;
273 X86_MODRM_REG(insn->modrm.bytes[0]) == 2);
H A Dinat.h102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/linux-master/tools/arch/x86/include/asm/
H A Dinsn.h80 struct insn_field modrm; member in struct:insn
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;
273 X86_MODRM_REG(insn->modrm.bytes[0]) == 2);
H A Dinat.h102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
/linux-master/arch/x86/kernel/
H A Dumip.c153 /* By getting modrm we also get the opcode. */
156 if (!insn->modrm.nbytes)
164 switch (X86_MODRM_REG(insn->modrm.value)) {
175 if (X86_MODRM_REG(insn->modrm.value) == 0)
177 else if (X86_MODRM_REG(insn->modrm.value) == 1)
224 if (X86_MODRM_MOD(insn->modrm.value) == 3)
277 if (X86_MODRM_MOD(insn->modrm.value) == 3)
379 if (X86_MODRM_MOD(insn.modrm.value) == 3) {
H A Dsev-shared.c1186 u8 modrm = ctxt->insn.modrm.value; local
1206 if (opcode == 0x010f && modrm == 0xc8)
1211 if (opcode == 0x010f && modrm == 0xc9)
1234 if (opcode == 0x010f && modrm == 0xf9)
1240 X86_MODRM_REG(ctxt->insn.modrm.value) == 7)
1245 if (opcode == 0x010f && modrm == 0xd9)
1252 X86_MODRM_REG(ctxt->insn.modrm.value) == 7)
H A Dalternative.c555 u8 modrm; local
559 modrm = 0x10; /* Reg = 2; CALL r/m */
563 modrm = 0x20; /* Reg = 4; JMP r/m */
576 modrm |= 0xc0; /* Mod = 3 */
577 modrm += reg;
580 bytes[i++] = modrm;
H A Duprobes.c44 #define MODRM_REG(insn) X86_MODRM_REG((insn)->modrm.value)
252 * - Where necessary, examine the modrm byte and allow only valid instructions
328 * - There's always a modrm byte with bit layout "00 reg 101".
332 * has no effect on rip-relative mode. It doesn't make modrm byte
345 * insn_rip_relative() would have decoded rex_prefix, vex_prefix, modrm.
377 * This is tricky since there are insns with modrm byte
378 * which also use registers not encoded in modrm byte:
383 * Encoding: 0f c7/1 modrm
395 * Encoding: 0f f7 modrm, 66 0f f7 modrm, ve
[all...]
/linux-master/tools/objtool/arch/x86/
H A Ddecode.c157 modrm = 0, modrm_mod = 0, modrm_rm = 0, modrm_reg = 0, local
194 if (ins.modrm.nbytes) {
195 modrm = ins.modrm.bytes[0];
196 modrm_mod = X86_MODRM_MOD(modrm);
197 modrm_reg = X86_MODRM_REG(modrm) + 8*rex_r;
198 modrm_rm = X86_MODRM_RM(modrm) + 8*rex_b;
515 if (modrm == 0xca)
520 if (modrm == 0xca)
522 else if (modrm
[all...]
/linux-master/arch/x86/kernel/kprobes/
H A Dcore.c186 return X86_MODRM_REG(insn->modrm.bytes[0]) != 0b110;
189 return X86_MODRM_REG(insn->modrm.bytes[0]) != 0b001;
192 return X86_MODRM_REG(insn->modrm.bytes[0]) == 0b000 ||
193 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b001;
196 return X86_MODRM_REG(insn->modrm.bytes[0]) == 0b000 ||
197 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b001 ||
198 X86_MODRM_REG(insn->modrm.bytes[0]) == 0b100;
701 X86_MODRM_REG(insn->modrm.bytes[0]) == 0 &&
702 X86_MODRM_MOD(insn->modrm.bytes[0]) == 3) {
721 opcode = insn->modrm
[all...]
H A Dopt.c232 (X86_MODRM_REG(insn->modrm.value) & 6) == 4) || /* Jump */
/linux-master/tools/perf/util/intel-pt-decoder/
H A Dintel-pt-insn-decoder.c49 switch (insn->modrm.bytes[0]) {
136 ext = (insn->modrm.bytes[0] >> 3) & 0x7;
/linux-master/arch/x86/tools/
H A Dinsn_decoder_test.c77 dump_field(fp, "modrm", "\t", &insn->modrm);
H A Dinsn_sanity.c70 dump_field(fp, "modrm", "\t", &insn->modrm);
/linux-master/arch/x86/events/
H A Dutils.c54 ext = (insn->modrm.bytes[0] >> 3) & 0x7;
/linux-master/arch/x86/kvm/
H A Dkvm_emulate.h39 u8 modrm_mod; /* mod part of modrm */
41 u8 modrm_rm; /* rm part of modrm */
354 /* modrm */
355 u8 modrm; member in struct:x86_emulate_ctxt
H A Demulate.c125 #define Group (1<<15) /* Bits 3:5 of modrm byte extend opcode */
1188 ctxt->modrm_mod = (ctxt->modrm & 0xc0) >> 6;
1189 ctxt->modrm_reg |= (ctxt->modrm & 0x38) >> 3;
1190 ctxt->modrm_rm = base_reg | (ctxt->modrm & 0x07);
4894 ctxt->modrm = insn_fetch(u8, ctxt);
4898 (mode == X86EMUL_MODE_PROT64 || (ctxt->modrm & 0xc0) == 0xc0)) {
4905 goffset = (ctxt->modrm >> 3) & 7;
4909 goffset = (ctxt->modrm >> 3) & 7;
4910 if ((ctxt->modrm >> 6) == 3)
4916 goffset = ctxt->modrm
[all...]
/linux-master/arch/x86/kvm/svm/
H A Dsvm.c2320 switch (ctxt->modrm) {

Completed in 220 milliseconds