VirtualBox

Changeset 30263 in vbox for trunk/include


Ignore:
Timestamp:
Jun 16, 2010 6:31:42 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
62771
Message:

VMM,REM: Only invalidate hidden registers when using raw-mode. Fixes save restore during mode switching code like the windows boot menu. (#5057)

Location:
trunk/include/VBox
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/cpum.h

    r28800 r30263  
    878878VMMDECL(PCCPUMCTXCORE)  CPUMGetGuestCtxCore(PVMCPU pVCpu);
    879879VMMDECL(void)           CPUMSetGuestCtxCore(PVMCPU pVCpu, PCCPUMCTXCORE pCtxCore);
    880 VMMDECL(int)            CPUMRawEnter(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore);
    881 VMMDECL(int)            CPUMRawLeave(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, int rc);
     880VMMR3DECL(int)          CPUMR3RawEnter(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore);
     881VMMR3DECL(int)          CPUMR3RawLeave(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, int rc);
    882882VMMDECL(uint32_t)       CPUMRawGetEFlags(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore);
    883883VMMDECL(void)           CPUMRawSetEFlags(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, uint32_t eflags);
     
    890890 * @{
    891891 */
    892 #define CPUM_CHANGED_FPU_REM            RT_BIT(0)
    893 #define CPUM_CHANGED_CR0                RT_BIT(1)
    894 #define CPUM_CHANGED_CR4                RT_BIT(2)
    895 #define CPUM_CHANGED_GLOBAL_TLB_FLUSH   RT_BIT(3)
    896 #define CPUM_CHANGED_CR3                RT_BIT(4)
    897 #define CPUM_CHANGED_GDTR               RT_BIT(5)
    898 #define CPUM_CHANGED_IDTR               RT_BIT(6)
    899 #define CPUM_CHANGED_LDTR               RT_BIT(7)
    900 #define CPUM_CHANGED_TR                 RT_BIT(8)
    901 #define CPUM_CHANGED_SYSENTER_MSR       RT_BIT(9)
    902 #define CPUM_CHANGED_HIDDEN_SEL_REGS    RT_BIT(10)
    903 #define CPUM_CHANGED_CPUID              RT_BIT(11)
    904 #define CPUM_CHANGED_ALL                (CPUM_CHANGED_FPU_REM|CPUM_CHANGED_CR0|CPUM_CHANGED_CR3|CPUM_CHANGED_CR4|CPUM_CHANGED_GDTR|CPUM_CHANGED_IDTR|CPUM_CHANGED_LDTR|CPUM_CHANGED_TR|CPUM_CHANGED_SYSENTER_MSR|CPUM_CHANGED_HIDDEN_SEL_REGS|CPUM_CHANGED_CPUID)
     892#define CPUM_CHANGED_FPU_REM                    RT_BIT(0)
     893#define CPUM_CHANGED_CR0                        RT_BIT(1)
     894#define CPUM_CHANGED_CR4                        RT_BIT(2)
     895#define CPUM_CHANGED_GLOBAL_TLB_FLUSH           RT_BIT(3)
     896#define CPUM_CHANGED_CR3                        RT_BIT(4)
     897#define CPUM_CHANGED_GDTR                       RT_BIT(5)
     898#define CPUM_CHANGED_IDTR                       RT_BIT(6)
     899#define CPUM_CHANGED_LDTR                       RT_BIT(7)
     900#define CPUM_CHANGED_TR                         RT_BIT(8)
     901#define CPUM_CHANGED_SYSENTER_MSR               RT_BIT(9)
     902#define CPUM_CHANGED_HIDDEN_SEL_REGS            RT_BIT(10)
     903#define CPUM_CHANGED_CPUID                      RT_BIT(11)
     904#define CPUM_CHANGED_ALL                        \
     905    ( CPUM_CHANGED_FPU_REM | CPUM_CHANGED_CR0 | CPUM_CHANGED_CR3 | CPUM_CHANGED_CR4 | CPUM_CHANGED_GDTR | CPUM_CHANGED_IDTR \
     906     | CPUM_CHANGED_LDTR | CPUM_CHANGED_TR | CPUM_CHANGED_SYSENTER_MSR | CPUM_CHANGED_HIDDEN_SEL_REGS | CPUM_CHANGED_CPUID )
     907/** This one is used by raw-mode to indicate that the hidden register
     908 * information is not longer reliable and have to be re-determined.
     909 *
     910 * @remarks This must not be part of CPUM_CHANGED_ALL! */
     911#define CPUM_CHANGED_HIDDEN_SEL_REGS_INVALID    RT_BIT(12)
    905912/** @} */
    906913
    907 VMMDECL(unsigned)       CPUMGetAndClearChangedFlagsREM(PVMCPU pVCpu);
    908914VMMDECL(void)           CPUMSetChangedFlags(PVMCPU pVCpu, uint32_t fChangedFlags);
     915VMMR3DECL(uint32_t)     CPUMR3RemEnter(PVMCPU pVCpu, uint32_t *puCpl);
     916VMMR3DECL(void)         CPUMR3RemLeave(PVMCPU pVCpu, bool fNoOutOfSyncSels);
    909917VMMDECL(bool)           CPUMSupportsFXSR(PVM pVM);
    910918VMMDECL(bool)           CPUMIsHostUsingSysEnter(PVM pVM);
     
    917925VMMDECL(void)           CPUMDeactivateHyperDebugState(PVMCPU pVCpu);
    918926VMMDECL(uint32_t)       CPUMGetGuestCPL(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore);
    919 VMMDECL(bool)           CPUMAreHiddenSelRegsValid(PVM pVM);
     927VMMDECL(bool)           CPUMAreHiddenSelRegsValid(PVMCPU pVCpu);
    920928VMMDECL(CPUMMODE)       CPUMGetGuestMode(PVMCPU pVCpu);
    921929
  • trunk/include/VBox/selm.h

    r28800 r30263  
    7676
    7777VMMDECL(int)        SELMToFlatEx(PVM pVM, DIS_SELREG SelReg, PCCPUMCTXCORE pCtxCore, RTGCPTR Addr, unsigned fFlags, PRTGCPTR ppvGC);
    78 VMMDECL(int)        SELMToFlatBySelEx(PVM pVM, X86EFLAGS eflags, RTSEL Sel, RTGCPTR Addr, PCPUMSELREGHID pHiddenSel, unsigned fFlags, PRTGCPTR ppvGC, uint32_t *pcb);
    79 VMMDECL(int)        SELMValidateAndConvertCSAddr(PVM pVM, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS, PCPUMSELREGHID pHiddenCSSel, RTGCPTR Addr, PRTGCPTR ppvFlat);
    80 VMMDECL(int)        SELMValidateAndConvertCSAddrGCTrap(PVM pVM, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS, RTGCPTR Addr, PRTGCPTR ppvFlat, uint32_t *pcBits);
    81 VMMDECL(DISCPUMODE) SELMGetCpuModeFromSelector(PVM pVM, X86EFLAGS eflags, RTSEL Sel, PCPUMSELREGHID pHiddenSel);
     78VMMDECL(int)        SELMToFlatBySelEx(PVM pVM, X86EFLAGS eflags, RTSEL Sel, RTGCPTR Addr, PCCPUMSELREGHID pHiddenSel,
     79                                      unsigned fFlags, PRTGCPTR ppvGC, uint32_t *pcb);
     80VMMDECL(int)        SELMValidateAndConvertCSAddr(PVM pVM, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS,
     81                                                 PCCPUMSELREGHID pHiddenCSSel, RTGCPTR Addr, PRTGCPTR ppvFlat);
     82VMMDECL(int)        SELMValidateAndConvertCSAddrGCTrap(PVM pVM, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS, RTGCPTR Addr,
     83                                                       PRTGCPTR ppvFlat, uint32_t *pcBits);
     84VMMDECL(DISCPUMODE) SELMGetCpuModeFromSelector(PVM pVM, X86EFLAGS eflags, RTSEL Sel, PCCPUMSELREGHID pHiddenSel);
    8285VMMDECL(int)        SELMGetLDTFromSel(PVM pVM, RTSEL SelLdt, PRTGCPTR ppvLdt, unsigned *pcbLimit);
    8386
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