/linux-master/arch/x86/lib/ |
H A D | inat.c | 45 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 D | insn.c | 323 * 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 D | insn-eval.c | 461 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 D | inat.c | 45 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 D | insn.c | 323 * 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 D | insn.h | 80 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 D | inat.h | 102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
|
/linux-master/tools/arch/x86/include/asm/ |
H A D | insn.h | 80 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 D | inat.h | 102 extern insn_attr_t inat_get_group_attribute(insn_byte_t modrm,
|
/linux-master/arch/x86/kernel/ |
H A D | umip.c | 153 /* 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 D | sev-shared.c | 1186 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 D | alternative.c | 555 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 D | uprobes.c | 44 #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 D | decode.c | 157 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 D | core.c | 186 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 D | opt.c | 232 (X86_MODRM_REG(insn->modrm.value) & 6) == 4) || /* Jump */
|
/linux-master/tools/perf/util/intel-pt-decoder/ |
H A D | intel-pt-insn-decoder.c | 49 switch (insn->modrm.bytes[0]) { 136 ext = (insn->modrm.bytes[0] >> 3) & 0x7;
|
/linux-master/arch/x86/tools/ |
H A D | insn_decoder_test.c | 77 dump_field(fp, "modrm", "\t", &insn->modrm);
|
H A D | insn_sanity.c | 70 dump_field(fp, "modrm", "\t", &insn->modrm);
|
/linux-master/arch/x86/events/ |
H A D | utils.c | 54 ext = (insn->modrm.bytes[0] >> 3) & 0x7;
|
/linux-master/arch/x86/kvm/ |
H A D | kvm_emulate.h | 39 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 D | emulate.c | 125 #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 D | svm.c | 2320 switch (ctxt->modrm) {
|