VirtualBox

Changeset 14581

Show
Ignore:
Timestamp:
11/25/08 17:14:14 (1 month ago)
Author:
vboxsync
Message:

Explicit VMCS field width.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/hwacc_vmx.h

    r14580 r14581  
    644644 * @{ 
    645645 */ 
    646 #define VMX_VMCS_GUEST_FIELD_VPID                               0x0 
    647 #define VMX_VMCS_GUEST_FIELD_ES                                 0x800 
    648 #define VMX_VMCS_GUEST_FIELD_CS                                 0x802 
    649 #define VMX_VMCS_GUEST_FIELD_SS                                 0x804 
    650 #define VMX_VMCS_GUEST_FIELD_DS                                 0x806 
    651 #define VMX_VMCS_GUEST_FIELD_FS                                 0x808 
    652 #define VMX_VMCS_GUEST_FIELD_GS                                 0x80A 
    653 #define VMX_VMCS_GUEST_FIELD_LDTR                               0x80C 
    654 #define VMX_VMCS_GUEST_FIELD_TR                                 0x80E 
     646#define VMX_VMCS16_GUEST_FIELD_VPID                               0x0 
     647#define VMX_VMCS16_GUEST_FIELD_ES                                 0x800 
     648#define VMX_VMCS16_GUEST_FIELD_CS                                 0x802 
     649#define VMX_VMCS16_GUEST_FIELD_SS                                 0x804 
     650#define VMX_VMCS16_GUEST_FIELD_DS                                 0x806 
     651#define VMX_VMCS16_GUEST_FIELD_FS                                 0x808 
     652#define VMX_VMCS16_GUEST_FIELD_GS                                 0x80A 
     653#define VMX_VMCS16_GUEST_FIELD_LDTR                               0x80C 
     654#define VMX_VMCS16_GUEST_FIELD_TR                                 0x80E 
    655655/** @} */ 
    656656 
     
    658658 * @{ 
    659659 */ 
    660 #define VMX_VMCS_HOST_FIELD_ES                                  0xC00 
    661 #define VMX_VMCS_HOST_FIELD_CS                                  0xC02 
    662 #define VMX_VMCS_HOST_FIELD_SS                                  0xC04 
    663 #define VMX_VMCS_HOST_FIELD_DS                                  0xC06 
    664 #define VMX_VMCS_HOST_FIELD_FS                                  0xC08 
    665 #define VMX_VMCS_HOST_FIELD_GS                                  0xC0A 
    666 #define VMX_VMCS_HOST_FIELD_TR                                  0xC0C 
     660#define VMX_VMCS16_HOST_FIELD_ES                                  0xC00 
     661#define VMX_VMCS16_HOST_FIELD_CS                                  0xC02 
     662#define VMX_VMCS16_HOST_FIELD_SS                                  0xC04 
     663#define VMX_VMCS16_HOST_FIELD_DS                                  0xC06 
     664#define VMX_VMCS16_HOST_FIELD_FS                                  0xC08 
     665#define VMX_VMCS16_HOST_FIELD_GS                                  0xC0A 
     666#define VMX_VMCS16_HOST_FIELD_TR                                  0xC0C 
    667667/** @}          */ 
    668668 
     
    925925 * @{ 
    926926 */ 
    927 #define VMX_VMCS_GUEST_ES_LIMIT                                 0x4800 
    928 #define VMX_VMCS_GUEST_CS_LIMIT                                 0x4802 
    929 #define VMX_VMCS_GUEST_SS_LIMIT                                 0x4804 
    930 #define VMX_VMCS_GUEST_DS_LIMIT                                 0x4806 
    931 #define VMX_VMCS_GUEST_FS_LIMIT                                 0x4808 
    932 #define VMX_VMCS_GUEST_GS_LIMIT                                 0x480A 
    933 #define VMX_VMCS_GUEST_LDTR_LIMIT                               0x480C 
    934 #define VMX_VMCS_GUEST_TR_LIMIT                                 0x480E 
    935 #define VMX_VMCS_GUEST_GDTR_LIMIT                               0x4810 
    936 #define VMX_VMCS_GUEST_IDTR_LIMIT                               0x4812 
    937 #define VMX_VMCS_GUEST_ES_ACCESS_RIGHTS                         0x4814 
    938 #define VMX_VMCS_GUEST_CS_ACCESS_RIGHTS                         0x4816 
    939 #define VMX_VMCS_GUEST_SS_ACCESS_RIGHTS                         0x4818 
    940 #define VMX_VMCS_GUEST_DS_ACCESS_RIGHTS                         0x481A 
    941 #define VMX_VMCS_GUEST_FS_ACCESS_RIGHTS                         0x481C 
    942 #define VMX_VMCS_GUEST_GS_ACCESS_RIGHTS                         0x481E 
    943 #define VMX_VMCS_GUEST_LDTR_ACCESS_RIGHTS                       0x4820 
    944 #define VMX_VMCS_GUEST_TR_ACCESS_RIGHTS                         0x4822 
    945 #define VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE                   0x4824 
    946 #define VMX_VMCS_GUEST_ACTIVITY_STATE                           0x4826 
    947 #define VMX_VMCS_GUEST_SYSENTER_CS                              0x482A  /**< MSR IA32_SYSENTER_CS */ 
    948 #define VMX_VMCS_GUEST_PREEMPTION_TIMER_VALUE                   0x482E 
     927#define VMX_VMCS32_GUEST_ES_LIMIT                                 0x4800 
     928#define VMX_VMCS32_GUEST_CS_LIMIT                                 0x4802 
     929#define VMX_VMCS32_GUEST_SS_LIMIT                                 0x4804 
     930#define VMX_VMCS32_GUEST_DS_LIMIT                                 0x4806 
     931#define VMX_VMCS32_GUEST_FS_LIMIT                                 0x4808 
     932#define VMX_VMCS32_GUEST_GS_LIMIT                                 0x480A 
     933#define VMX_VMCS32_GUEST_LDTR_LIMIT                               0x480C 
     934#define VMX_VMCS32_GUEST_TR_LIMIT                                 0x480E 
     935#define VMX_VMCS32_GUEST_GDTR_LIMIT                               0x4810 
     936#define VMX_VMCS32_GUEST_IDTR_LIMIT                               0x4812 
     937#define VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS                         0x4814 
     938#define VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS                         0x4816 
     939#define VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS                         0x4818 
     940#define VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS                         0x481A 
     941#define VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS                         0x481C 
     942#define VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS                         0x481E 
     943#define VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS                       0x4820 
     944#define VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS                         0x4822 
     945#define VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE                   0x4824 
     946#define VMX_VMCS32_GUEST_ACTIVITY_STATE                           0x4826 
     947#define VMX_VMCS32_GUEST_SYSENTER_CS                              0x482A  /**< MSR IA32_SYSENTER_CS */ 
     948#define VMX_VMCS32_GUEST_PREEMPTION_TIMER_VALUE                   0x482E 
    949949/** @} */ 
    950950 
     
    977977 * @{ 
    978978 */ 
    979 #define VMX_VMCS_HOST_SYSENTER_CS                               0x4C00 
     979#define VMX_VMCS32_HOST_SYSENTER_CS                             0x4C00 
    980980/** @} */ 
    981981 
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r14580 r14581  
    816816 
    817817        /* Selector registers. */ 
    818         rc  = VMXWriteVMCS(VMX_VMCS_HOST_FIELD_CS,          ASMGetCS()); 
     818        rc  = VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_CS,          ASMGetCS()); 
    819819        /* Note: VMX is (again) very picky about the RPL of the selectors here; we'll restore them manually. */ 
    820         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_DS,          0); 
    821         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_ES,          0); 
     820        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_DS,          0); 
     821        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_ES,          0); 
    822822#if HC_ARCH_BITS == 32 
    823         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_FS,          0); 
    824         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_GS,          0); 
    825 #endif 
    826         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_SS,          ASMGetSS()); 
     823        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_FS,          0); 
     824        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_GS,          0); 
     825#endif 
     826        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_SS,          ASMGetSS()); 
    827827        SelTR = ASMGetTR(); 
    828         rc |= VMXWriteVMCS(VMX_VMCS_HOST_FIELD_TR,          SelTR); 
     828        rc |= VMXWriteVMCS(VMX_VMCS16_HOST_FIELD_TR,          SelTR); 
    829829        AssertRC(rc); 
    830830        Log2(("VMX_VMCS_HOST_FIELD_CS %08x\n", ASMGetCS())); 
     
    873873        /* Sysenter MSRs. */ 
    874874        /** @todo expensive!! */ 
    875         rc  = VMXWriteVMCS(VMX_VMCS_HOST_SYSENTER_CS,       ASMRdMsr_Low(MSR_IA32_SYSENTER_CS)); 
     875        rc  = VMXWriteVMCS(VMX_VMCS32_HOST_SYSENTER_CS,       ASMRdMsr_Low(MSR_IA32_SYSENTER_CS)); 
    876876        Log2(("VMX_VMCS_HOST_SYSENTER_CS  %08x\n", ASMRdMsr_Low(MSR_IA32_SYSENTER_CS))); 
    877877#if HC_ARCH_BITS == 32 
     
    10571057        if (pCtx->ldtr == 0) 
    10581058        { 
    1059             rc =  VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_LDTR,         0); 
    1060             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_LIMIT,         0); 
    1061             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,          0); 
     1059            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR,         0); 
     1060            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT,         0); 
     1061            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,            0); 
    10621062            /* Note: vmlaunch will fail with 0 or just 0x02. No idea why. */ 
    1063             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_ACCESS_RIGHTS, 0x82 /* present, LDT */); 
     1063            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, 0x82 /* present, LDT */); 
    10641064        } 
    10651065        else 
    10661066        { 
    1067             rc =  VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_LDTR,         pCtx->ldtr); 
    1068             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_LIMIT,         pCtx->ldtrHid.u32Limit); 
    1069             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,          pCtx->ldtrHid.u64Base); 
    1070             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_ACCESS_RIGHTS, pCtx->ldtrHid.Attr.u); 
     1067            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR,         pCtx->ldtr); 
     1068            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT,         pCtx->ldtrHid.u32Limit); 
     1069            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_LDTR_BASE,            pCtx->ldtrHid.u64Base); 
     1070            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, pCtx->ldtrHid.Attr.u); 
    10711071        } 
    10721072        AssertRC(rc); 
     
    10851085            AssertRC(rc); 
    10861086 
    1087             rc =  VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_TR,         0); 
    1088             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_LIMIT,         HWACCM_VTX_TSS_SIZE); 
    1089             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,          GCPhys /* phys = virt in this mode */); 
     1087            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR,         0); 
     1088            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT,         HWACCM_VTX_TSS_SIZE); 
     1089            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,            GCPhys /* phys = virt in this mode */); 
    10901090 
    10911091            X86DESCATTR attr; 
     
    10991099#endif /* HWACCM_VMX_EMULATE_REALMODE */ 
    11001100        { 
    1101             rc =  VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_TR,         pCtx->tr); 
    1102             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_LIMIT,         pCtx->trHid.u32Limit); 
    1103             rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,          pCtx->trHid.u64Base); 
     1101            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR,         pCtx->tr); 
     1102            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT,         pCtx->trHid.u32Limit); 
     1103            rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_BASE,            pCtx->trHid.u64Base); 
    11041104 
    11051105            val = pCtx->trHid.Attr.u; 
     
    11131113 
    11141114        } 
    1115         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_TR_ACCESS_RIGHTS, val); 
     1115        rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS, val); 
    11161116        AssertRC(rc); 
    11171117    } 
     
    11191119    if (pVCpu->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_GUEST_GDTR) 
    11201120    { 
    1121         rc  = VMXWriteVMCS(VMX_VMCS_GUEST_GDTR_LIMIT,       pCtx->gdtr.cbGdt); 
    1122         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_GDTR_BASE,        pCtx->gdtr.pGdt); 
     1121        rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT,       pCtx->gdtr.cbGdt); 
     1122        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_GDTR_BASE,          pCtx->gdtr.pGdt); 
    11231123        AssertRC(rc); 
    11241124    } 
     
    11261126    if (pVCpu->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_GUEST_IDTR) 
    11271127    { 
    1128         rc  = VMXWriteVMCS(VMX_VMCS_GUEST_IDTR_LIMIT,       pCtx->idtr.cbIdt); 
    1129         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_IDTR_BASE,        pCtx->idtr.pIdt); 
     1128        rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT,       pCtx->idtr.cbIdt); 
     1129        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_IDTR_BASE,          pCtx->idtr.pIdt); 
    11301130        AssertRC(rc); 
    11311131    } 
     
    11341134     * Sysenter MSRs (unconditional) 
    11351135     */ 
    1136     rc  = VMXWriteVMCS(VMX_VMCS_GUEST_SYSENTER_CS,      pCtx->SysEnter.cs); 
     1136    rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_SYSENTER_CS,    pCtx->SysEnter.cs); 
    11371137    rc |= VMXWriteVMCS(VMX_VMCS_GUEST_SYSENTER_EIP,     pCtx->SysEnter.eip); 
    11381138    rc |= VMXWriteVMCS(VMX_VMCS_GUEST_SYSENTER_ESP,     pCtx->SysEnter.esp); 
     
    14861486 
    14871487    /* Take care of instruction fusing (sti, mov ss) */ 
    1488     rc |= VMXReadVMCS(VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE, &val); 
     1488    rc |= VMXReadVMCS(VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE, &val); 
    14891489    uInterruptState = val; 
    14901490    if (uInterruptState != 0) 
     
    15421542     * System MSRs 
    15431543     */ 
    1544     VMXReadVMCS(VMX_VMCS_GUEST_SYSENTER_CS,      &val); 
     1544    VMXReadVMCS(VMX_VMCS32_GUEST_SYSENTER_CS,    &val); 
    15451545    pCtx->SysEnter.cs       = val; 
    15461546    VMXReadVMCS(VMX_VMCS_GUEST_SYSENTER_EIP,     &val); 
     
    15521552    VMX_READ_SELREG(LDTR, ldtr); 
    15531553 
    1554     VMXReadVMCS(VMX_VMCS_GUEST_GDTR_LIMIT,       &val); 
     1554    VMXReadVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT,     &val); 
    15551555    pCtx->gdtr.cbGdt        = val; 
    15561556    VMXReadVMCS(VMX_VMCS_GUEST_GDTR_BASE,        &val); 
    15571557    pCtx->gdtr.pGdt         = val; 
    15581558 
    1559     VMXReadVMCS(VMX_VMCS_GUEST_IDTR_LIMIT,       &val); 
     1559    VMXReadVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT,     &val); 
    15601560    pCtx->idtr.cbIdt        = val; 
    15611561    VMXReadVMCS(VMX_VMCS_GUEST_IDTR_BASE,        &val); 
     
    16981698    AssertMsg(pVCpu->hwaccm.s.uCurrentASID >= 1 && pVCpu->hwaccm.s.uCurrentASID < pVM->hwaccm.s.uMaxASID, ("cpu%d VM uCurrentASID = %x\n", pCpu->idCpu, pVCpu->hwaccm.s.uCurrentASID)); 
    16991699 
    1700     int rc  = VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_VPID, pVCpu->hwaccm.s.uCurrentASID); 
     1700    int rc  = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_VPID, pVCpu->hwaccm.s.uCurrentASID); 
    17011701    AssertRC(rc); 
    17021702 
     
    18251825            VM_FF_CLEAR(pVM, VM_FF_INHIBIT_INTERRUPTS); 
    18261826            /* Irq inhibition is no longer active; clear the corresponding VMX state. */ 
    1827             rc = VMXWriteVMCS(VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE,   0); 
     1827            rc = VMXWriteVMCS(VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE,   0); 
    18281828            AssertRC(rc); 
    18291829        } 
     
    18321832    { 
    18331833        /* Irq inhibition is no longer active; clear the corresponding VMX state. */ 
    1834         rc = VMXWriteVMCS(VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE,   0); 
     1834        rc = VMXWriteVMCS(VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE,   0); 
    18351835        AssertRC(rc); 
    18361836    } 
     
    19461946    /* Non-register state Guest Context */ 
    19471947    /** @todo change me according to cpu state */ 
    1948     rc = VMXWriteVMCS(VMX_VMCS_GUEST_ACTIVITY_STATE,           VMX_CMS_GUEST_ACTIVITY_ACTIVE); 
     1948    rc = VMXWriteVMCS(VMX_VMCS32_GUEST_ACTIVITY_STATE,           VMX_CMS_GUEST_ACTIVITY_ACTIVE); 
    19491949    AssertRC(rc); 
    19501950 
     
    32523252            Log(("VMX_VMCS_HOST_CR4 %08x\n", val)); 
    32533253 
    3254             VMXReadVMCS(VMX_VMCS_HOST_FIELD_CS, &val); 
     3254            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_CS, &val); 
    32553255            Log(("VMX_VMCS_HOST_FIELD_CS %08x\n", val)); 
    32563256 
     
    32643264            } 
    32653265 
    3266             VMXReadVMCS(VMX_VMCS_HOST_FIELD_DS, &val); 
     3266            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_DS, &val); 
    32673267            Log(("VMX_VMCS_HOST_FIELD_DS %08x\n", val)); 
    32683268            if (val < gdtr.cbGdt) 
     
    32723272            } 
    32733273 
    3274             VMXReadVMCS(VMX_VMCS_HOST_FIELD_ES, &val); 
     3274            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_ES, &val); 
    32753275            Log(("VMX_VMCS_HOST_FIELD_ES %08x\n", val)); 
    32763276            if (val < gdtr.cbGdt) 
     
    32803280            } 
    32813281 
    3282             VMXReadVMCS(VMX_VMCS_HOST_FIELD_FS, &val); 
    3283             Log(("VMX_VMCS_HOST_FIELD_FS %08x\n", val)); 
     3282            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_FS, &val); 
     3283            Log(("VMX_VMCS16_HOST_FIELD_FS %08x\n", val)); 
    32843284            if (val < gdtr.cbGdt) 
    32853285            { 
     
    32883288            } 
    32893289 
    3290             VMXReadVMCS(VMX_VMCS_HOST_FIELD_GS, &val); 
    3291             Log(("VMX_VMCS_HOST_FIELD_GS %08x\n", val)); 
     3290            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_GS, &val); 
     3291            Log(("VMX_VMCS16_HOST_FIELD_GS %08x\n", val)); 
    32923292            if (val < gdtr.cbGdt) 
    32933293            { 
     
    32963296            } 
    32973297 
    3298             VMXReadVMCS(VMX_VMCS_HOST_FIELD_SS, &val); 
    3299             Log(("VMX_VMCS_HOST_FIELD_SS %08x\n", val)); 
     3298            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_SS, &val); 
     3299            Log(("VMX_VMCS16_HOST_FIELD_SS %08x\n", val)); 
    33003300            if (val < gdtr.cbGdt) 
    33013301            { 
     
    33043304            } 
    33053305 
    3306             VMXReadVMCS(VMX_VMCS_HOST_FIELD_TR, &val); 
    3307             Log(("VMX_VMCS_HOST_FIELD_TR %08x\n", val)); 
     3306            VMXReadVMCS(VMX_VMCS16_HOST_FIELD_TR, &val); 
     3307            Log(("VMX_VMCS16_HOST_FIELD_TR %08x\n", val)); 
    33083308            if (val < gdtr.cbGdt) 
    33093309            { 
     
    33203320            Log(("VMX_VMCS_HOST_IDTR_BASE %RHv\n", val)); 
    33213321 
    3322             VMXReadVMCS(VMX_VMCS_HOST_SYSENTER_CS, &val); 
     3322            VMXReadVMCS(VMX_VMCS32_HOST_SYSENTER_CS, &val); 
    33233323            Log(("VMX_VMCS_HOST_SYSENTER_CS  %08x\n", val)); 
    33243324 
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.h

    r14366 r14581  
    142142#define VMX_WRITE_SELREG(REG, reg) \ 
    143143{                                                                                               \ 
    144         rc  = VMXWriteVMCS(VMX_VMCS_GUEST_FIELD_##REG,      pCtx->reg);                         \ 
    145         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_LIMIT,    pCtx->reg##Hid.u32Limit);           \ 
     144        rc  = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_##REG,      pCtx->reg);                         \ 
     145        rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,    pCtx->reg##Hid.u32Limit);           \ 
    146146        rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_BASE,     pCtx->reg##Hid.u64Base);            \ 
    147147        if ((pCtx->eflags.u32 & X86_EFL_VM))                                                    \ 
     
    161161            val = 0x10000;  /* Invalid guest state error otherwise. (BIT(16) = Unusable) */     \ 
    162162                                                                                                \ 
    163         rc |= VMXWriteVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, val);                          \ 
     163        rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, val);                          \ 
    164164} 
    165165 
    166166#define VMX_READ_SELREG(REG, reg) \ 
    167167{                                                                    \ 
    168         VMXReadVMCS(VMX_VMCS_GUEST_FIELD_##REG,           &val);     \ 
     168        VMXReadVMCS(VMX_VMCS16_GUEST_FIELD_##REG,           &val);   \ 
    169169        pCtx->reg                = val;                              \ 
    170         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_LIMIT,         &val);     \ 
     170        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,         &val);   \ 
    171171        pCtx->reg##Hid.u32Limit    = val;                            \ 
    172172        VMXReadVMCS(VMX_VMCS_GUEST_##REG##_BASE,          &val);     \ 
    173173        pCtx->reg##Hid.u64Base     = val;                            \ 
    174         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, &val);     \ 
     174        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &val);   \ 
    175175        pCtx->reg##Hid.Attr.u    = val;                              \ 
    176176} 
     
    178178#define VMX_LOG_SELREG(REG, szSelReg) \ 
    179179{                                                                    \ 
    180         VMXReadVMCS(VMX_VMCS_GUEST_FIELD_##REG,           &val);     \ 
     180        VMXReadVMCS(VMX_VMCS16_GUEST_FIELD_##REG,           &val);   \ 
    181181        Log(("%s Selector     %x\n", szSelReg, val));                \ 
    182         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_LIMIT,         &val);     \ 
     182        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,         &val);   \ 
    183183        Log(("%s Limit        %x\n", szSelReg, val));                \ 
    184184        VMXReadVMCS(VMX_VMCS_GUEST_##REG##_BASE,          &val);     \ 
    185185        Log(("%s Base         %RX64\n", szSelReg, val));             \ 
    186         VMXReadVMCS(VMX_VMCS_GUEST_##REG##_ACCESS_RIGHTS, &val);     \ 
     186        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &val);   \ 
    187187        Log(("%s Attributes   %x\n", szSelReg, val));                \ 
    188188} 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy