Changeset 73422 in vbox for trunk/include
- Timestamp:
- Aug 1, 2018 1:27:26 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 124045
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r73406 r73422 2187 2187 2188 2188 2189 /** @name VMX_ XDTR_INSINFO_XXX - VMX_EXIT_XDTR_ACCESS instruction information.2189 /** @name VMX_BF_XXTR_INSINFO_XXX - VMX_EXIT_XDTR_ACCESS instruction information. 2190 2190 * Found in VMX_VMCS32_RO_EXIT_INSTR_INFO. 2191 2191 * @{ 2192 2192 */ 2193 2193 /** Address calculation scaling field (powers of two). */ 2194 #define VMX_ XDTR_INSINFO_SCALE_SHIFT02195 #define VMX_ XDTR_INSINFO_SCALE_MASKUINT32_C(0x00000003)2194 #define VMX_BF_XDTR_INSINFO_SCALE_SHIFT 0 2195 #define VMX_BF_XDTR_INSINFO_SCALE_MASK UINT32_C(0x00000003) 2196 2196 /** Bits 2 thru 6 are undefined. */ 2197 #define VMX_ XDTR_INSINFO_UNDEF_2_6_SHIFT22198 #define VMX_ XDTR_INSINFO_UNDEF_2_6_MASKUINT32_C(0x0000007c)2197 #define VMX_BF_XDTR_INSINFO_UNDEF_2_6_SHIFT 2 2198 #define VMX_BF_XDTR_INSINFO_UNDEF_2_6_MASK UINT32_C(0x0000007c) 2199 2199 /** Address size, only 0(=16), 1(=32) and 2(=64) are defined. 2200 2200 * @remarks anyone's guess why this is a 3 bit field... */ 2201 #define VMX_ XDTR_INSINFO_ADDR_SIZE_SHIFT72202 #define VMX_ XDTR_INSINFO_ADDR_SIZE_MASKUINT32_C(0x00000380)2201 #define VMX_BF_XDTR_INSINFO_ADDR_SIZE_SHIFT 7 2202 #define VMX_BF_XDTR_INSINFO_ADDR_SIZE_MASK UINT32_C(0x00000380) 2203 2203 /** Bit 10 is defined as zero. */ 2204 #define VMX_ XDTR_INSINFO_ZERO_10_SHIFT102205 #define VMX_ XDTR_INSINFO_ZERO_10_MASKUINT32_C(0x00000400)2204 #define VMX_BF_XDTR_INSINFO_ZERO_10_SHIFT 10 2205 #define VMX_BF_XDTR_INSINFO_ZERO_10_MASK UINT32_C(0x00000400) 2206 2206 /** Operand size, either (1=)32-bit or (0=)16-bit, but get this, it's undefined 2207 2207 * for exits from 64-bit code as the operand size there is fixed. */ 2208 #define VMX_ XDTR_INSINFO_OP_SIZE_SHIFT112209 #define VMX_ XDTR_INSINFO_OP_SIZE_MASKUINT32_C(0x00000800)2208 #define VMX_BF_XDTR_INSINFO_OP_SIZE_SHIFT 11 2209 #define VMX_BF_XDTR_INSINFO_OP_SIZE_MASK UINT32_C(0x00000800) 2210 2210 /** Bits 12 thru 14 are undefined. */ 2211 #define VMX_ XDTR_INSINFO_UNDEF_12_14_SHIFT122212 #define VMX_ XDTR_INSINFO_UNDEF_12_14_MASKUINT32_C(0x00007000)2211 #define VMX_BF_XDTR_INSINFO_UNDEF_12_14_SHIFT 12 2212 #define VMX_BF_XDTR_INSINFO_UNDEF_12_14_MASK UINT32_C(0x00007000) 2213 2213 /** Applicable segment register (X86_SREG_XXX values). */ 2214 #define VMX_ XDTR_INSINFO_SREG_SHIFT152215 #define VMX_ XDTR_INSINFO_SREG_MASKUINT32_C(0x00038000)2214 #define VMX_BF_XDTR_INSINFO_SREG_SHIFT 15 2215 #define VMX_BF_XDTR_INSINFO_SREG_MASK UINT32_C(0x00038000) 2216 2216 /** Index register (X86_GREG_XXX values). Undefined if HAS_INDEX_REG is clear. */ 2217 #define VMX_ XDTR_INSINFO_INDEX_REG_SHIFT182218 #define VMX_ XDTR_INSINFO_INDEX_REG_MASKUINT32_C(0x003c0000)2219 /** Is VMX_ XDTR_INSINFO_INDEX_REG_XXX valid (=1) or not (=0). */2220 #define VMX_ XDTR_INSINFO_HAS_INDEX_REG_SHIFT222221 #define VMX_ XDTR_INSINFO_HAS_INDEX_REG_MASKUINT32_C(0x00400000)2217 #define VMX_BF_XDTR_INSINFO_INDEX_REG_SHIFT 18 2218 #define VMX_BF_XDTR_INSINFO_INDEX_REG_MASK UINT32_C(0x003c0000) 2219 /** Is VMX_BF_XDTR_INSINFO_INDEX_REG_XXX valid (=1) or not (=0). */ 2220 #define VMX_BF_XDTR_INSINFO_HAS_INDEX_REG_SHIFT 22 2221 #define VMX_BF_XDTR_INSINFO_HAS_INDEX_REG_MASK UINT32_C(0x00400000) 2222 2222 /** Base register (X86_GREG_XXX values). Undefined if HAS_BASE_REG is clear. */ 2223 #define VMX_ XDTR_INSINFO_BASE_REG_SHIFT232224 #define VMX_ XDTR_INSINFO_BASE_REG_MASKUINT32_C(0x07800000)2223 #define VMX_BF_XDTR_INSINFO_BASE_REG_SHIFT 23 2224 #define VMX_BF_XDTR_INSINFO_BASE_REG_MASK UINT32_C(0x07800000) 2225 2225 /** Is VMX_XDTR_INSINFO_BASE_REG_XXX valid (=1) or not (=0). */ 2226 #define VMX_ XDTR_INSINFO_HAS_BASE_REG_SHIFT272227 #define VMX_ XDTR_INSINFO_HAS_BASE_REG_MASKUINT32_C(0x08000000)2228 /** The instruction identity (VMX_XDTR_INSINFO_II_XXX values) */2229 #define VMX_ XDTR_INSINFO_INSTR_ID_SHIFT282230 #define VMX_ XDTR_INSINFO_INSTR_ID_MASKUINT32_C(0x30000000)2226 #define VMX_BF_XDTR_INSINFO_HAS_BASE_REG_SHIFT 27 2227 #define VMX_BF_XDTR_INSINFO_HAS_BASE_REG_MASK UINT32_C(0x08000000) 2228 /** The instruction identity (VMX_XDTR_INSINFO_II_XXX values). */ 2229 #define VMX_BF_XDTR_INSINFO_INSTR_ID_SHIFT 28 2230 #define VMX_BF_XDTR_INSINFO_INSTR_ID_MASK UINT32_C(0x30000000) 2231 2231 #define VMX_XDTR_INSINFO_II_SGDT 0 /**< Instruction ID: SGDT */ 2232 2232 #define VMX_XDTR_INSINFO_II_SIDT 1 /**< Instruction ID: SIDT */ … … 2234 2234 #define VMX_XDTR_INSINFO_II_LIDT 3 /**< Instruction ID: LIDT */ 2235 2235 /** Bits 30 & 31 are undefined. */ 2236 #define VMX_ XDTR_INSINFO_UNDEF_30_31_SHIFT302237 #define VMX_ XDTR_INSINFO_UNDEF_30_31_MASKUINT32_C(0xc0000000)2238 RT_BF_ASSERT_COMPILE_CHECKS(VMX_ XDTR_INSINFO_, UINT32_C(0), UINT32_MAX,2236 #define VMX_BF_XDTR_INSINFO_UNDEF_30_31_SHIFT 30 2237 #define VMX_BF_XDTR_INSINFO_UNDEF_30_31_MASK UINT32_C(0xc0000000) 2238 RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_XDTR_INSINFO_, UINT32_C(0), UINT32_MAX, 2239 2239 (SCALE, UNDEF_2_6, ADDR_SIZE, ZERO_10, OP_SIZE, UNDEF_12_14, SREG, INDEX_REG, HAS_INDEX_REG, 2240 2240 BASE_REG, HAS_BASE_REG, INSTR_ID, UNDEF_30_31)); … … 2242 2242 2243 2243 2244 /** @name VMX_ YYTR_INSINFO_XXX - VMX_EXIT_TR_ACCESS instruction information.2244 /** @name VMX_BF_YYTR_INSINFO_XXX - VMX_EXIT_TR_ACCESS instruction information. 2245 2245 * Found in VMX_VMCS32_RO_EXIT_INSTR_INFO. 2246 * This is similar to VMX_ XDTR_INSINFO_XXX.2246 * This is similar to VMX_BF_XDTR_INSINFO_XXX. 2247 2247 * @{ 2248 2248 */ 2249 2249 /** Address calculation scaling field (powers of two). */ 2250 #define VMX_ YYTR_INSINFO_SCALE_SHIFT02251 #define VMX_ YYTR_INSINFO_SCALE_MASKUINT32_C(0x00000003)2250 #define VMX_BF_YYTR_INSINFO_SCALE_SHIFT 0 2251 #define VMX_BF_YYTR_INSINFO_SCALE_MASK UINT32_C(0x00000003) 2252 2252 /** Bit 2 is undefined. */ 2253 #define VMX_ YYTR_INSINFO_UNDEF_2_SHIFT22254 #define VMX_ YYTR_INSINFO_UNDEF_2_MASKUINT32_C(0x00000004)2253 #define VMX_BF_YYTR_INSINFO_UNDEF_2_SHIFT 2 2254 #define VMX_BF_YYTR_INSINFO_UNDEF_2_MASK UINT32_C(0x00000004) 2255 2255 /** Register operand 1. Undefined if VMX_YYTR_INSINFO_HAS_REG1 is clear. */ 2256 #define VMX_ YYTR_INSINFO_REG1_SHIFT32257 #define VMX_ YYTR_INSINFO_REG1_MASKUINT32_C(0x00000078)2256 #define VMX_BF_YYTR_INSINFO_REG1_SHIFT 3 2257 #define VMX_BF_YYTR_INSINFO_REG1_MASK UINT32_C(0x00000078) 2258 2258 /** Address size, only 0(=16), 1(=32) and 2(=64) are defined. 2259 2259 * @remarks anyone's guess why this is a 3 bit field... */ 2260 #define VMX_ YYTR_INSINFO_ADDR_SIZE_SHIFT72261 #define VMX_ YYTR_INSINFO_ADDR_SIZE_MASKUINT32_C(0x00000380)2260 #define VMX_BF_YYTR_INSINFO_ADDR_SIZE_SHIFT 7 2261 #define VMX_BF_YYTR_INSINFO_ADDR_SIZE_MASK UINT32_C(0x00000380) 2262 2262 /** Is VMX_YYTR_INSINFO_REG1_XXX valid (=1) or not (=0). */ 2263 #define VMX_ YYTR_INSINFO_HAS_REG1_SHIFT102264 #define VMX_ YYTR_INSINFO_HAS_REG1_MASKUINT32_C(0x00000400)2263 #define VMX_BF_YYTR_INSINFO_HAS_REG1_SHIFT 10 2264 #define VMX_BF_YYTR_INSINFO_HAS_REG1_MASK UINT32_C(0x00000400) 2265 2265 /** Bits 11 thru 14 are undefined. */ 2266 #define VMX_ YYTR_INSINFO_UNDEF_11_14_SHIFT112267 #define VMX_ YYTR_INSINFO_UNDEF_11_14_MASKUINT32_C(0x00007800)2266 #define VMX_BF_YYTR_INSINFO_UNDEF_11_14_SHIFT 11 2267 #define VMX_BF_YYTR_INSINFO_UNDEF_11_14_MASK UINT32_C(0x00007800) 2268 2268 /** Applicable segment register (X86_SREG_XXX values). */ 2269 #define VMX_ YYTR_INSINFO_SREG_SHIFT152270 #define VMX_ YYTR_INSINFO_SREG_MASKUINT32_C(0x00038000)2269 #define VMX_BF_YYTR_INSINFO_SREG_SHIFT 15 2270 #define VMX_BF_YYTR_INSINFO_SREG_MASK UINT32_C(0x00038000) 2271 2271 /** Index register (X86_GREG_XXX values). Undefined if HAS_INDEX_REG is clear. */ 2272 #define VMX_ YYTR_INSINFO_INDEX_REG_SHIFT182273 #define VMX_ YYTR_INSINFO_INDEX_REG_MASKUINT32_C(0x003c0000)2272 #define VMX_BF_YYTR_INSINFO_INDEX_REG_SHIFT 18 2273 #define VMX_BF_YYTR_INSINFO_INDEX_REG_MASK UINT32_C(0x003c0000) 2274 2274 /** Is VMX_YYTR_INSINFO_INDEX_REG_XXX valid (=1) or not (=0). */ 2275 #define VMX_ YYTR_INSINFO_HAS_INDEX_REG_SHIFT222276 #define VMX_ YYTR_INSINFO_HAS_INDEX_REG_MASKUINT32_C(0x00400000)2275 #define VMX_BF_YYTR_INSINFO_HAS_INDEX_REG_SHIFT 22 2276 #define VMX_BF_YYTR_INSINFO_HAS_INDEX_REG_MASK UINT32_C(0x00400000) 2277 2277 /** Base register (X86_GREG_XXX values). Undefined if HAS_BASE_REG is clear. */ 2278 #define VMX_ YYTR_INSINFO_BASE_REG_SHIFT232279 #define VMX_ YYTR_INSINFO_BASE_REG_MASKUINT32_C(0x07800000)2278 #define VMX_BF_YYTR_INSINFO_BASE_REG_SHIFT 23 2279 #define VMX_BF_YYTR_INSINFO_BASE_REG_MASK UINT32_C(0x07800000) 2280 2280 /** Is VMX_YYTR_INSINFO_BASE_REG_XXX valid (=1) or not (=0). */ 2281 #define VMX_ YYTR_INSINFO_HAS_BASE_REG_SHIFT272282 #define VMX_ YYTR_INSINFO_HAS_BASE_REG_MASKUINT32_C(0x08000000)2281 #define VMX_BF_YYTR_INSINFO_HAS_BASE_REG_SHIFT 27 2282 #define VMX_BF_YYTR_INSINFO_HAS_BASE_REG_MASK UINT32_C(0x08000000) 2283 2283 /** The instruction identity (VMX_YYTR_INSINFO_II_XXX values) */ 2284 #define VMX_ YYTR_INSINFO_INSTR_ID_SHIFT282285 #define VMX_ YYTR_INSINFO_INSTR_ID_MASKUINT32_C(0x30000000)2284 #define VMX_BF_YYTR_INSINFO_INSTR_ID_SHIFT 28 2285 #define VMX_BF_YYTR_INSINFO_INSTR_ID_MASK UINT32_C(0x30000000) 2286 2286 #define VMX_YYTR_INSINFO_II_SLDT 0 /**< Instruction ID: SLDT */ 2287 2287 #define VMX_YYTR_INSINFO_II_STR 1 /**< Instruction ID: STR */ … … 2289 2289 #define VMX_YYTR_INSINFO_II_LTR 3 /**< Instruction ID: LTR */ 2290 2290 /** Bits 30 & 31 are undefined. */ 2291 #define VMX_ YYTR_INSINFO_UNDEF_30_31_SHIFT302292 #define VMX_ YYTR_INSINFO_UNDEF_30_31_MASKUINT32_C(0xc0000000)2293 RT_BF_ASSERT_COMPILE_CHECKS(VMX_ YYTR_INSINFO_, UINT32_C(0), UINT32_MAX,2291 #define VMX_BF_YYTR_INSINFO_UNDEF_30_31_SHIFT 30 2292 #define VMX_BF_YYTR_INSINFO_UNDEF_30_31_MASK UINT32_C(0xc0000000) 2293 RT_BF_ASSERT_COMPILE_CHECKS(VMX_BF_YYTR_INSINFO_, UINT32_C(0), UINT32_MAX, 2294 2294 (SCALE, UNDEF_2, REG1, ADDR_SIZE, HAS_REG1, UNDEF_11_14, SREG, INDEX_REG, HAS_INDEX_REG, 2295 2295 BASE_REG, HAS_BASE_REG, INSTR_ID, UNDEF_30_31));
Note:
See TracChangeset
for help on using the changeset viewer.