• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/cddl/dev/dtrace/x86/

Lines Matching defs:r_m

377  * this decodes the r_m field for mode's 0, 1, 2 in 16 bit mode
390 * This decodes 32 bit addressing mode r_m field for modes 0, 1, 2
403 * This decodes 64 bit addressing mode r_m field for modes 0, 1, 2
2275 #define REX_B 0x01 /* extends ModRM r_m, SIB base, or opcode reg */
2456 dtrace_get_modrm(dis86_t *x, uint_t *mode, uint_t *reg, uint_t *r_m)
2461 dtrace_get_SIB(x, mode, reg, r_m);
2471 dtrace_rex_adjust(uint_t rex_prefix, uint_t mode, uint_t *reg, uint_t *r_m)
2473 if (reg != NULL && r_m == NULL) {
2479 if (r_m != NULL && (REX_B & rex_prefix) != 0)
2480 *r_m += 8;
2490 dtrace_vex_adjust(uint_t vex_byte1, uint_t mode, uint_t *reg, uint_t *r_m)
2492 if (reg != NULL && r_m == NULL) {
2498 if (r_m != NULL && ((VEX_B & vex_byte1) == 0))
2499 *r_m += 8;
2604 * r_m = r_m (or reg if mode == 3) field from ModRM byte
2608 * the value of reg or r_m must have already been adjusted for any REX prefix.
2612 dtrace_get_operand(dis86_t *x, uint_t mode, uint_t r_m, int wbit, int opindex)
2636 (void) strlcat(opnd, dis_MMREG[r_m], OPLEN);
2639 (void) strlcat(opnd, dis_XMMREG[r_m], OPLEN);
2642 (void) strlcat(opnd, dis_YMMREG[r_m], OPLEN);
2645 (void) strlcat(opnd, dis_SEGREG[r_m], OPLEN);
2648 (void) strlcat(opnd, dis_CONTROLREG[r_m], OPLEN);
2651 (void) strlcat(opnd, dis_DEBUGREG[r_m], OPLEN);
2654 (void) strlcat(opnd, dis_TESTREG[r_m], OPLEN);
2658 (void) strlcat(opnd, dis_REG8[r_m], OPLEN);
2660 (void) strlcat(opnd, dis_REG8_REX[r_m], OPLEN);
2663 (void) strlcat(opnd, dis_REG16[r_m], OPLEN);
2667 (void) strlcat(opnd, dis_REG16[r_m], OPLEN);
2669 (void) strlcat(opnd, dis_REG32[r_m], OPLEN);
2671 (void) strlcat(opnd, dis_REG64[r_m], OPLEN);
2686 * mode 1 is r_m + 8 bit displacement
2687 * mode 2 is r_m + 16 bit displacement
2688 * mode 0 is just r_m, unless r_m is 6 which is 16 bit disp
2691 if ((mode == 0 && r_m == 6) || mode == 2)
2696 if (mode == 0 && r_m == 6)
2702 (void) strlcat(opnd, dis_addr16[mode][r_m], OPLEN);
2711 if (r_m == ESP_REGNO || r_m == ESP_REGNO + 8) {
2722 base = r_m;
2734 else if ((r_m & 7) == EBP_REGNO ||
2752 (void) strlcat(opnd, dis_addr32_mode0[r_m],
2755 (void) strlcat(opnd, dis_addr32_mode12[r_m],
2759 (void) strlcat(opnd, dis_addr64_mode0[r_m],
2761 if (r_m == 5) {
2766 (void) strlcat(opnd, dis_addr64_mode12[r_m],
2823 * vbit indicates direction (0 for "opcode r,r_m") or (1 for "opcode r_m, r")
2825 #define STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, vbit) { \
2826 dtrace_get_modrm(x, &mode, &reg, &r_m); \
2827 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
2828 dtrace_get_operand(x, mode, r_m, wbit, vbit); \
2835 * wbit is for the r_m operand
2838 #define MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, w2, vbit) { \
2839 dtrace_get_modrm(x, &mode, &reg, &r_m); \
2840 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
2841 dtrace_get_operand(x, mode, r_m, wbit, vbit); \
2848 * 0 for "opcode imm, r, r_m" or
2849 * 1 for "opcode imm, r_m, r"
2851 #define THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, immsize, vbit) { \
2852 dtrace_get_modrm(x, &mode, &reg, &r_m); \
2853 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
2854 dtrace_get_operand(x, mode, r_m, wbit, 2-vbit); \
2862 #define FOUROPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, immsize) { \
2863 dtrace_get_modrm(x, &mode, &reg, &r_m); \
2864 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
2865 dtrace_get_operand(x, mode, r_m, wbit, 2); \
2874 #define ONEOPERAND_TWOIMM(x, mode, reg, r_m, rex_prefix, wbit, immsize) { \
2875 dtrace_get_modrm(x, &mode, &reg, &r_m); \
2876 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m); \
2877 dtrace_get_operand(x, mode, r_m, wbit, 2); \
2910 uint_t r_m; /* r_m value from ModRM byte */
3074 dtrace_get_modrm(x, &mode, &reg, &r_m);
3082 opcode4 = ((reg << 3) | r_m) & 0x0F;
3423 dtrace_get_modrm(x, &mode, &opcode3, &r_m);
3433 dp = (instable_t *)&dis_opFP5[r_m];
3439 dp = (instable_t *)&dis_opFP4[opcode3 - 4][r_m];
3562 dtrace_get_modrm(x, &mode, &reg, &r_m);
3712 dtrace_get_modrm(x, &mode, &reg, &r_m);
3713 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3718 dtrace_get_operand(x, mode, r_m, wbit, 0);
3732 dtrace_get_modrm(x, &mode, &reg, &r_m);
3733 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3737 dtrace_get_operand(x, mode, r_m, wbit, 0);
3745 dtrace_get_modrm(x, &mode, &reg, &r_m);
3746 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3751 dtrace_get_operand(x, mode, r_m, wbit, 0);
3759 dtrace_get_modrm(x, &mode, &reg, &r_m);
3760 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3767 dtrace_get_operand(x, mode, r_m, wbit, 1);
3771 dtrace_get_operand(x, mode, r_m, wbit, 0);
3781 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND,
3789 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
3799 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
3805 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
3816 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 1);
3821 dtrace_get_modrm(x, &mode, &reg, &r_m);
3825 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 1);
3831 dtrace_get_modrm(x, &mode, &reg, &r_m);
3832 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
3833 dtrace_get_operand(x, mode, r_m, wbit, 2);
3843 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
3849 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3850 dtrace_get_operand(x, mode, r_m, wbit, 1);
3861 dtrace_get_modrm(x, &mode, &reg, &r_m);
3862 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3863 dtrace_get_operand(x, mode, r_m, wbit, 1);
3875 r_m = reg;
3876 dtrace_get_operand(x, mode, r_m, wbit, 1);
3920 dtrace_get_modrm(x, &mode, &reg, &r_m);
3921 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3922 dtrace_get_operand(x, mode, r_m, LONG_OPND, vbit);
3933 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3934 dtrace_get_operand(x, mode, r_m, wbit, 1);
3951 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3952 dtrace_get_operand(x, mode, r_m, wbit, 1);
3965 dtrace_get_modrm(x, &mode, &reg, &r_m);
3966 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
3967 dtrace_get_operand(x, mode, r_m, wbit, 0);
3971 if (cpu_mode == SIZE64 && mode == 3 && r_m == 0) {
3977 } else if (mode == 3 && r_m == 1) {
4008 switch (r_m) {
4027 if (r_m < 1 || r_m > 4)
4040 switch (r_m) {
4075 if (r_m == 0) {
4081 } else if (r_m == 1) {
4087 } else if (r_m == 2) {
4093 } else if (r_m == 3) {
4106 if (r_m == 0) {
4112 } else if (r_m == 1) {
4127 dtrace_get_modrm(x, &mode, &reg, &r_m);
4130 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
4131 dtrace_get_operand(x, mode, r_m, wbit, 0);
4160 dtrace_get_modrm(x, &mode, &reg, &r_m);
4161 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4163 dtrace_get_operand(x, REG_ONLY, r_m, LONG_OPND, 1 - vbit);
4219 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
4225 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 1);
4236 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 0);
4245 dtrace_get_modrm(x, &mode, &reg, &r_m);
4249 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4250 dtrace_get_operand(x, mode, r_m, wbit, 0);
4262 dtrace_get_modrm(x, &mode, &reg, &r_m);
4266 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 1,
4272 THREEOPERAND(x, mode, reg, r_m, rex_prefix, LONG_OPND, XMM_OPND,
4286 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, w2, 1, 1);
4298 dtrace_get_modrm(x, &mode, &reg, &r_m);
4302 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 0);
4312 STANDARD_MODRM(x, mode, reg, r_m, rex_prefix, wbit, 0);
4339 dtrace_get_modrm(x, &mode, &reg, &r_m);
4348 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1);
4356 dtrace_get_modrm(x, &mode, &reg, &r_m);
4365 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
4371 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
4376 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1);
4384 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 0);
4392 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, MM_OPND, 0);
4399 MIXED_MM(x, mode, reg, r_m, rex_prefix, wbit, LONG_OPND, 0);
4405 dtrace_get_modrm(x, &mode, &reg, &r_m);
4408 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4409 dtrace_get_operand(x, mode, r_m, XMM_OPND, 0);
4420 THREEOPERAND(x, mode, reg, r_m, rex_prefix, wbit, XMM_OPND, 1,
4453 FOUROPERAND(x, mode, reg, r_m, rex_prefix, XMM_OPND, XMM_OPND,
4459 ONEOPERAND_TWOIMM(x, mode, reg, r_m, rex_prefix, XMM_OPND, 1);
4474 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
4475 dtrace_get_operand(x, mode, r_m, wbit, 0);
4555 dtrace_rex_adjust(rex_prefix, mode, NULL, &r_m);
4556 dtrace_get_operand(x, mode, r_m, LONG_OPND, 0);
4702 dtrace_get_modrm(x, &mode, &reg, &r_m);
4710 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4711 dtrace_get_operand(x, mode, r_m, BYTE_OPND, 0);
4716 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4717 dtrace_get_operand(x, mode, r_m, LONG_OPND, 0);
4738 dtrace_get_modrm(x, &mode, &reg, &r_m);
4754 dtrace_rex_adjust(rex_prefix, mode, &reg, &r_m);
4755 dtrace_get_operand(x, mode, r_m, BYTE_OPND, 0);
4764 x->d86_opnd[0].d86_opnd[4] = r_m + '0';
4778 x->d86_opnd[vbit].d86_opnd[4] = r_m + '0';
4787 dtrace_get_modrm(x, &mode, &reg, &r_m);
4792 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4793 dtrace_get_operand(x, mode, r_m, wbit, 0);
4799 dtrace_get_modrm(x, &mode, &reg, &r_m);
4800 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4855 dtrace_get_operand(x, mode, r_m, wbit, 0);
4862 dtrace_get_modrm(x, &mode, &reg, &r_m);
4863 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4872 dtrace_get_operand(x, mode, r_m, wbit, 1);
4893 dtrace_get_modrm(x, &mode, &reg, &r_m);
4894 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4903 dtrace_get_operand(x, mode, r_m, vreg->dgr_arg1, 1);
4910 dtrace_get_modrm(x, &mode, &reg, &r_m);
4911 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4923 dtrace_get_operand(x, mode, r_m, wbit, 2);
4929 /* ModR/M.reg := op(VEX.vvvv, ModR/M.r_m, imm8[7:4]) */
4932 dtrace_get_modrm(x, &mode, &reg, &r_m);
4933 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4938 dtrace_get_operand(x, mode, r_m, XMM_OPND, 1);
4943 dtrace_get_operand(x, mode, r_m, LONG_OPND, 1);
4950 dtrace_get_operand(x, mode, r_m, LONG_OPND, 1);
4952 dtrace_get_operand(x, mode, r_m, wbit, 1);
4981 dtrace_get_modrm(x, &mode, &reg, &r_m);
4982 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
4992 dtrace_get_operand(x, mode, r_m, wbit, 0);
5007 dtrace_get_operand(x, mode, r_m, XMM_OPND, 0);
5015 dtrace_get_operand(x, mode, r_m, LONG_OPND, 0);
5018 dtrace_get_operand(x, mode, r_m, wbit, 0);
5027 dtrace_get_modrm(x, &mode, &reg, &r_m);
5028 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5031 dtrace_get_operand(x, mode, r_m, wbit, 1);
5041 dtrace_get_modrm(x, &mode, &reg, &r_m);
5046 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5049 dtrace_get_operand(x, REG_ONLY, r_m, wbit, 1);
5066 dtrace_get_modrm(x, &mode, &reg, &r_m);
5067 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5069 dtrace_get_operand(x, mode, r_m, wbit, vbit - 1);
5080 dtrace_get_modrm(x, &mode, &reg, &r_m);
5081 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5083 dtrace_get_operand(x, mode, r_m, wbit, 0);
5093 dtrace_get_modrm(x, &mode, &reg, &r_m);
5094 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5096 dtrace_get_operand(x, mode, r_m, XMM_OPND, 2);
5106 dtrace_get_modrm(x, &mode, &reg, &r_m);
5107 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5108 dtrace_get_operand(x, mode, r_m, wbit, 1);
5116 dtrace_get_modrm(x, &mode, &reg, &r_m);
5117 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5125 dtrace_get_operand(x, mode, r_m, LONG_OPND, 1);
5127 dtrace_get_operand(x, mode, r_m, wbit, 1);
5136 dtrace_get_modrm(x, &mode, &reg, &r_m);
5137 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5146 dtrace_get_operand(x, mode, r_m, LONG_OPND, 2);
5156 dtrace_get_modrm(x, &mode, &reg, &r_m);
5157 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5159 dtrace_get_operand(x, mode, r_m, XMM_OPND, 2);
5170 dtrace_get_modrm(x, &mode, &reg, &r_m);
5171 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5173 dtrace_get_operand(x, mode, r_m, LONG_OPND, 2);
5181 dtrace_get_modrm(x, &mode, &reg, &r_m);
5182 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5185 dtrace_get_operand(x, mode, r_m, wbit, vbit);
5194 dtrace_get_modrm(x, &mode, &reg, &r_m);
5195 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5196 dtrace_get_operand(x, mode, r_m, wbit, 2);
5206 dtrace_get_modrm(x, &mode, &reg, &r_m);
5207 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5210 dtrace_get_operand(x, REG_ONLY, r_m, wbit, 0);
5230 dtrace_get_modrm(x, &mode, &reg, &r_m);
5231 dtrace_vex_adjust(vex_byte1, mode, &reg, &r_m);
5258 dtrace_get_operand(x, mode, r_m, wbit, 0);