VirtualBox

Changeset 2816 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
May 23, 2007 3:09:44 PM (18 years ago)
Author:
vboxsync
Message:

Corrections for 64 bits descriptors

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r2811 r2816  
    494494        }
    495495
    496         pDesc  = &((PX86DESCHC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT];
     496        pDesc  = &((PX86DESCHC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT_HC];
     497#if HC_ARCH_BITS == 64
     498        trBase = pDesc->Gen.u16BaseLow | (pDesc->Gen.u8BaseHigh1 << 16ULL) | (pDesc->Gen.u8BaseHigh2 << 24ULL) | pDesc->Gen.u32BaseHigh3 << 32ULL;
     499#else
    497500        trBase = pDesc->Gen.u16BaseLow | (pDesc->Gen.u8BaseHigh1 << 16) | (pDesc->Gen.u8BaseHigh2 << 24);
     501#endif
    498502        rc = VMXWriteVMCS(VMX_VMCS_HOST_TR_BASE, trBase);
    499503        AssertRC(rc);
     
    10481052            if (val < gdtr.cbGdt)
    10491053            {
    1050                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1054                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10511055                HWACCMR0DumpDescriptor(pDesc, val, "CS: ");
    10521056            }
     
    10561060            if (val < gdtr.cbGdt)
    10571061            {
    1058                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1062                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10591063                HWACCMR0DumpDescriptor(pDesc, val, "DS: ");
    10601064            }
     
    10641068            if (val < gdtr.cbGdt)
    10651069            {
    1066                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1070                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10671071                HWACCMR0DumpDescriptor(pDesc, val, "ES: ");
    10681072            }
     
    10721076            if (val < gdtr.cbGdt)
    10731077            {
    1074                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1078                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10751079                HWACCMR0DumpDescriptor(pDesc, val, "FS: ");
    10761080            }
     
    10801084            if (val < gdtr.cbGdt)
    10811085            {
    1082                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1086                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10831087                HWACCMR0DumpDescriptor(pDesc, val, "GS: ");
    10841088            }
     
    10881092            if (val < gdtr.cbGdt)
    10891093            {
    1090                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1094                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10911095                HWACCMR0DumpDescriptor(pDesc, val, "SS: ");
    10921096            }
     
    10961100            if (val < gdtr.cbGdt)
    10971101            {
    1098                 pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1102                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT_HC];
    10991103                HWACCMR0DumpDescriptor(pDesc, val, "TR: ");
    11001104            }
Note: See TracChangeset for help on using the changeset viewer.

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