VirtualBox

Changeset 43700 in vbox


Ignore:
Timestamp:
Oct 22, 2012 3:15:51 PM (12 years ago)
Author:
vboxsync
Message:

HM: bits.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/hm_vmx.h

    r43657 r43700  
    735735 * @{
    736736 */
    737 #define VMX_VMCS_HOST_FIELD_PAT_FULL                            0x2C00
    738 #define VMX_VMCS_HOST_FIELD_PAT_HIGH                            0x2C01
    739 #define VMX_VMCS_HOST_FIELD_EFER_FULL                           0x2C02
    740 #define VMX_VMCS_HOST_FIELD_EFER_HIGH                           0x2C03
    741 #define VMX_VMCS_HOST_PERF_GLOBAL_CTRL_FULL                     0x2C04      /**< MSR IA32_PERF_GLOBAL_CTRL */
    742 #define VMX_VMCS_HOST_PERF_GLOBAL_CTRL_HIGH                     0x2C05      /**< MSR IA32_PERF_GLOBAL_CTRL */
     737#define VMX_VMCS64_HOST_FIELD_PAT_FULL                            0x2C00
     738#define VMX_VMCS64_HOST_FIELD_PAT_HIGH                            0x2C01
     739#define VMX_VMCS64_HOST_FIELD_EFER_FULL                           0x2C02
     740#define VMX_VMCS64_HOST_FIELD_EFER_HIGH                           0x2C03
     741#define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_FULL                     0x2C04      /**< MSR IA32_PERF_GLOBAL_CTRL */
     742#define VMX_VMCS64_HOST_PERF_GLOBAL_CTRL_HIGH                     0x2C05      /**< MSR IA32_PERF_GLOBAL_CTRL */
    743743/** @}          */
    744744
     
    747747 * @{
    748748 */
    749 #define VMX_VMCS_CTRL_IO_BITMAP_A_FULL                          0x2000
    750 #define VMX_VMCS_CTRL_IO_BITMAP_A_HIGH                          0x2001
    751 #define VMX_VMCS_CTRL_IO_BITMAP_B_FULL                          0x2002
    752 #define VMX_VMCS_CTRL_IO_BITMAP_B_HIGH                          0x2003
     749#define VMX_VMCS64_CTRL_IO_BITMAP_A_FULL                          0x2000
     750#define VMX_VMCS64_CTRL_IO_BITMAP_A_HIGH                          0x2001
     751#define VMX_VMCS64_CTRL_IO_BITMAP_B_FULL                          0x2002
     752#define VMX_VMCS64_CTRL_IO_BITMAP_B_HIGH                          0x2003
    753753
    754754/* Optional */
    755 #define VMX_VMCS_CTRL_MSR_BITMAP_FULL                           0x2004
    756 #define VMX_VMCS_CTRL_MSR_BITMAP_HIGH                           0x2005
    757 
    758 #define VMX_VMCS_CTRL_VMEXIT_MSR_STORE_FULL                     0x2006
    759 #define VMX_VMCS_CTRL_VMEXIT_MSR_STORE_HIGH                     0x2007
    760 #define VMX_VMCS_CTRL_VMEXIT_MSR_LOAD_FULL                      0x2008
    761 #define VMX_VMCS_CTRL_VMEXIT_MSR_LOAD_HIGH                      0x2009
    762 
    763 #define VMX_VMCS_CTRL_VMENTRY_MSR_LOAD_FULL                     0x200A
    764 #define VMX_VMCS_CTRL_VMENTRY_MSR_LOAD_HIGH                     0x200B
    765 
    766 #define VMX_VMCS_CTRL_EXEC_VMCS_PTR_FULL                        0x200C
    767 #define VMX_VMCS_CTRL_EXEC_VMCS_PTR_HIGH                        0x200D
    768 
    769 #define VMX_VMCS_CTRL_TSC_OFFSET_FULL                           0x2010
    770 #define VMX_VMCS_CTRL_TSC_OFFSET_HIGH                           0x2011
     755#define VMX_VMCS64_CTRL_MSR_BITMAP_FULL                           0x2004
     756#define VMX_VMCS64_CTRL_MSR_BITMAP_HIGH                           0x2005
     757
     758#define VMX_VMCS64_CTRL_VMEXIT_MSR_STORE_FULL                     0x2006
     759#define VMX_VMCS64_CTRL_VMEXIT_MSR_STORE_HIGH                     0x2007
     760#define VMX_VMCS64_CTRL_VMEXIT_MSR_LOAD_FULL                      0x2008
     761#define VMX_VMCS64_CTRL_VMEXIT_MSR_LOAD_HIGH                      0x2009
     762
     763#define VMX_VMCS64_CTRL_VMENTRY_MSR_LOAD_FULL                     0x200A
     764#define VMX_VMCS64_CTRL_VMENTRY_MSR_LOAD_HIGH                     0x200B
     765
     766#define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_FULL                        0x200C
     767#define VMX_VMCS64_CTRL_EXEC_VMCS_PTR_HIGH                        0x200D
     768
     769#define VMX_VMCS64_CTRL_TSC_OFFSET_FULL                           0x2010
     770#define VMX_VMCS64_CTRL_TSC_OFFSET_HIGH                           0x2011
    771771
    772772/** Optional (VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW) */
    773 #define VMX_VMCS_CTRL_VAPIC_PAGEADDR_FULL                       0x2012
    774 #define VMX_VMCS_CTRL_VAPIC_PAGEADDR_HIGH                       0x2013
     773#define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL                       0x2012
     774#define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_HIGH                       0x2013
    775775
    776776/** Optional (VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC) */
    777 #define VMX_VMCS_CTRL_APIC_ACCESSADDR_FULL                      0x2014
    778 #define VMX_VMCS_CTRL_APIC_ACCESSADDR_HIGH                      0x2015
     777#define VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL                      0x2014
     778#define VMX_VMCS64_CTRL_APIC_ACCESSADDR_HIGH                      0x2015
     779
     780/** Optional (VMX_VMCS_CTRL_PROC_EXEC2_VMFUNC) */
     781#define VMX_VMCS64_CTRL_VMFUNC_CTRLS_FULL                         0x2018
     782#define VMX_VMCS64_CTRL_VMFUNC_CTRLS_HIGH                         0x2019
    779783
    780784/** Extended page table pointer. */
    781 #define VMX_VMCS_CTRL_EPTP_FULL                                 0x201a
    782 #define VMX_VMCS_CTRL_EPTP_HIGH                                 0x201b
    783 
    784 /** VM-exit phyiscal address. */
    785 #define VMX_VMCS_EXIT_PHYS_ADDR_FULL                            0x2400
    786 #define VMX_VMCS_EXIT_PHYS_ADDR_HIGH                            0x2401
     785#define VMX_VMCS64_CTRL_EPTP_FULL                                 0x201a
     786#define VMX_VMCS64_CTRL_EPTP_HIGH                                 0x201b
     787
     788/** Extended page table pointer lists. */
     789#define VMX_VMCS64_CTRL_EPTP_LIST_FULL                            0x2024
     790#define VMX_VMCS64_CTRL_EPTP_LIST_HIGH                            0x2025
     791
     792/** VM-exit guest phyiscal address. */
     793#define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL                      0x2400
     794#define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_HIGH                      0x2401
    787795/** @} */
    788796
     
    791799 * @{
    792800 */
    793 #define VMX_VMCS_GUEST_LINK_PTR_FULL                            0x2800
    794 #define VMX_VMCS_GUEST_LINK_PTR_HIGH                            0x2801
    795 #define VMX_VMCS_GUEST_DEBUGCTL_FULL                            0x2802      /**< MSR IA32_DEBUGCTL */
    796 #define VMX_VMCS_GUEST_DEBUGCTL_HIGH                            0x2803      /**< MSR IA32_DEBUGCTL */
    797 #define VMX_VMCS_GUEST_PAT_FULL                                 0x2804
    798 #define VMX_VMCS_GUEST_PAT_HIGH                                 0x2805
    799 #define VMX_VMCS_GUEST_EFER_FULL                                0x2806
    800 #define VMX_VMCS_GUEST_EFER_HIGH                                0x2807
    801 #define VMX_VMCS_GUEST_PERF_GLOBAL_CTRL_FULL                    0x2808      /**< MSR IA32_PERF_GLOBAL_CTRL */
    802 #define VMX_VMCS_GUEST_PERF_GLOBAL_CTRL_HIGH                    0x2809      /**< MSR IA32_PERF_GLOBAL_CTRL */
    803 #define VMX_VMCS_GUEST_PDPTR0_FULL                              0x280A
    804 #define VMX_VMCS_GUEST_PDPTR0_HIGH                              0x280B
    805 #define VMX_VMCS_GUEST_PDPTR1_FULL                              0x280C
    806 #define VMX_VMCS_GUEST_PDPTR1_HIGH                              0x280D
    807 #define VMX_VMCS_GUEST_PDPTR2_FULL                              0x280E
    808 #define VMX_VMCS_GUEST_PDPTR2_HIGH                              0x280F
    809 #define VMX_VMCS_GUEST_PDPTR3_FULL                              0x2810
    810 #define VMX_VMCS_GUEST_PDPTR3_HIGH                              0x2811
     801#define VMX_VMCS64_GUEST_VMCS_LINK_PTR_FULL                     0x2800
     802#define VMX_VMCS64_GUEST_VMCS_LINK_PTR_HIGH                     0x2801
     803#define VMX_VMCS64_GUEST_DEBUGCTL_FULL                          0x2802      /**< MSR IA32_DEBUGCTL */
     804#define VMX_VMCS64_GUEST_DEBUGCTL_HIGH                          0x2803      /**< MSR IA32_DEBUGCTL */
     805#define VMX_VMCS64_GUEST_PAT_FULL                               0x2804
     806#define VMX_VMCS64_GUEST_PAT_HIGH                               0x2805
     807#define VMX_VMCS64_GUEST_EFER_FULL                              0x2806
     808#define VMX_VMCS64_GUEST_EFER_HIGH                              0x2807
     809#define VMX_VMCS64_GUEST_PERF_GLOBAL_CTRL_FULL                  0x2808      /**< MSR IA32_PERF_GLOBAL_CTRL */
     810#define VMX_VMCS64_GUEST_PERF_GLOBAL_CTRL_HIGH                  0x2809      /**< MSR IA32_PERF_GLOBAL_CTRL */
     811#define VMX_VMCS64_GUEST_PDPTE0_FULL                            0x280A
     812#define VMX_VMCS64_GUEST_PDPTE0_HIGH                            0x280B
     813#define VMX_VMCS64_GUEST_PDPTE1_FULL                            0x280C
     814#define VMX_VMCS64_GUEST_PDPTE1_HIGH                            0x280D
     815#define VMX_VMCS64_GUEST_PDPTE2_FULL                            0x280E
     816#define VMX_VMCS64_GUEST_PDPTE2_HIGH                            0x280F
     817#define VMX_VMCS64_GUEST_PDPTE3_FULL                            0x2810
     818#define VMX_VMCS64_GUEST_PDPTE3_HIGH                            0x2811
    811819/** @} */
    812820
     
    815823 * @{
    816824 */
    817 #define VMX_VMCS_CTRL_PIN_EXEC_CONTROLS                         0x4000
    818 #define VMX_VMCS_CTRL_PROC_EXEC_CONTROLS                        0x4002
    819 #define VMX_VMCS_CTRL_EXCEPTION_BITMAP                          0x4004
    820 #define VMX_VMCS_CTRL_PAGEFAULT_ERROR_MASK                      0x4006
    821 #define VMX_VMCS_CTRL_PAGEFAULT_ERROR_MATCH                     0x4008
    822 #define VMX_VMCS_CTRL_CR3_TARGET_COUNT                          0x400A
    823 #define VMX_VMCS_CTRL_EXIT_CONTROLS                             0x400C
    824 #define VMX_VMCS_CTRL_EXIT_MSR_STORE_COUNT                      0x400E
    825 #define VMX_VMCS_CTRL_EXIT_MSR_LOAD_COUNT                       0x4010
    826 #define VMX_VMCS_CTRL_ENTRY_CONTROLS                            0x4012
    827 #define VMX_VMCS_CTRL_ENTRY_MSR_LOAD_COUNT                      0x4014
    828 #define VMX_VMCS_CTRL_ENTRY_IRQ_INFO                            0x4016
    829 #define VMX_VMCS_CTRL_ENTRY_EXCEPTION_ERRCODE                   0x4018
    830 #define VMX_VMCS_CTRL_ENTRY_INSTR_LENGTH                        0x401A
    831 /** This field exists only on processors that support the 1-setting of the “use TPR shadow” VM-execution control. */
    832 #define VMX_VMCS_CTRL_TPR_THRESHOLD                             0x401C
    833 /** This field exists only on processors that support the 1-setting of the “activate secondary controls” VM-execution control. */
    834 #define VMX_VMCS_CTRL_PROC_EXEC_CONTROLS2                       0x401E
     825#define VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS                       0x4000
     826#define VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS                      0x4002
     827#define VMX_VMCS32_CTRL_EXCEPTION_BITMAP                        0x4004
     828#define VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MASK                    0x4006
     829#define VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MATCH                   0x4008
     830#define VMX_VMCS32_CTRL_CR3_TARGET_COUNT                        0x400A
     831#define VMX_VMCS32_CTRL_EXIT_CONTROLS                           0x400C
     832#define VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT                    0x400E
     833#define VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT                     0x4010
     834#define VMX_VMCS32_CTRL_ENTRY_CONTROLS                          0x4012
     835#define VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT                    0x4014
     836#define VMX_VMCS32_CTRL_ENTRY_IRQ_INFO                          0x4016
     837#define VMX_VMCS32_CTRL_ENTRY_EXCEPTION_ERRCODE                 0x4018
     838#define VMX_VMCS32_CTRL_ENTRY_INSTR_LENGTH                      0x401A
     839#define VMX_VMCS32_CTRL_TPR_THRESHOLD                           0x401C
     840#define VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS2                     0x401E
    835841/** @} */
    836842
     
    918924/** A specified nr of pause loops cause a VM-exit. */
    919925#define VMX_VMCS_CTRL_PROC_EXEC2_PAUSE_LOOP_EXIT                RT_BIT(10)
     926/** VM Exit when executing RDRAND instructions. */
     927#define VMX_VMCS_CTRL_PROC_EXEC2_RDRAND_EXIT                    RT_BIT(11)
     928/** Enables INVPCID instructions. */
     929#define VMX_VMCS_CTRL_PROC_EXEC2_INVPCID                        RT_BIT(12)
     930/** Enables VMFUNC instructions. */
     931#define VMX_VMCS_CTRL_PROC_EXEC2_VMFUNC                         RT_BIT(13)
    920932/** @} */
    921933
     
    12501262 * @{
    12511263 */
    1252 #define VMX_VMCS64_GUEST_CR0                                      0x6800
    1253 #define VMX_VMCS64_GUEST_CR3                                      0x6802
    1254 #define VMX_VMCS64_GUEST_CR4                                      0x6804
    1255 #define VMX_VMCS64_GUEST_ES_BASE                                  0x6806
    1256 #define VMX_VMCS64_GUEST_CS_BASE                                  0x6808
    1257 #define VMX_VMCS64_GUEST_SS_BASE                                  0x680A
    1258 #define VMX_VMCS64_GUEST_DS_BASE                                  0x680C
    1259 #define VMX_VMCS64_GUEST_FS_BASE                                  0x680E
    1260 #define VMX_VMCS64_GUEST_GS_BASE                                  0x6810
    1261 #define VMX_VMCS64_GUEST_LDTR_BASE                                0x6812
    1262 #define VMX_VMCS64_GUEST_TR_BASE                                  0x6814
    1263 #define VMX_VMCS64_GUEST_GDTR_BASE                                0x6816
    1264 #define VMX_VMCS64_GUEST_IDTR_BASE                                0x6818
    1265 #define VMX_VMCS64_GUEST_DR7                                      0x681A
    1266 #define VMX_VMCS64_GUEST_RSP                                      0x681C
    1267 #define VMX_VMCS64_GUEST_RIP                                      0x681E
    1268 #define VMX_VMCS_GUEST_RFLAGS                                     0x6820
    1269 #define VMX_VMCS_GUEST_DEBUG_EXCEPTIONS                           0x6822
    1270 #define VMX_VMCS64_GUEST_SYSENTER_ESP                             0x6824  /**< MSR IA32_SYSENTER_ESP */
    1271 #define VMX_VMCS64_GUEST_SYSENTER_EIP                             0x6826  /**< MSR IA32_SYSENTER_EIP */
     1264#define VMX_VMCS_GUEST_CR0                                      0x6800
     1265#define VMX_VMCS_GUEST_CR3                                      0x6802
     1266#define VMX_VMCS_GUEST_CR4                                      0x6804
     1267#define VMX_VMCS_GUEST_ES_BASE                                  0x6806
     1268#define VMX_VMCS_GUEST_CS_BASE                                  0x6808
     1269#define VMX_VMCS_GUEST_SS_BASE                                  0x680A
     1270#define VMX_VMCS_GUEST_DS_BASE                                  0x680C
     1271#define VMX_VMCS_GUEST_FS_BASE                                  0x680E
     1272#define VMX_VMCS_GUEST_GS_BASE                                  0x6810
     1273#define VMX_VMCS_GUEST_LDTR_BASE                                0x6812
     1274#define VMX_VMCS_GUEST_TR_BASE                                  0x6814
     1275#define VMX_VMCS_GUEST_GDTR_BASE                                0x6816
     1276#define VMX_VMCS_GUEST_IDTR_BASE                                0x6818
     1277#define VMX_VMCS_GUEST_DR7                                      0x681A
     1278#define VMX_VMCS_GUEST_RSP                                      0x681C
     1279#define VMX_VMCS_GUEST_RIP                                      0x681E
     1280#define VMX_VMCS_GUEST_RFLAGS                                   0x6820
     1281#define VMX_VMCS_GUEST_DEBUG_EXCEPTIONS                         0x6822
     1282#define VMX_VMCS_GUEST_SYSENTER_ESP                             0x6824  /**< MSR IA32_SYSENTER_ESP */
     1283#define VMX_VMCS_GUEST_SYSENTER_EIP                             0x6826  /**< MSR IA32_SYSENTER_EIP */
    12721284/** @} */
    12731285
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r43657 r43700  
    528528        val &= pVM->hm.s.vmx.msr.vmx_pin_ctls.n.allowed1;
    529529
    530         rc = VMXWriteVMCS(VMX_VMCS_CTRL_PIN_EXEC_CONTROLS, val);
     530        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS, val);
    531531        AssertRC(rc);
    532532
     
    582582        pVCpu->hm.s.vmx.proc_ctls = val;
    583583
    584         rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, val);
     584        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, val);
    585585        AssertRC(rc);
    586586
     
    613613            val &= pVM->hm.s.vmx.msr.vmx_proc_ctls2.n.allowed1;
    614614            pVCpu->hm.s.vmx.proc_ctls2 = val;
    615             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS2, val);
     615            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS2, val);
    616616            AssertRC(rc);
    617617        }
     
    621621         * Set required bits to one and zero according to the MSR capabilities.
    622622         */
    623         rc = VMXWriteVMCS(VMX_VMCS_CTRL_CR3_TARGET_COUNT, 0);
     623        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_CR3_TARGET_COUNT, 0);
    624624        AssertRC(rc);
    625625
     
    641641         * Don't filter page faults, all of them should cause a world switch.
    642642         */
    643         rc  = VMXWriteVMCS(VMX_VMCS_CTRL_PAGEFAULT_ERROR_MASK, 0);
     643        rc  = VMXWriteVMCS(VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MASK, 0);
    644644        AssertRC(rc);
    645         rc = VMXWriteVMCS(VMX_VMCS_CTRL_PAGEFAULT_ERROR_MATCH, 0);
     645        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MATCH, 0);
    646646        AssertRC(rc);
    647647
    648         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_TSC_OFFSET_FULL, 0);
     648        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_TSC_OFFSET_FULL, 0);
    649649        AssertRC(rc);
    650         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_IO_BITMAP_A_FULL, 0);
     650        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_IO_BITMAP_A_FULL, 0);
    651651        AssertRC(rc);
    652         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_IO_BITMAP_B_FULL, 0);
     652        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_IO_BITMAP_B_FULL, 0);
    653653        AssertRC(rc);
    654654
     
    660660            Assert(pVCpu->hm.s.vmx.HCPhysMsrBitmap);
    661661
    662             rc = VMXWriteVMCS64(VMX_VMCS_CTRL_MSR_BITMAP_FULL, pVCpu->hm.s.vmx.HCPhysMsrBitmap);
     662            rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_MSR_BITMAP_FULL, pVCpu->hm.s.vmx.HCPhysMsrBitmap);
    663663            AssertRC(rc);
    664664
     
    685685         */
    686686        Assert(pVCpu->hm.s.vmx.HCPhysGuestMsr);
    687         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_VMENTRY_MSR_LOAD_FULL, pVCpu->hm.s.vmx.HCPhysGuestMsr);
     687        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_VMENTRY_MSR_LOAD_FULL, pVCpu->hm.s.vmx.HCPhysGuestMsr);
    688688        AssertRC(rc);
    689         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_VMEXIT_MSR_STORE_FULL, pVCpu->hm.s.vmx.HCPhysGuestMsr);
     689        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_VMEXIT_MSR_STORE_FULL, pVCpu->hm.s.vmx.HCPhysGuestMsr);
    690690        AssertRC(rc);
    691691        Assert(pVCpu->hm.s.vmx.HCPhysHostMsr);
    692         rc = VMXWriteVMCS64(VMX_VMCS_CTRL_VMEXIT_MSR_LOAD_FULL,  pVCpu->hm.s.vmx.HCPhysHostMsr);
     692        rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_VMEXIT_MSR_LOAD_FULL,  pVCpu->hm.s.vmx.HCPhysHostMsr);
    693693        AssertRC(rc);
    694694#endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */
    695695
    696         rc = VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_MSR_LOAD_COUNT, 0);
     696        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT, 0);
    697697        AssertRC(rc);
    698         rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXIT_MSR_STORE_COUNT, 0);
     698        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT, 0);
    699699        AssertRC(rc);
    700         rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXIT_MSR_LOAD_COUNT, 0);
     700        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT, 0);
    701701        AssertRC(rc);
    702702
     
    705705            Assert(pVM->hm.s.vmx.hMemObjApicAccess);
    706706            /* Optional */
    707             rc  = VMXWriteVMCS(VMX_VMCS_CTRL_TPR_THRESHOLD, 0);
    708             rc |= VMXWriteVMCS64(VMX_VMCS_CTRL_VAPIC_PAGEADDR_FULL, pVCpu->hm.s.vmx.HCPhysVAPIC);
     707            rc  = VMXWriteVMCS(VMX_VMCS32_CTRL_TPR_THRESHOLD, 0);
     708            rc |= VMXWriteVMCS64(VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL, pVCpu->hm.s.vmx.HCPhysVAPIC);
    709709
    710710            if (pVM->hm.s.vmx.msr.vmx_proc_ctls2.n.allowed1 & VMX_VMCS_CTRL_PROC_EXEC2_VIRT_APIC)
    711                 rc |= VMXWriteVMCS64(VMX_VMCS_CTRL_APIC_ACCESSADDR_FULL, pVM->hm.s.vmx.HCPhysApicAccess);
     711                rc |= VMXWriteVMCS64(VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL, pVM->hm.s.vmx.HCPhysApicAccess);
    712712
    713713            AssertRC(rc);
     
    715715
    716716        /* Set link pointer to -1. Not currently used. */
    717         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_LINK_PTR_FULL, 0xFFFFFFFFFFFFFFFFULL);
     717        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_VMCS_LINK_PTR_FULL, 0xFFFFFFFFFFFFFFFFULL);
    718718        AssertRC(rc);
    719719
     
    730730        PVMCSCACHE pCache = &pVCpu->hm.s.vmx.VMCSCache;
    731731
    732         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_RIP);
    733         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_RSP);
     732        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RIP);
     733        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RSP);
    734734        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RFLAGS);
    735735        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE);
    736736        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_CTRL_CR0_READ_SHADOW);
    737         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_CR0);
     737        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_CR0);
    738738        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_CTRL_CR4_READ_SHADOW);
    739         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_CR4);
    740         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_DR7);
     739        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_CR4);
     740        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_DR7);
    741741        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_SYSENTER_CS);
    742         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_SYSENTER_EIP);
    743         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_SYSENTER_ESP);
     742        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_SYSENTER_EIP);
     743        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_SYSENTER_ESP);
    744744        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_GDTR_LIMIT);
    745         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_GDTR_BASE);
     745        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_GDTR_BASE);
    746746        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_IDTR_LIMIT);
    747         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_IDTR_BASE);
     747        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_IDTR_BASE);
    748748
    749749        VMX_SETUP_SELREG(ES,   pCache);
     
    771771        if (pVM->hm.s.fNestedPaging)
    772772        {
    773             VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_CR3);
    774             VMXSetupCachedReadVMCS(pCache, VMX_VMCS_EXIT_PHYS_ADDR_FULL);
     773            VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_CR3);
     774            VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL);
    775775            pCache->Read.cValidEntries = VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX;
    776776        }
     
    974974     * Set event injection state.
    975975     */
    976     rc  = VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_IRQ_INFO, intInfo | (1 << VMX_EXIT_INTERRUPTION_INFO_VALID_SHIFT));
    977     rc |= VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_INSTR_LENGTH, cbInstr);
    978     rc |= VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_EXCEPTION_ERRCODE, errCode);
     976    rc  = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_IRQ_INFO, intInfo | (1 << VMX_EXIT_INTERRUPTION_INFO_VALID_SHIFT));
     977    rc |= VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_INSTR_LENGTH, cbInstr);
     978    rc |= VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_EXCEPTION_ERRCODE, errCode);
    979979
    980980    AssertRC(rc);
     
    10441044                    LogFlow(("Enable irq window exit!\n"));
    10451045                    pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
    1046                     rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     1046                    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    10471047                    AssertRC(rc);
    10481048                }
     
    14601460        /** @todo r=ramshankar: check IA32_VMX_MISC bits 27:25 for valid idxMsr
    14611461         *        range. */
    1462         rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXIT_MSR_LOAD_COUNT, idxMsr);
     1462        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT, idxMsr);
    14631463        AssertRC(rc);
    14641464#endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */
     
    14861486        AssertRCReturn(rc, rc);
    14871487
    1488         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR0_FULL, aPdpes[0].u); AssertRCReturn(rc, rc);
    1489         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR1_FULL, aPdpes[1].u); AssertRCReturn(rc, rc);
    1490         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR2_FULL, aPdpes[2].u); AssertRCReturn(rc, rc);
    1491         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_PDPTR3_FULL, aPdpes[3].u); AssertRCReturn(rc, rc);
     1488        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_PDPTE0_FULL, aPdpes[0].u); AssertRCReturn(rc, rc);
     1489        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_PDPTE1_FULL, aPdpes[1].u); AssertRCReturn(rc, rc);
     1490        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_PDPTE2_FULL, aPdpes[2].u); AssertRCReturn(rc, rc);
     1491        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_PDPTE3_FULL, aPdpes[3].u); AssertRCReturn(rc, rc);
    14921492    }
    14931493    return VINF_SUCCESS;
     
    15111511        int rc;
    15121512        X86PDPE aPdpes[4];
    1513         rc = VMXReadVMCS64(VMX_VMCS_GUEST_PDPTR0_FULL, &aPdpes[0].u); AssertRCReturn(rc, rc);
    1514         rc = VMXReadVMCS64(VMX_VMCS_GUEST_PDPTR1_FULL, &aPdpes[1].u); AssertRCReturn(rc, rc);
    1515         rc = VMXReadVMCS64(VMX_VMCS_GUEST_PDPTR2_FULL, &aPdpes[2].u); AssertRCReturn(rc, rc);
    1516         rc = VMXReadVMCS64(VMX_VMCS_GUEST_PDPTR3_FULL, &aPdpes[3].u); AssertRCReturn(rc, rc);
     1513        rc = VMXReadVMCS64(VMX_VMCS64_GUEST_PDPTE0_FULL, &aPdpes[0].u); AssertRCReturn(rc, rc);
     1514        rc = VMXReadVMCS64(VMX_VMCS64_GUEST_PDPTE1_FULL, &aPdpes[1].u); AssertRCReturn(rc, rc);
     1515        rc = VMXReadVMCS64(VMX_VMCS64_GUEST_PDPTE2_FULL, &aPdpes[2].u); AssertRCReturn(rc, rc);
     1516        rc = VMXReadVMCS64(VMX_VMCS64_GUEST_PDPTE3_FULL, &aPdpes[3].u); AssertRCReturn(rc, rc);
    15171517
    15181518        rc = PGMGstUpdatePaePdpes(pVCpu, &aPdpes[0]);
     
    15991599    }
    16001600
    1601     int rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXCEPTION_BITMAP, u32TrapMask);
     1601    int rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXCEPTION_BITMAP, u32TrapMask);
    16021602    AssertRC(rc);
    16031603}
     
    16231623     * Load EIP, ESP and EFLAGS.
    16241624     */
    1625     rc  = VMXWriteVMCS64(VMX_VMCS64_GUEST_RIP, pCtx->rip);
    1626     rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_RSP, pCtx->rsp);
     1625    rc  = VMXWriteVMCS64(VMX_VMCS_GUEST_RIP, pCtx->rip);
     1626    rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_RSP, pCtx->rsp);
    16271627    AssertRC(rc);
    16281628
     
    16451645        eflags.Bits.u2IOPL = 0; /* must always be 0 or else certain instructions won't cause faults. */
    16461646    }
    1647     rc   = VMXWriteVMCS(VMX_VMCS_GUEST_RFLAGS,          eflags.u32);
     1647    rc = VMXWriteVMCS(VMX_VMCS_GUEST_RFLAGS, eflags.u32);
    16481648    AssertRC(rc);
    16491649}
     
    16851685     */
    16861686    val &= pVM->hm.s.vmx.msr.vmx_entry.n.allowed1;
    1687     rc = VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_CONTROLS, val);
     1687    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_CONTROLS, val);
    16881688    AssertRC(rc);
    16891689
     
    17151715     * Don't acknowledge external interrupts on VM-exit.
    17161716     */
    1717     rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXIT_CONTROLS, val);
     1717    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_CONTROLS, val);
    17181718    AssertRC(rc);
    17191719
     
    17861786            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR,         0);
    17871787            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT,         0);
    1788             rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_LDTR_BASE,        0);
     1788            rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_LDTR_BASE,          0); /* @todo removing "64" in the function should be the same. */
    17891789            /* Note: vmlaunch will fail with 0 or just 0x02. No idea why. */
    17901790            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, 0x82 /* present, LDT */);
     
    17941794            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR,         pCtx->ldtr.Sel);
    17951795            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT,         pCtx->ldtr.u32Limit);
    1796             rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_LDTR_BASE,        pCtx->ldtr.u64Base);
     1796            rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_LDTR_BASE,          pCtx->ldtr.u64Base);    /* @todo removing "64" and it should be the same */
    17971797            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, pCtx->ldtr.Attr.u);
    17981798        }
     
    18201820            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR,         0);
    18211821            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT,         HM_VTX_TSS_SIZE);
    1822             rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_TR_BASE,          GCPhys /* phys = virt in this mode */);
     1822            rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_TR_BASE,          GCPhys /* phys = virt in this mode */);
    18231823
    18241824            X86DESCATTR attr;
     
    18331833            rc =  VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR,         pCtx->tr.Sel);
    18341834            rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT,         pCtx->tr.u32Limit);
    1835             rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_TR_BASE,        pCtx->tr.u64Base);
     1835            rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_TR_BASE,        pCtx->tr.u64Base);
    18361836
    18371837            val = pCtx->tr.Attr.u;
     
    18591859    {
    18601860        rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT,       pCtx->gdtr.cbGdt);
    1861         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_GDTR_BASE,      pCtx->gdtr.pGdt);
     1861        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_GDTR_BASE,      pCtx->gdtr.pGdt);
    18621862        AssertRC(rc);
    18631863    }
     
    18691869    {
    18701870        rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT,       pCtx->idtr.cbIdt);
    1871         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_IDTR_BASE,      pCtx->idtr.pIdt);
     1871        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_IDTR_BASE,      pCtx->idtr.pIdt);
    18721872        AssertRC(rc);
    18731873    }
     
    18791879    {
    18801880        rc  = VMXWriteVMCS(VMX_VMCS32_GUEST_SYSENTER_CS,    pCtx->SysEnter.cs);
    1881         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_EIP, pCtx->SysEnter.eip);
    1882         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_SYSENTER_ESP, pCtx->SysEnter.esp);
     1881        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_SYSENTER_EIP, pCtx->SysEnter.eip);
     1882        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_SYSENTER_ESP, pCtx->SysEnter.esp);
    18831883        AssertRC(rc);
    18841884    }
     
    19231923                                                 | VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_STORE_EXIT;
    19241924            }
    1925             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     1925            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    19261926            AssertRC(rc);
    19271927        }
     
    19351935        val &= ~(X86_CR0_CD|X86_CR0_NW);
    19361936
    1937         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_CR0,            val);
     1937        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_CR0,            val);
    19381938        Log2(("Guest CR0 %08x\n", val));
    19391939
     
    20152015        }
    20162016
    2017         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_CR4,            val);
     2017        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_CR4,            val);
    20182018        Log2(("Guest CR4 %08x\n", val));
    20192019
     
    20572057                                             | (VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT);
    20582058
    2059             rc = VMXWriteVMCS64(VMX_VMCS_CTRL_EPTP_FULL, pVCpu->hm.s.vmx.GCPhysEPTP);
     2059            rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_EPTP_FULL, pVCpu->hm.s.vmx.GCPhysEPTP);
    20602060            AssertRC(rc);
    20612061
     
    20902090
    20912091        /* Save our shadow CR3 register. */
    2092         rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_CR3, val);
     2092        rc = VMXWriteVMCS64(VMX_VMCS_GUEST_CR3, val);
    20932093        AssertRC(rc);
    20942094    }
     
    21072107
    21082108        /* Resync DR7 */
    2109         rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_DR7, pCtx->dr[7]);
     2109        rc = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]);
    21102110        AssertRC(rc);
    21112111
     
    21232123
    21242124            /* Override dr7 with the hypervisor value. */
    2125             rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_DR7, CPUMGetHyperDR7(pVCpu));
     2125            rc = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, CPUMGetHyperDR7(pVCpu));
    21262126            AssertRC(rc);
    21272127        }
     
    21372137            /* Disable DRx move intercepts. */
    21382138            pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    2139             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2139            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    21402140            AssertRC(rc);
    21412141
     
    21462146
    21472147        /* IA32_DEBUGCTL MSR. */
    2148         rc = VMXWriteVMCS64(VMX_VMCS_GUEST_DEBUGCTL_FULL,    0);
     2148        rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_DEBUGCTL_FULL,    0);
    21492149        AssertRC(rc);
    21502150
     
    21732173        {
    21742174            /* Update these as wrmsr might have changed them. */
    2175             rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_FS_BASE, pCtx->fs.u64Base);
     2175            rc = VMXWriteVMCS64(VMX_VMCS_GUEST_FS_BASE, pCtx->fs.u64Base);
    21762176            AssertRC(rc);
    2177             rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_GS_BASE, pCtx->gs.u64Base);
     2177            rc = VMXWriteVMCS64(VMX_VMCS_GUEST_GS_BASE, pCtx->gs.u64Base);
    21782178            AssertRC(rc);
    21792179        }
     
    22472247    pVCpu->hm.s.vmx.cCachedMsrs = idxMsr;
    22482248
    2249     rc = VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_MSR_LOAD_COUNT, idxMsr);
     2249    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT, idxMsr);
    22502250    AssertRC(rc);
    22512251
    2252     rc = VMXWriteVMCS(VMX_VMCS_CTRL_EXIT_MSR_STORE_COUNT, idxMsr);
     2252    rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT, idxMsr);
    22532253    AssertRC(rc);
    22542254#endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */
     
    22792279        {
    22802280            /* Note: VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT takes precedence over TSC_OFFSET, applies to RDTSCP too. */
    2281             rc = VMXWriteVMCS64(VMX_VMCS_CTRL_TSC_OFFSET_FULL, pVCpu->hm.s.vmx.u64TSCOffset);
     2281            rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_TSC_OFFSET_FULL, pVCpu->hm.s.vmx.u64TSCOffset);
    22822282            AssertRC(rc);
    22832283
    22842284            pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2285             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2285            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    22862286            AssertRC(rc);
    22872287            STAM_COUNTER_INC(&pVCpu->hm.s.StatTscOffset);
     
    22952295                     TMCpuTickGet(pVCpu)));
    22962296            pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2297             rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2297            rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    22982298            AssertRC(rc);
    22992299            STAM_COUNTER_INC(&pVCpu->hm.s.StatTscInterceptOverFlow);
     
    23032303    {
    23042304        pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT;
    2305         rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     2305        rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    23062306        AssertRC(rc);
    23072307        STAM_COUNTER_INC(&pVCpu->hm.s.StatTscIntercept);
     
    23322332
    23332333    /* First sync back EIP, ESP, and EFLAGS. */
    2334     rc = VMXReadCachedVMCS(VMX_VMCS64_GUEST_RIP,            &val);
     2334    rc = VMXReadCachedVMCS(VMX_VMCS_GUEST_RIP,            &val);
    23352335    AssertRC(rc);
    23362336    pCtx->rip               = val;
    2337     rc = VMXReadCachedVMCS(VMX_VMCS64_GUEST_RSP,            &val);
     2337    rc = VMXReadCachedVMCS(VMX_VMCS_GUEST_RSP,            &val);
    23382338    AssertRC(rc);
    23392339    pCtx->rsp               = val;
     
    23562356    /* Control registers. */
    23572357    VMXReadCachedVMCS(VMX_VMCS_CTRL_CR0_READ_SHADOW,     &valShadow);
    2358     VMXReadCachedVMCS(VMX_VMCS64_GUEST_CR0,              &val);
     2358    VMXReadCachedVMCS(VMX_VMCS_GUEST_CR0,                &val);
    23592359    val = (valShadow & pVCpu->hm.s.vmx.cr0_mask) | (val & ~pVCpu->hm.s.vmx.cr0_mask);
    23602360    CPUMSetGuestCR0(pVCpu, val);
    23612361
    23622362    VMXReadCachedVMCS(VMX_VMCS_CTRL_CR4_READ_SHADOW,     &valShadow);
    2363     VMXReadCachedVMCS(VMX_VMCS64_GUEST_CR4,              &val);
     2363    VMXReadCachedVMCS(VMX_VMCS_GUEST_CR4,                &val);
    23642364    val = (valShadow & pVCpu->hm.s.vmx.cr4_mask) | (val & ~pVCpu->hm.s.vmx.cr4_mask);
    23652365    CPUMSetGuestCR4(pVCpu, val);
     
    23772377        CPUMSetGuestCR2(pVCpu, pCache->cr2);
    23782378
    2379         VMXReadCachedVMCS(VMX_VMCS64_GUEST_CR3, &val);
     2379        VMXReadCachedVMCS(VMX_VMCS_GUEST_CR3, &val);
    23802380
    23812381        if (val != pCtx->cr3)
     
    23892389
    23902390    /* Sync back DR7. */
    2391     VMXReadCachedVMCS(VMX_VMCS64_GUEST_DR7, &val);
     2391    VMXReadCachedVMCS(VMX_VMCS_GUEST_DR7, &val);
    23922392    pCtx->dr[7] = val;
    23932393
     
    24032403    VMXReadCachedVMCS(VMX_VMCS32_GUEST_SYSENTER_CS,      &val);
    24042404    pCtx->SysEnter.cs       = val;
    2405     VMXReadCachedVMCS(VMX_VMCS64_GUEST_SYSENTER_EIP,     &val);
     2405    VMXReadCachedVMCS(VMX_VMCS_GUEST_SYSENTER_EIP,     &val);
    24062406    pCtx->SysEnter.eip      = val;
    2407     VMXReadCachedVMCS(VMX_VMCS64_GUEST_SYSENTER_ESP,     &val);
     2407    VMXReadCachedVMCS(VMX_VMCS_GUEST_SYSENTER_ESP,     &val);
    24082408    pCtx->SysEnter.esp      = val;
    24092409
     
    24132413    VMXReadCachedVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT,       &val);
    24142414    pCtx->gdtr.cbGdt        = val;
    2415     VMXReadCachedVMCS(VMX_VMCS64_GUEST_GDTR_BASE,        &val);
     2415    VMXReadCachedVMCS(VMX_VMCS_GUEST_GDTR_BASE,        &val);
    24162416    pCtx->gdtr.pGdt         = val;
    24172417
    24182418    VMXReadCachedVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT,       &val);
    24192419    pCtx->idtr.cbIdt        = val;
    2420     VMXReadCachedVMCS(VMX_VMCS64_GUEST_IDTR_BASE,        &val);
     2420    VMXReadCachedVMCS(VMX_VMCS_GUEST_IDTR_BASE,        &val);
    24212421    pCtx->idtr.pIdt         = val;
    24222422
     
    28352835     * originated before a VM reset *after* the VM has been reset. See @bugref{6220}.
    28362836     */
    2837     VMXWriteVMCS(VMX_VMCS_CTRL_ENTRY_IRQ_INFO, 0);
     2837    VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_IRQ_INFO, 0);
    28382838
    28392839#ifdef VBOX_STRICT
     
    28412841        RTCCUINTREG val2;
    28422842
    2843         rc2 = VMXReadVMCS(VMX_VMCS_CTRL_PIN_EXEC_CONTROLS, &val2);
     2843        rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS, &val2);
    28442844        AssertRC(rc2);
    28452845        Log2(("VMX_VMCS_CTRL_PIN_EXEC_CONTROLS = %08x\n",  val2));
     
    28532853            Log(("Invalid VMX_VMCS_CTRL_PIN_EXEC_CONTROLS: one\n"));
    28542854
    2855         rc2 = VMXReadVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, &val2);
     2855        rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, &val2);
    28562856        AssertRC(rc2);
    28572857        Log2(("VMX_VMCS_CTRL_PROC_EXEC_CONTROLS = %08x\n",  val2));
     
    28752875            Log(("Invalid VMX_VMCS_CTRL_PROC_EXEC_CONTROLS: one\n"));
    28762876
    2877         rc2 = VMXReadVMCS(VMX_VMCS_CTRL_ENTRY_CONTROLS, &val2);
     2877        rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_ENTRY_CONTROLS, &val2);
    28782878        AssertRC(rc2);
    28792879        Log2(("VMX_VMCS_CTRL_ENTRY_CONTROLS = %08x\n",  val2));
     
    28872887            Log(("Invalid VMX_VMCS_CTRL_ENTRY_CONTROLS: one\n"));
    28882888
    2889         rc2 = VMXReadVMCS(VMX_VMCS_CTRL_EXIT_CONTROLS, &val2);
     2889        rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_EXIT_CONTROLS, &val2);
    28902890        AssertRC(rc2);
    28912891        Log2(("VMX_VMCS_CTRL_EXIT_CONTROLS = %08x\n",  val2));
     
    30813081
    30823082        /* cr8 bits 3-0 correspond to bits 7-4 of the task priority mmio register. */
    3083         rc  = VMXWriteVMCS(VMX_VMCS_CTRL_TPR_THRESHOLD, (fPending) ? (u8LastTPR >> 4) : 0);
     3083        rc  = VMXWriteVMCS(VMX_VMCS32_CTRL_TPR_THRESHOLD, (fPending) ? (u8LastTPR >> 4) : 0);
    30843084        AssertRC(VBOXSTRICTRC_VAL(rc));
    30853085
     
    34083408        {
    34093409            Assert(exitReason == VMX_EXIT_EXTERNAL_IRQ);
    3410 #if 0 //def VBOX_WITH_VMMR0_DISABLE_PREEMPTION
    3411             if (    RTThreadPreemptIsPendingTrusty()
    3412                 &&  !RTThreadPreemptIsPending(NIL_RTTHREAD))
    3413                 goto ResumeExecution;
    3414 #endif
    34153410            /* External interrupt; leave to allow it to be dispatched again. */
    34163411            rc = VINF_EM_RAW_INTERRUPT;
     
    36553650
    36563651                    /* Resync DR7 */
    3657                     rc2 = VMXWriteVMCS64(VMX_VMCS64_GUEST_DR7, pCtx->dr[7]);
     3652                    rc2 = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]);
    36583653                    AssertRC(rc2);
    36593654
     
    40244019        Assert(pVM->hm.s.fNestedPaging);
    40254020
    4026         rc2 = VMXReadVMCS64(VMX_VMCS_EXIT_PHYS_ADDR_FULL, &GCPhys);
     4021        rc2 = VMXReadVMCS64(VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL, &GCPhys);
    40274022        AssertRC(rc2);
    40284023        Assert(((exitQualification >> 7) & 3) != 2);
     
    40984093        Assert(pVM->hm.s.fNestedPaging);
    40994094
    4100         rc2 = VMXReadVMCS64(VMX_VMCS_EXIT_PHYS_ADDR_FULL, &GCPhys);
     4095        rc2 = VMXReadVMCS64(VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL, &GCPhys);
    41014096        AssertRC(rc2);
    41024097        Log(("VMX_EXIT_EPT_MISCONFIG for %RGp\n", GCPhys));
     
    41444139                 VMCPU_FF_ISPENDING(pVCpu, (VMCPU_FF_INTERRUPT_APIC|VMCPU_FF_INTERRUPT_PIC)), pCtx->eflags.Bits.u1IF));
    41454140        pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT;
    4146         rc2 = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4141        rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    41474142        AssertRC(rc2);
    41484143        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIrqWindow);
     
    43994394            /* Disable DRx move intercepts. */
    44004395            pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    4401             rc2 = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4396            rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    44024397            AssertRC(rc2);
    44034398
     
    45894584
    45904585                            /* Resync DR7 */
    4591                             rc2 = VMXWriteVMCS64(VMX_VMCS64_GUEST_DR7, pCtx->dr[7]);
     4586                            rc2 = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]);
    45924587                            AssertRC(rc2);
    45934588
     
    47654760        LogFlow(("VMX_EXIT_MTF at %RGv\n", (RTGCPTR)pCtx->rip));
    47664761        pVCpu->hm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_TRAP_FLAG;
    4767         rc2 = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4762        rc2 = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    47684763        AssertRC(rc2);
    47694764        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitMtf);
     
    48364831        Log(("VMX_EXIT_ERR_INVALID_GUEST_STATE\n"));
    48374832
    4838         VMXReadVMCS(VMX_VMCS64_GUEST_RIP, &val2);
     4833        VMXReadVMCS(VMX_VMCS_GUEST_RIP, &val2);
    48394834        Log(("Old eip %RGv new %RGv\n", (RTGCPTR)pCtx->rip, (RTGCPTR)val2));
    48404835
    4841         VMXReadVMCS(VMX_VMCS64_GUEST_CR0, &val2);
     4836        VMXReadVMCS(VMX_VMCS_GUEST_CR0, &val2);
    48424837        Log(("VMX_VMCS_GUEST_CR0        %RX64\n", (uint64_t)val2));
    48434838
    4844         VMXReadVMCS(VMX_VMCS64_GUEST_CR3, &val2);
     4839        VMXReadVMCS(VMX_VMCS_GUEST_CR3, &val2);
    48454840        Log(("VMX_VMCS_GUEST_CR3        %RX64\n", (uint64_t)val2));
    48464841
    4847         VMXReadVMCS(VMX_VMCS64_GUEST_CR4, &val2);
     4842        VMXReadVMCS(VMX_VMCS_GUEST_CR4, &val2);
    48484843        Log(("VMX_VMCS_GUEST_CR4        %RX64\n", (uint64_t)val2));
    48494844
     
    48604855        VMX_LOG_SELREG(LDTR, "LDTR", val2);
    48614856
    4862         VMXReadVMCS(VMX_VMCS64_GUEST_GDTR_BASE, &val2);
     4857        VMXReadVMCS(VMX_VMCS_GUEST_GDTR_BASE, &val2);
    48634858        Log(("VMX_VMCS_GUEST_GDTR_BASE    %RX64\n", (uint64_t)val2));
    4864         VMXReadVMCS(VMX_VMCS64_GUEST_IDTR_BASE, &val2);
     4859        VMXReadVMCS(VMX_VMCS_GUEST_IDTR_BASE, &val2);
    48654860        Log(("VMX_VMCS_GUEST_IDTR_BASE    %RX64\n", (uint64_t)val2));
    48664861#endif /* VBOX_STRICT */
     
    50004995        /* Enable DRx move intercepts again. */
    50014996        pVCpu->hm.s.vmx.proc_ctls |= VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT;
    5002         int rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
     4997        int rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, pVCpu->hm.s.vmx.proc_ctls);
    50034998        AssertRC(rc);
    50044999
     
    51915186                ASMGetGDTR(&gdtr);
    51925187
    5193                 VMXReadVMCS(VMX_VMCS64_GUEST_RIP, &val);
     5188                VMXReadVMCS(VMX_VMCS_GUEST_RIP, &val);
    51945189                Log(("Old eip %RGv new %RGv\n", (RTGCPTR)pCtx->rip, (RTGCPTR)val));
    5195                 VMXReadVMCS(VMX_VMCS_CTRL_PIN_EXEC_CONTROLS,    &val);
     5190                VMXReadVMCS(VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS,   &val);
    51965191                Log(("VMX_VMCS_CTRL_PIN_EXEC_CONTROLS   %08x\n", val));
    5197                 VMXReadVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS,   &val);
     5192                VMXReadVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS,   &val);
    51985193                Log(("VMX_VMCS_CTRL_PROC_EXEC_CONTROLS  %08x\n", val));
    5199                 VMXReadVMCS(VMX_VMCS_CTRL_ENTRY_CONTROLS,       &val);
     5194                VMXReadVMCS(VMX_VMCS32_CTRL_ENTRY_CONTROLS,       &val);
    52005195                Log(("VMX_VMCS_CTRL_ENTRY_CONTROLS      %08x\n", val));
    5201                 VMXReadVMCS(VMX_VMCS_CTRL_EXIT_CONTROLS,        &val);
     5196                VMXReadVMCS(VMX_VMCS32_CTRL_EXIT_CONTROLS,        &val);
    52025197                Log(("VMX_VMCS_CTRL_EXIT_CONTROLS       %08x\n", val));
    52035198
     
    53875382    switch (idxField)
    53885383    {
    5389         case VMX_VMCS64_GUEST_RIP:
    5390         case VMX_VMCS64_GUEST_RSP:
     5384        case VMX_VMCS_GUEST_RIP:
     5385        case VMX_VMCS_GUEST_RSP:
    53915386        case VMX_VMCS_GUEST_RFLAGS:
    53925387        case VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE:
    53935388        case VMX_VMCS_CTRL_CR0_READ_SHADOW:
    5394         case VMX_VMCS64_GUEST_CR0:
     5389        case VMX_VMCS_GUEST_CR0:
    53955390        case VMX_VMCS_CTRL_CR4_READ_SHADOW:
    5396         case VMX_VMCS64_GUEST_CR4:
    5397         case VMX_VMCS64_GUEST_DR7:
     5391        case VMX_VMCS_GUEST_CR4:
     5392        case VMX_VMCS_GUEST_DR7:
    53985393        case VMX_VMCS32_GUEST_SYSENTER_CS:
    5399         case VMX_VMCS64_GUEST_SYSENTER_EIP:
    5400         case VMX_VMCS64_GUEST_SYSENTER_ESP:
     5394        case VMX_VMCS_GUEST_SYSENTER_EIP:
     5395        case VMX_VMCS_GUEST_SYSENTER_ESP:
    54015396        case VMX_VMCS32_GUEST_GDTR_LIMIT:
    54025397        case VMX_VMCS64_GUEST_GDTR_BASE:
    54035398        case VMX_VMCS32_GUEST_IDTR_LIMIT:
    5404         case VMX_VMCS64_GUEST_IDTR_BASE:
     5399        case VMX_VMCS_GUEST_IDTR_BASE:
    54055400        case VMX_VMCS16_GUEST_FIELD_CS:
    54065401        case VMX_VMCS32_GUEST_CS_LIMIT:
    5407         case VMX_VMCS64_GUEST_CS_BASE:
     5402        case VMX_VMCS_GUEST_CS_BASE:
    54085403        case VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS:
    54095404        case VMX_VMCS16_GUEST_FIELD_DS:
    54105405        case VMX_VMCS32_GUEST_DS_LIMIT:
    5411         case VMX_VMCS64_GUEST_DS_BASE:
     5406        case VMX_VMCS_GUEST_DS_BASE:
    54125407        case VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS:
    54135408        case VMX_VMCS16_GUEST_FIELD_ES:
    54145409        case VMX_VMCS32_GUEST_ES_LIMIT:
    5415         case VMX_VMCS64_GUEST_ES_BASE:
     5410        case VMX_VMCS_GUEST_ES_BASE:
    54165411        case VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS:
    54175412        case VMX_VMCS16_GUEST_FIELD_FS:
    54185413        case VMX_VMCS32_GUEST_FS_LIMIT:
    5419         case VMX_VMCS64_GUEST_FS_BASE:
     5414        case VMX_VMCS_GUEST_FS_BASE:
    54205415        case VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS:
    54215416        case VMX_VMCS16_GUEST_FIELD_GS:
    54225417        case VMX_VMCS32_GUEST_GS_LIMIT:
    5423         case VMX_VMCS64_GUEST_GS_BASE:
     5418        case VMX_VMCS_GUEST_GS_BASE:
    54245419        case VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS:
    54255420        case VMX_VMCS16_GUEST_FIELD_SS:
    54265421        case VMX_VMCS32_GUEST_SS_LIMIT:
    5427         case VMX_VMCS64_GUEST_SS_BASE:
     5422        case VMX_VMCS_GUEST_SS_BASE:
    54285423        case VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS:
    54295424        case VMX_VMCS16_GUEST_FIELD_LDTR:
     
    54335428        case VMX_VMCS16_GUEST_FIELD_TR:
    54345429        case VMX_VMCS32_GUEST_TR_LIMIT:
    5435         case VMX_VMCS64_GUEST_TR_BASE:
     5430        case VMX_VMCS_GUEST_TR_BASE:
    54365431        case VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS:
    54375432        case VMX_VMCS32_RO_EXIT_REASON:
     
    54445439        case VMX_VMCS32_RO_IDT_INFO:
    54455440        case VMX_VMCS32_RO_IDT_ERRCODE:
    5446         case VMX_VMCS64_GUEST_CR3:
    5447         case VMX_VMCS_EXIT_PHYS_ADDR_FULL:
     5441        case VMX_VMCS_GUEST_CR3:
     5442        case VMX_VMCS_EXIT_GUEST_PHYS_ADDR_FULL:
    54485443            return true;
    54495444    }
     
    55785573    switch (idxField)
    55795574    {
    5580         case VMX_VMCS_CTRL_TSC_OFFSET_FULL:
    5581         case VMX_VMCS_CTRL_IO_BITMAP_A_FULL:
    5582         case VMX_VMCS_CTRL_IO_BITMAP_B_FULL:
    5583         case VMX_VMCS_CTRL_MSR_BITMAP_FULL:
    5584         case VMX_VMCS_CTRL_VMEXIT_MSR_STORE_FULL:
    5585         case VMX_VMCS_CTRL_VMEXIT_MSR_LOAD_FULL:
    5586         case VMX_VMCS_CTRL_VMENTRY_MSR_LOAD_FULL:
    5587         case VMX_VMCS_CTRL_VAPIC_PAGEADDR_FULL:
    5588         case VMX_VMCS_CTRL_APIC_ACCESSADDR_FULL:
    5589         case VMX_VMCS_GUEST_LINK_PTR_FULL:
    5590         case VMX_VMCS_GUEST_PDPTR0_FULL:
    5591         case VMX_VMCS_GUEST_PDPTR1_FULL:
    5592         case VMX_VMCS_GUEST_PDPTR2_FULL:
    5593         case VMX_VMCS_GUEST_PDPTR3_FULL:
    5594         case VMX_VMCS_GUEST_DEBUGCTL_FULL:
    5595         case VMX_VMCS_GUEST_EFER_FULL:
    5596         case VMX_VMCS_CTRL_EPTP_FULL:
     5575        case VMX_VMCS64_CTRL_TSC_OFFSET_FULL:
     5576        case VMX_VMCS64_CTRL_IO_BITMAP_A_FULL:
     5577        case VMX_VMCS64_CTRL_IO_BITMAP_B_FULL:
     5578        case VMX_VMCS64_CTRL_MSR_BITMAP_FULL:
     5579        case VMX_VMCS64_CTRL_VMEXIT_MSR_STORE_FULL:
     5580        case VMX_VMCS64_CTRL_VMEXIT_MSR_LOAD_FULL:
     5581        case VMX_VMCS64_CTRL_VMENTRY_MSR_LOAD_FULL:
     5582        case VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL:
     5583        case VMX_VMCS64_CTRL_APIC_ACCESSADDR_FULL:
     5584        case VMX_VMCS64_GUEST_VMCS_LINK_PTR_FULL:
     5585        case VMX_VMCS64_GUEST_PDPTE0_FULL:
     5586        case VMX_VMCS64_GUEST_PDPTE1_FULL:
     5587        case VMX_VMCS64_GUEST_PDPTE2_FULL:
     5588        case VMX_VMCS64_GUEST_PDPTE3_FULL:
     5589        case VMX_VMCS64_GUEST_DEBUGCTL_FULL:
     5590        case VMX_VMCS64_GUEST_EFER_FULL:
     5591        case VMX_VMCS64_CTRL_EPTP_FULL:
    55975592            /* These fields consist of two parts, which are both writable in 32 bits mode. */
    55985593            rc  = VMXWriteVMCS32(idxField, u64Val);
     
    56015596            return rc;
    56025597
    5603         case VMX_VMCS64_GUEST_LDTR_BASE:
    5604         case VMX_VMCS64_GUEST_TR_BASE:
    5605         case VMX_VMCS64_GUEST_GDTR_BASE:
    5606         case VMX_VMCS64_GUEST_IDTR_BASE:
    5607         case VMX_VMCS64_GUEST_SYSENTER_EIP:
    5608         case VMX_VMCS64_GUEST_SYSENTER_ESP:
    5609         case VMX_VMCS64_GUEST_CR0:
    5610         case VMX_VMCS64_GUEST_CR4:
    5611         case VMX_VMCS64_GUEST_CR3:
    5612         case VMX_VMCS64_GUEST_DR7:
    5613         case VMX_VMCS64_GUEST_RIP:
    5614         case VMX_VMCS64_GUEST_RSP:
    5615         case VMX_VMCS64_GUEST_CS_BASE:
    5616         case VMX_VMCS64_GUEST_DS_BASE:
    5617         case VMX_VMCS64_GUEST_ES_BASE:
    5618         case VMX_VMCS64_GUEST_FS_BASE:
    5619         case VMX_VMCS64_GUEST_GS_BASE:
    5620         case VMX_VMCS64_GUEST_SS_BASE:
     5598        case VMX_VMCS_GUEST_LDTR_BASE:
     5599        case VMX_VMCS_GUEST_TR_BASE:
     5600        case VMX_VMCS_GUEST_GDTR_BASE:
     5601        case VMX_VMCS_GUEST_IDTR_BASE:
     5602        case VMX_VMCS_GUEST_SYSENTER_EIP:
     5603        case VMX_VMCS_GUEST_SYSENTER_ESP:
     5604        case VMX_VMCS_GUEST_CR0:
     5605        case VMX_VMCS_GUEST_CR4:
     5606        case VMX_VMCS_GUEST_CR3:
     5607        case VMX_VMCS_GUEST_DR7:
     5608        case VMX_VMCS_GUEST_RIP:
     5609        case VMX_VMCS_GUEST_RSP:
     5610        case VMX_VMCS_GUEST_CS_BASE:
     5611        case VMX_VMCS_GUEST_DS_BASE:
     5612        case VMX_VMCS_GUEST_ES_BASE:
     5613        case VMX_VMCS_GUEST_FS_BASE:
     5614        case VMX_VMCS_GUEST_GS_BASE:
     5615        case VMX_VMCS_GUEST_SS_BASE:
    56215616            /* Queue a 64 bits value as we can't set it in 32 bits host mode. */
    56225617            if (u64Val >> 32ULL)
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.h

    r43387 r43700  
    3737
    3838/* Read cache indices. */
    39 #define VMX_VMCS64_GUEST_RIP_CACHE_IDX                                      0
    40 #define VMX_VMCS64_GUEST_RSP_CACHE_IDX                                      1
     39#define VMX_VMCS_GUEST_RIP_CACHE_IDX                                        0
     40#define VMX_VMCS_GUEST_RSP_CACHE_IDX                                        1
    4141#define VMX_VMCS_GUEST_RFLAGS_CACHE_IDX                                     2
    4242#define VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE_CACHE_IDX                   3
    4343#define VMX_VMCS_CTRL_CR0_READ_SHADOW_CACHE_IDX                             4
    44 #define VMX_VMCS64_GUEST_CR0_CACHE_IDX                                      5
     44#define VMX_VMCS_GUEST_CR0_CACHE_IDX                                        5
    4545#define VMX_VMCS_CTRL_CR4_READ_SHADOW_CACHE_IDX                             6
    46 #define VMX_VMCS64_GUEST_CR4_CACHE_IDX                                      7
    47 #define VMX_VMCS64_GUEST_DR7_CACHE_IDX                                      8
     46#define VMX_VMCS_GUEST_CR4_CACHE_IDX                                        7
     47#define VMX_VMCS_GUEST_DR7_CACHE_IDX                                        8
    4848#define VMX_VMCS32_GUEST_SYSENTER_CS_CACHE_IDX                              9
    49 #define VMX_VMCS64_GUEST_SYSENTER_EIP_CACHE_IDX                             10
    50 #define VMX_VMCS64_GUEST_SYSENTER_ESP_CACHE_IDX                             11
     49#define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX                               10
     50#define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX                               11
    5151#define VMX_VMCS32_GUEST_GDTR_LIMIT_CACHE_IDX                               12
    52 #define VMX_VMCS64_GUEST_GDTR_BASE_CACHE_IDX                                13
     52#define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX                                  13
    5353#define VMX_VMCS32_GUEST_IDTR_LIMIT_CACHE_IDX                               14
    54 #define VMX_VMCS64_GUEST_IDTR_BASE_CACHE_IDX                                15
     54#define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX                                  15
    5555#define VMX_VMCS16_GUEST_FIELD_CS_CACHE_IDX                                 16
    5656#define VMX_VMCS32_GUEST_CS_LIMIT_CACHE_IDX                                 17
    57 #define VMX_VMCS64_GUEST_CS_BASE_CACHE_IDX                                  18
     57#define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX                                    18
    5858#define VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS_CACHE_IDX                         19
    5959#define VMX_VMCS16_GUEST_FIELD_DS_CACHE_IDX                                 20
    6060#define VMX_VMCS32_GUEST_DS_LIMIT_CACHE_IDX                                 21
    61 #define VMX_VMCS64_GUEST_DS_BASE_CACHE_IDX                                  22
     61#define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX                                    22
    6262#define VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS_CACHE_IDX                         23
    6363#define VMX_VMCS16_GUEST_FIELD_ES_CACHE_IDX                                 24
    6464#define VMX_VMCS32_GUEST_ES_LIMIT_CACHE_IDX                                 25
    65 #define VMX_VMCS64_GUEST_ES_BASE_CACHE_IDX                                  26
     65#define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX                                    26
    6666#define VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS_CACHE_IDX                         27
    6767#define VMX_VMCS16_GUEST_FIELD_FS_CACHE_IDX                                 28
    6868#define VMX_VMCS32_GUEST_FS_LIMIT_CACHE_IDX                                 29
    69 #define VMX_VMCS64_GUEST_FS_BASE_CACHE_IDX                                  30
     69#define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX                                    30
    7070#define VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS_CACHE_IDX                         31
    7171#define VMX_VMCS16_GUEST_FIELD_GS_CACHE_IDX                                 32
    7272#define VMX_VMCS32_GUEST_GS_LIMIT_CACHE_IDX                                 33
    73 #define VMX_VMCS64_GUEST_GS_BASE_CACHE_IDX                                  34
     73#define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX                                    34
    7474#define VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS_CACHE_IDX                         35
    7575#define VMX_VMCS16_GUEST_FIELD_SS_CACHE_IDX                                 36
    7676#define VMX_VMCS32_GUEST_SS_LIMIT_CACHE_IDX                                 37
    77 #define VMX_VMCS64_GUEST_SS_BASE_CACHE_IDX                                  38
     77#define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX                                    38
    7878#define VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS_CACHE_IDX                         39
    7979#define VMX_VMCS16_GUEST_FIELD_TR_CACHE_IDX                                 40
    8080#define VMX_VMCS32_GUEST_TR_LIMIT_CACHE_IDX                                 41
    81 #define VMX_VMCS64_GUEST_TR_BASE_CACHE_IDX                                  42
     81#define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX                                    42
    8282#define VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS_CACHE_IDX                         43
    8383#define VMX_VMCS16_GUEST_FIELD_LDTR_CACHE_IDX                               44
    8484#define VMX_VMCS32_GUEST_LDTR_LIMIT_CACHE_IDX                               45
    85 #define VMX_VMCS64_GUEST_LDTR_BASE_CACHE_IDX                                46
     85#define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX                                  46
    8686#define VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS_CACHE_IDX                       47
    8787#define VMX_VMCS32_RO_EXIT_REASON_CACHE_IDX                                 48
     
    9595#define VMX_VMCS32_RO_IDT_ERRCODE_CACHE_IDX                                 56
    9696#define VMX_VMCS_MAX_CACHE_IDX                                              (VMX_VMCS32_RO_IDT_ERRCODE_CACHE_IDX+1)
    97 #define VMX_VMCS64_GUEST_CR3_CACHE_IDX                                      57
    98 #define VMX_VMCS_EXIT_PHYS_ADDR_FULL_CACHE_IDX                              58
    99 #define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX                                (VMX_VMCS_EXIT_PHYS_ADDR_FULL_CACHE_IDX+1)
     97#define VMX_VMCS_GUEST_CR3_CACHE_IDX                                        57
     98#define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL_CACHE_IDX                      58
     99#define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX                                (VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL_CACHE_IDX+1)
    100100
    101101
     
    211211        rc  = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_##REG,        pCtx->reg.Sel);                 \
    212212        rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,      pCtx->reg.u32Limit);            \
    213         rc |= VMXWriteVMCS64(VMX_VMCS64_GUEST_##REG##_BASE,     pCtx->reg.u64Base);             \
     213        rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_##REG##_BASE,       pCtx->reg.u64Base);             \
    214214        if ((pCtx->eflags.u32 & X86_EFL_VM))                                                    \
    215215        {                                                                                       \
     
    250250        VMXReadCachedVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,         &val); \
    251251        pCtx->reg.u32Limit  = val; \
    252         VMXReadCachedVMCS(VMX_VMCS64_GUEST_##REG##_BASE,          &val); \
     252        VMXReadCachedVMCS(VMX_VMCS_GUEST_##REG##_BASE,            &val); \
    253253        pCtx->reg.u64Base   = val; \
    254254        VMXReadCachedVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &val); \
     
    264264        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT,         &(val)); \
    265265        Log(("%s Limit        %x\n", szSelReg, (val))); \
    266         VMXReadVMCS(VMX_VMCS64_GUEST_##REG##_BASE,          &(val)); \
     266        VMXReadVMCS(VMX_VMCS_GUEST_##REG##_BASE,            &(val)); \
    267267        Log(("%s Base         %RX64\n", szSelReg, (uint64_t)(val))); \
    268268        VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &(val)); \
     
    327327        VMXSetupCachedReadVMCS(pCache, VMX_VMCS16_GUEST_FIELD_##REG);               \
    328328        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_##REG##_LIMIT);             \
    329         VMXSetupCachedReadVMCS(pCache, VMX_VMCS64_GUEST_##REG##_BASE);              \
     329        VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_##REG##_BASE);              \
    330330        VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS);     \
    331331}
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