VirtualBox

Ignore:
Timestamp:
Aug 12, 2013 12:37:34 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87863
Message:

VMM: Debug register handling redo. (only partly tested on AMD-V so far.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/CPUMInternal.h

    r41932 r47660  
    5757
    5858/** Use flags (CPUM::fUseFlags).
    59  * (Don't forget to sync this with CPUMInternal.mac!)
     59 * (Don't forget to sync this with CPUMInternal.mac !)
    6060 * @{ */
    6161/** Used the FPU, SSE or such stuff. */
     
    6464 * REM syncing is clearing this, lazy FPU is setting it. */
    6565#define CPUM_USED_FPU_SINCE_REM         RT_BIT(1)
     66/** The XMM state was manually restored. (AMD only) */
     67#define CPUM_USED_MANUAL_XMM_RESTORE    RT_BIT(2)
     68
    6669/** Host OS is using SYSENTER and we must NULL the CS. */
    67 #define CPUM_USE_SYSENTER               RT_BIT(2)
     70#define CPUM_USE_SYSENTER               RT_BIT(3)
    6871/** Host OS is using SYSENTER and we must NULL the CS. */
    69 #define CPUM_USE_SYSCALL                RT_BIT(3)
    70 /** Debug registers are used by host and must be disabled. */
    71 #define CPUM_USE_DEBUG_REGS_HOST        RT_BIT(4)
    72 /** Enabled use of debug registers in guest context. */
    73 #define CPUM_USE_DEBUG_REGS             RT_BIT(5)
    74 /** The XMM state was manually restored. (AMD only) */
    75 #define CPUM_MANUAL_XMM_RESTORE         RT_BIT(6)
    76 /** Sync the FPU state on entry (32->64 switcher only). */
    77 #define CPUM_SYNC_FPU_STATE             RT_BIT(7)
    78 /** Sync the debug state on entry (32->64 switcher only). */
    79 #define CPUM_SYNC_DEBUG_STATE           RT_BIT(8)
    80 /** Enabled use of hypervisor debug registers in guest context. */
    81 #define CPUM_USE_DEBUG_REGS_HYPER       RT_BIT(9)
     72#define CPUM_USE_SYSCALL                RT_BIT(4)
     73
     74/** Debug registers are used by host and that DR7 and DR6 must be saved and
     75 *  disabled when switching to raw-mode. */
     76#define CPUM_USE_DEBUG_REGS_HOST        RT_BIT(5)
     77/** Records that we've saved the host DRx registers.
     78 * In ring-0 this means all (DR0-7), while in raw-mode context this means DR0-3
     79 * since DR6 and DR7 are covered by CPUM_USE_DEBUG_REGS_HOST. */
     80#define CPUM_USED_DEBUG_REGS_HOST       RT_BIT(6)
     81/** Set to indicate that we should save host DR0-7 and load the hypervisor debug
     82 * registers in the raw-mode world switchers. (See CPUMRecalcHyperDRx.) */
     83#define CPUM_USE_DEBUG_REGS_HYPER       RT_BIT(7)
     84/** Used in ring-0 to indicate that we have loaded the hypervisor debug
     85 * registers. */
     86#define CPUM_USED_DEBUG_REGS_HYPER      RT_BIT(8)
     87/** Used in ring-0 to indicate that we have loaded the guest debug
     88 * registers (DR0-3 and maybe DR6) for direct use by the guest.
     89 * DR7 (and AMD-V DR6) are handled via the VMCB. */
     90#define CPUM_USED_DEBUG_REGS_GUEST      RT_BIT(9)
     91
     92
     93/** Sync the FPU state on next entry (32->64 switcher only). */
     94#define CPUM_SYNC_FPU_STATE             RT_BIT(16)
     95/** Sync the debug state on next entry (32->64 switcher only). */
     96#define CPUM_SYNC_DEBUG_REGS_GUEST      RT_BIT(17)
     97/** Sync the debug state on next entry (32->64 switcher only).
     98 * Almost the same as CPUM_USE_DEBUG_REGS_HYPER in the raw-mode switchers.  */
     99#define CPUM_SYNC_DEBUG_REGS_HYPER      RT_BIT(18)
    82100/** @} */
    83101
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