VirtualBox

Changeset 12698 in vbox


Ignore:
Timestamp:
Sep 24, 2008 3:47:30 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
37005
Message:

Corrections

Location:
trunk/src/VBox/VMM/VMMR0
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.h

    r12653 r12698  
    141141
    142142#define SVM_WRITE_SELREG(REG, reg)                                      \
     143{                                                                       \
    143144        pVMCB->guest.REG.u16Sel   = pCtx->reg;                          \
    144145        pVMCB->guest.REG.u32Limit = pCtx->reg##Hid.u32Limit;            \
    145146        pVMCB->guest.REG.u64Base  = pCtx->reg##Hid.u64Base;             \
    146         pVMCB->guest.REG.u16Attr  = SVM_HIDSEGATTR_VMX2SVM(pCtx->reg##Hid.Attr.u);
     147        pVMCB->guest.REG.u16Attr  = SVM_HIDSEGATTR_VMX2SVM(pCtx->reg##Hid.Attr.u); \
     148}
    147149
    148150#define SVM_READ_SELREG(REG, reg)                                       \
     151{                                                                       \
    149152        pCtx->reg                = pVMCB->guest.REG.u16Sel;             \
    150153        pCtx->reg##Hid.u32Limit  = pVMCB->guest.REG.u32Limit;           \
    151154        pCtx->reg##Hid.u64Base   = pVMCB->guest.REG.u64Base;            \
    152         pCtx->reg##Hid.Attr.u    = SVM_HIDSEGATTR_SVM2VMX(pVMCB->guest.REG.u16Attr);
     155        pCtx->reg##Hid.Attr.u    = SVM_HIDSEGATTR_SVM2VMX(pVMCB->guest.REG.u16Attr); \
     156}
    153157
    154158#endif /* IN_RING0 */
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r12697 r12698  
    15561556    /* In real mode we have a fake TSS, so only sync it back when it's supposed to be valid. */
    15571557    if (pCtx->cr0 & X86_CR0_PROTECTION_ENABLE)
     1558    {
    15581559        VMX_READ_SELREG(TR, tr);
     1560    }
     1561    else
     1562        /* Force a TR resync every time in case we switch modes. */
     1563        pVM->hwaccm.s.fContextUseFlags |= HWACCM_CHANGED_GUEST_TR;
    15591564
    15601565    VMXReadVMCS(VMX_VMCS_GUEST_GDTR_LIMIT,       &val);
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.h

    r12653 r12698  
    138138
    139139#define VMX_WRITE_SELREG(REG, reg) \
     140{                                                                                               \
    140141        rc  = VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_##REG,      pCtx->reg);                         \
    141142        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_LIMIT,    pCtx->reg##Hid.u32Limit);           \
     
    149150            val = 0x10000;  /* Invalid guest state error otherwise. (BIT(16) = Unusable) */     \
    150151                                                                                                \
    151         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, val);
     152        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, val);                          \
     153}
    152154
    153155#define VMX_READ_SELREG(REG, reg) \
     156{                                                                    \
    154157        VMXReadVMCS(VMX_VMCS_GUEST_FIELD_##REG,           &val);     \
    155158        pCtx->reg                = val;                              \
     
    159162        pCtx->reg##Hid.u64Base     = val;                            \
    160163        VMXReadVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, &val);     \
    161         pCtx->reg##Hid.Attr.u    = val;
     164        pCtx->reg##Hid.Attr.u    = val;                              \
     165}
    162166
    163167#define VMX_LOG_SELREG(REG, szSelReg) \
     168{                                                                    \
    164169        VMXReadVMCS(VMX_VMCS_GUEST_FIELD_##REG,           &val);     \
    165170        Log(("%s Selector     %x\n", szSelReg, val));                \
     
    169174        Log(("%s Base         %RX64\n", szSelReg, val));             \
    170175        VMXReadVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, &val);     \
    171         Log(("%s Attributes   %x\n", szSelReg, val));
     176        Log(("%s Attributes   %x\n", szSelReg, val));                \
     177}
    172178
    173179
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