VirtualBox

Changeset 86457 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Oct 6, 2020 3:08:08 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
140761
Message:

hm_vmx.h: Added more generic EPT defines (gcc 10). bugref:9841 bugref:9746

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r86454 r86457  
    457457#define EPT_E_BIT_WRITE         1
    458458#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. */
    460462#define EPT_E_BIT_EXECUTE       2
    461463#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
    467508/** Bits 12-51 - Physical Page number of the next level. */
    468509#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*/
    473526/** @} */
    474527
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette