Changeset 86457 in vbox for trunk/include/VBox
- Timestamp:
- Oct 6, 2020 3:08:08 PM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 140761
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r86454 r86457 457 457 #define EPT_E_BIT_WRITE 1 458 458 #define EPT_E_WRITE RT_BIT_64(EPT_E_BIT_WRITE) /**< @see EPT_E_BIT_WRITE */ 459 /** Bit 2 - Executable. */ 459 /** Bit 2 - Executable. 460 * @note This controls supervisor instruction fetching if mode-based 461 * execution control is enabled. */ 460 462 #define EPT_E_BIT_EXECUTE 2 461 463 #define EPT_E_EXECUTE RT_BIT_64(EPT_E_BIT_EXECUTE) /**< @see EPT_E_BIT_EXECUTE */ 462 /** Bit 3 - Page size (not applicable to all levels). */ 463 #define EPT_E_BIT_SIZE 3 464 #define EPT_E_SIZE RT_BIT_64(EPT_E_BIT_SIZE) /**< @see EPT_E_BIT_SIZE */ 465 /** Bits 8-11 & 52-63 - Available for software */ 466 #define EPT_E_AVL UINT64_C(0xfff0000000000f00) 464 /** Bits 3-5 - Memory type mask (leaf only, MBZ). 465 * The memory type is only applicable for leaf entries and MBZ for 466 * non-leaf (causes miconfiguration exit). */ 467 #define EPT_E_TYPE_MASK UINT64_C(0x0038) 468 /** Bits 3-5 - Memory type shifted mask. */ 469 #define EPT_E_TYPE_SMASK UINT64_C(0x0007) 470 /** Bits 3-5 - Memory type shift count. */ 471 #define EPT_E_TYPE_SHIFT 3 472 /** Bits 3-5 - Memory type: UC. */ 473 #define EPT_E_TYPE_UC (UINT64_C(0) << EPT_E_TYPE_SHIFT) 474 /** Bits 3-5 - Memory type: WC. */ 475 #define EPT_E_TYPE_WC (UINT64_C(1) << EPT_E_TYPE_SHIFT) 476 /** Bits 3-5 - Memory type: Invalid (2). */ 477 #define EPT_E_TYPE_INVALID_2 (UINT64_C(2) << EPT_E_TYPE_SHIFT) 478 /** Bits 3-5 - Memory type: Invalid (3). */ 479 #define EPT_E_TYPE_INVALID_3 (UINT64_C(3) << EPT_E_TYPE_SHIFT) 480 /** Bits 3-5 - Memory type: WT. */ 481 #define EPT_E_TYPE_WT (UINT64_C(4) << EPT_E_TYPE_SHIFT) 482 /** Bits 3-5 - Memory type: WP. */ 483 #define EPT_E_TYPE_WP (UINT64_C(5) << EPT_E_TYPE_SHIFT) 484 /** Bits 3-5 - Memory type: WB. */ 485 #define EPT_E_TYPE_WB (UINT64_C(6) << EPT_E_TYPE_SHIFT) 486 487 /** Bit 6 - Ignore page attribute table (leaf, MBZ). */ 488 #define EPT_E_BIT_IGNORE_PAT 6 489 #define EPT_E_IGNORE_PAT RT_BIT_64(EPT_E_BIT_IGNORE_PAT) /**< @see EPT_E_BIT_IGNORE_PAT */ 490 /** Bit 7 - Leaf entry (MBZ in PML4, ignored in PT). */ 491 #define EPT_E_BIT_LEAF 7 492 #define EPT_E_LEAF RT_BIT_64(EPT_E_BIT_LEAF) /**< @see EPT_E_BIT_LEAF */ 493 /** Bit 8 - Accessed (all levels). 494 * @note Ignored and not written when EPTP bit 6 is 0. */ 495 #define EPT_E_BIT_ACCESSED 8 496 #define EPT_E_ACCESSED RT_BIT_64(EPT_E_BIT_ACCESSED) /**< @see EPT_E_BIT_ACCESSED */ 497 /** Bit 9 - Dirty (leaf only). 498 * @note Ignored and not written when EPTP bit 6 is 0. */ 499 #define EPT_E_BIT_DIRTY 9 500 #define EPT_E_DIRTY RT_BIT_64(EPT_E_BIT_DIRTY) /**< @see EPT_E_BIT_DIRTY */ 501 /** Bit 10 - Executable for usermode. 502 * @note This ignored if mode-based execution control is disabled. */ 503 #define EPT_E_BIT_USER_EXECUTE 10 504 #define EPT_E_USER_EXECUTE RT_BIT_64(EPT_E_BIT_USER_EXECUTE) /**< @see EPT_E_BIT_USER_EXECUTE */ 505 506 /* 11 is always ignored (at time of writing) */ 507 467 508 /** Bits 12-51 - Physical Page number of the next level. */ 468 509 #define EPT_E_PG_MASK UINT64_C(0x000ffffffffff000) 469 /** Bits 5-7 - Reserved. */ 470 #define EPT_E_RESERVED UINT64_C(0x00e0) 471 /** Bits 4-7 - Reserved w/o size bit. */ 472 #define EPT_E_RESERVED_NO_SIZE UINT64_C(0x00f0) 510 511 /** Bit 60 - Supervisor shadow stack (leaf only, ignored). 512 * @note Ignored if EPT bit 7 is 0. */ 513 #define EPT_E_BIT_SHADOW_STACK 60 514 #define EPT_E_SHADOW_STACK RT_BIT_64(EPT_E_BIT_SHADOW_STACK) /**< @see EPT_E_BIT_SHADOW_STACK*/ 515 /** Bit 61 - Sub-page write permissions (PT only, ignored). 516 * @note Ignored if sub-page write permissions for EPT is disabled. */ 517 #define EPT_E_BIT_SHADOW_STACK 60 518 #define EPT_E_SHADOW_STACK RT_BIT_64(EPT_E_BIT_SHADOW_STACK) /**< @see EPT_E_BIT_SHADOW_STACK*/ 519 520 /* Bit 62 is always ignored at time of writing. */ 521 522 /** Bit 63 - Supress \#VE (leaf only, ignored). 523 * @note Ignored if EPT violation to \#VE conversion is disabled. */ 524 #define EPT_E_BIT_IGNORE_VE 63 525 #define EPT_E_IGNORE_VE RT_BIT_64(EPT_E_BIT_IGNORE_VE) /**< @see EPT_E_BIT_IGNORE_VE*/ 473 526 /** @} */ 474 527
Note:
See TracChangeset
for help on using the changeset viewer.