Changeset 43700 in vbox
- Timestamp:
- Oct 22, 2012 3:15:51 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
include/VBox/vmm/hm_vmx.h (modified) (6 diffs)
-
src/VBox/VMM/VMMR0/HWVMXR0.cpp (modified) (71 diffs)
-
src/VBox/VMM/VMMR0/HWVMXR0.h (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r43657 r43700 735 735 * @{ 736 736 */ 737 #define VMX_VMCS _HOST_FIELD_PAT_FULL 0x2C00738 #define VMX_VMCS _HOST_FIELD_PAT_HIGH 0x2C01739 #define VMX_VMCS _HOST_FIELD_EFER_FULL 0x2C02740 #define VMX_VMCS _HOST_FIELD_EFER_HIGH 0x2C03741 #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 */ 743 743 /** @} */ 744 744 … … 747 747 * @{ 748 748 */ 749 #define VMX_VMCS _CTRL_IO_BITMAP_A_FULL 0x2000750 #define VMX_VMCS _CTRL_IO_BITMAP_A_HIGH 0x2001751 #define VMX_VMCS _CTRL_IO_BITMAP_B_FULL 0x2002752 #define VMX_VMCS _CTRL_IO_BITMAP_B_HIGH 0x2003749 #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 753 753 754 754 /* Optional */ 755 #define VMX_VMCS _CTRL_MSR_BITMAP_FULL 0x2004756 #define VMX_VMCS _CTRL_MSR_BITMAP_HIGH 0x2005757 758 #define VMX_VMCS _CTRL_VMEXIT_MSR_STORE_FULL 0x2006759 #define VMX_VMCS _CTRL_VMEXIT_MSR_STORE_HIGH 0x2007760 #define VMX_VMCS _CTRL_VMEXIT_MSR_LOAD_FULL 0x2008761 #define VMX_VMCS _CTRL_VMEXIT_MSR_LOAD_HIGH 0x2009762 763 #define VMX_VMCS _CTRL_VMENTRY_MSR_LOAD_FULL 0x200A764 #define VMX_VMCS _CTRL_VMENTRY_MSR_LOAD_HIGH 0x200B765 766 #define VMX_VMCS _CTRL_EXEC_VMCS_PTR_FULL 0x200C767 #define VMX_VMCS _CTRL_EXEC_VMCS_PTR_HIGH 0x200D768 769 #define VMX_VMCS _CTRL_TSC_OFFSET_FULL 0x2010770 #define VMX_VMCS _CTRL_TSC_OFFSET_HIGH 0x2011755 #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 771 771 772 772 /** Optional (VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW) */ 773 #define VMX_VMCS _CTRL_VAPIC_PAGEADDR_FULL 0x2012774 #define VMX_VMCS _CTRL_VAPIC_PAGEADDR_HIGH 0x2013773 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_FULL 0x2012 774 #define VMX_VMCS64_CTRL_VAPIC_PAGEADDR_HIGH 0x2013 775 775 776 776 /** 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 779 783 780 784 /** 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 787 795 /** @} */ 788 796 … … 791 799 * @{ 792 800 */ 793 #define VMX_VMCS _GUEST_LINK_PTR_FULL0x2800794 #define VMX_VMCS _GUEST_LINK_PTR_HIGH0x2801795 #define VMX_VMCS _GUEST_DEBUGCTL_FULL0x2802 /**< MSR IA32_DEBUGCTL */796 #define VMX_VMCS _GUEST_DEBUGCTL_HIGH0x2803 /**< MSR IA32_DEBUGCTL */797 #define VMX_VMCS _GUEST_PAT_FULL0x2804798 #define VMX_VMCS _GUEST_PAT_HIGH0x2805799 #define VMX_VMCS _GUEST_EFER_FULL0x2806800 #define VMX_VMCS _GUEST_EFER_HIGH0x2807801 #define VMX_VMCS _GUEST_PERF_GLOBAL_CTRL_FULL0x2808 /**< MSR IA32_PERF_GLOBAL_CTRL */802 #define VMX_VMCS _GUEST_PERF_GLOBAL_CTRL_HIGH0x2809 /**< MSR IA32_PERF_GLOBAL_CTRL */803 #define VMX_VMCS _GUEST_PDPTR0_FULL0x280A804 #define VMX_VMCS _GUEST_PDPTR0_HIGH0x280B805 #define VMX_VMCS _GUEST_PDPTR1_FULL0x280C806 #define VMX_VMCS _GUEST_PDPTR1_HIGH0x280D807 #define VMX_VMCS _GUEST_PDPTR2_FULL0x280E808 #define VMX_VMCS _GUEST_PDPTR2_HIGH0x280F809 #define VMX_VMCS _GUEST_PDPTR3_FULL0x2810810 #define VMX_VMCS _GUEST_PDPTR3_HIGH0x2811801 #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 811 819 /** @} */ 812 820 … … 815 823 * @{ 816 824 */ 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 835 841 /** @} */ 836 842 … … 918 924 /** A specified nr of pause loops cause a VM-exit. */ 919 925 #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) 920 932 /** @} */ 921 933 … … 1250 1262 * @{ 1251 1263 */ 1252 #define VMX_VMCS 64_GUEST_CR0 0x68001253 #define VMX_VMCS 64_GUEST_CR3 0x68021254 #define VMX_VMCS 64_GUEST_CR4 0x68041255 #define VMX_VMCS 64_GUEST_ES_BASE 0x68061256 #define VMX_VMCS 64_GUEST_CS_BASE 0x68081257 #define VMX_VMCS 64_GUEST_SS_BASE 0x680A1258 #define VMX_VMCS 64_GUEST_DS_BASE 0x680C1259 #define VMX_VMCS 64_GUEST_FS_BASE 0x680E1260 #define VMX_VMCS 64_GUEST_GS_BASE 0x68101261 #define VMX_VMCS 64_GUEST_LDTR_BASE 0x68121262 #define VMX_VMCS 64_GUEST_TR_BASE 0x68141263 #define VMX_VMCS 64_GUEST_GDTR_BASE 0x68161264 #define VMX_VMCS 64_GUEST_IDTR_BASE 0x68181265 #define VMX_VMCS 64_GUEST_DR7 0x681A1266 #define VMX_VMCS 64_GUEST_RSP 0x681C1267 #define VMX_VMCS 64_GUEST_RIP 0x681E1268 #define VMX_VMCS_GUEST_RFLAGS 0x68201269 #define VMX_VMCS_GUEST_DEBUG_EXCEPTIONS 0x68221270 #define VMX_VMCS 64_GUEST_SYSENTER_ESP 0x6824 /**< MSR IA32_SYSENTER_ESP */1271 #define VMX_VMCS 64_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 */ 1272 1284 /** @} */ 1273 1285 -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r43657 r43700 528 528 val &= pVM->hm.s.vmx.msr.vmx_pin_ctls.n.allowed1; 529 529 530 rc = VMXWriteVMCS(VMX_VMCS _CTRL_PIN_EXEC_CONTROLS, val);530 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS, val); 531 531 AssertRC(rc); 532 532 … … 582 582 pVCpu->hm.s.vmx.proc_ctls = val; 583 583 584 rc = VMXWriteVMCS(VMX_VMCS _CTRL_PROC_EXEC_CONTROLS, val);584 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, val); 585 585 AssertRC(rc); 586 586 … … 613 613 val &= pVM->hm.s.vmx.msr.vmx_proc_ctls2.n.allowed1; 614 614 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); 616 616 AssertRC(rc); 617 617 } … … 621 621 * Set required bits to one and zero according to the MSR capabilities. 622 622 */ 623 rc = VMXWriteVMCS(VMX_VMCS _CTRL_CR3_TARGET_COUNT, 0);623 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_CR3_TARGET_COUNT, 0); 624 624 AssertRC(rc); 625 625 … … 641 641 * Don't filter page faults, all of them should cause a world switch. 642 642 */ 643 rc = VMXWriteVMCS(VMX_VMCS _CTRL_PAGEFAULT_ERROR_MASK, 0);643 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MASK, 0); 644 644 AssertRC(rc); 645 rc = VMXWriteVMCS(VMX_VMCS _CTRL_PAGEFAULT_ERROR_MATCH, 0);645 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_PAGEFAULT_ERROR_MATCH, 0); 646 646 AssertRC(rc); 647 647 648 rc = VMXWriteVMCS64(VMX_VMCS _CTRL_TSC_OFFSET_FULL, 0);648 rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_TSC_OFFSET_FULL, 0); 649 649 AssertRC(rc); 650 rc = VMXWriteVMCS64(VMX_VMCS _CTRL_IO_BITMAP_A_FULL, 0);650 rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_IO_BITMAP_A_FULL, 0); 651 651 AssertRC(rc); 652 rc = VMXWriteVMCS64(VMX_VMCS _CTRL_IO_BITMAP_B_FULL, 0);652 rc = VMXWriteVMCS64(VMX_VMCS64_CTRL_IO_BITMAP_B_FULL, 0); 653 653 AssertRC(rc); 654 654 … … 660 660 Assert(pVCpu->hm.s.vmx.HCPhysMsrBitmap); 661 661 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); 663 663 AssertRC(rc); 664 664 … … 685 685 */ 686 686 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); 688 688 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); 690 690 AssertRC(rc); 691 691 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); 693 693 AssertRC(rc); 694 694 #endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */ 695 695 696 rc = VMXWriteVMCS(VMX_VMCS _CTRL_ENTRY_MSR_LOAD_COUNT, 0);696 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT, 0); 697 697 AssertRC(rc); 698 rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXIT_MSR_STORE_COUNT, 0);698 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT, 0); 699 699 AssertRC(rc); 700 rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXIT_MSR_LOAD_COUNT, 0);700 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT, 0); 701 701 AssertRC(rc); 702 702 … … 705 705 Assert(pVM->hm.s.vmx.hMemObjApicAccess); 706 706 /* 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); 709 709 710 710 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); 712 712 713 713 AssertRC(rc); … … 715 715 716 716 /* 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); 718 718 AssertRC(rc); 719 719 … … 730 730 PVMCSCACHE pCache = &pVCpu->hm.s.vmx.VMCSCache; 731 731 732 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_RIP);733 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_RSP);732 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RIP); 733 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RSP); 734 734 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_RFLAGS); 735 735 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE); 736 736 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_CTRL_CR0_READ_SHADOW); 737 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_CR0);737 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_CR0); 738 738 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_CTRL_CR4_READ_SHADOW); 739 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_CR4);740 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_DR7);739 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_CR4); 740 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_DR7); 741 741 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_SYSENTER_CS); 742 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_SYSENTER_EIP);743 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_SYSENTER_ESP);742 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_SYSENTER_EIP); 743 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_SYSENTER_ESP); 744 744 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_GDTR_LIMIT); 745 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_GDTR_BASE);745 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_GDTR_BASE); 746 746 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_IDTR_LIMIT); 747 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_IDTR_BASE);747 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_IDTR_BASE); 748 748 749 749 VMX_SETUP_SELREG(ES, pCache); … … 771 771 if (pVM->hm.s.fNestedPaging) 772 772 { 773 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_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); 775 775 pCache->Read.cValidEntries = VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX; 776 776 } … … 974 974 * Set event injection state. 975 975 */ 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); 979 979 980 980 AssertRC(rc); … … 1044 1044 LogFlow(("Enable irq window exit!\n")); 1045 1045 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); 1047 1047 AssertRC(rc); 1048 1048 } … … 1460 1460 /** @todo r=ramshankar: check IA32_VMX_MISC bits 27:25 for valid idxMsr 1461 1461 * range. */ 1462 rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXIT_MSR_LOAD_COUNT, idxMsr);1462 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_LOAD_COUNT, idxMsr); 1463 1463 AssertRC(rc); 1464 1464 #endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */ … … 1486 1486 AssertRCReturn(rc, rc); 1487 1487 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); 1492 1492 } 1493 1493 return VINF_SUCCESS; … … 1511 1511 int rc; 1512 1512 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); 1517 1517 1518 1518 rc = PGMGstUpdatePaePdpes(pVCpu, &aPdpes[0]); … … 1599 1599 } 1600 1600 1601 int rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXCEPTION_BITMAP, u32TrapMask);1601 int rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXCEPTION_BITMAP, u32TrapMask); 1602 1602 AssertRC(rc); 1603 1603 } … … 1623 1623 * Load EIP, ESP and EFLAGS. 1624 1624 */ 1625 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_RIP, pCtx->rip);1626 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_RSP, pCtx->rsp);1625 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_RIP, pCtx->rip); 1626 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_RSP, pCtx->rsp); 1627 1627 AssertRC(rc); 1628 1628 … … 1645 1645 eflags.Bits.u2IOPL = 0; /* must always be 0 or else certain instructions won't cause faults. */ 1646 1646 } 1647 rc = VMXWriteVMCS(VMX_VMCS_GUEST_RFLAGS,eflags.u32);1647 rc = VMXWriteVMCS(VMX_VMCS_GUEST_RFLAGS, eflags.u32); 1648 1648 AssertRC(rc); 1649 1649 } … … 1685 1685 */ 1686 1686 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); 1688 1688 AssertRC(rc); 1689 1689 … … 1715 1715 * Don't acknowledge external interrupts on VM-exit. 1716 1716 */ 1717 rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXIT_CONTROLS, val);1717 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_CONTROLS, val); 1718 1718 AssertRC(rc); 1719 1719 … … 1786 1786 rc = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR, 0); 1787 1787 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT, 0); 1788 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_LDTR_BASE, 0);1788 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_LDTR_BASE, 0); /* @todo removing "64" in the function should be the same. */ 1789 1789 /* Note: vmlaunch will fail with 0 or just 0x02. No idea why. */ 1790 1790 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, 0x82 /* present, LDT */); … … 1794 1794 rc = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_LDTR, pCtx->ldtr.Sel); 1795 1795 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_LIMIT, pCtx->ldtr.u32Limit); 1796 rc |= VMXWriteVMCS64(VMX_VMCS 64_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 */ 1797 1797 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS, pCtx->ldtr.Attr.u); 1798 1798 } … … 1820 1820 rc = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR, 0); 1821 1821 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT, HM_VTX_TSS_SIZE); 1822 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_TR_BASE, GCPhys /* phys = virt in this mode */);1822 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_TR_BASE, GCPhys /* phys = virt in this mode */); 1823 1823 1824 1824 X86DESCATTR attr; … … 1833 1833 rc = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_TR, pCtx->tr.Sel); 1834 1834 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_TR_LIMIT, pCtx->tr.u32Limit); 1835 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_TR_BASE, pCtx->tr.u64Base);1835 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_TR_BASE, pCtx->tr.u64Base); 1836 1836 1837 1837 val = pCtx->tr.Attr.u; … … 1859 1859 { 1860 1860 rc = VMXWriteVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT, pCtx->gdtr.cbGdt); 1861 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_GDTR_BASE, pCtx->gdtr.pGdt);1861 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_GDTR_BASE, pCtx->gdtr.pGdt); 1862 1862 AssertRC(rc); 1863 1863 } … … 1869 1869 { 1870 1870 rc = VMXWriteVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT, pCtx->idtr.cbIdt); 1871 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_IDTR_BASE, pCtx->idtr.pIdt);1871 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_IDTR_BASE, pCtx->idtr.pIdt); 1872 1872 AssertRC(rc); 1873 1873 } … … 1879 1879 { 1880 1880 rc = VMXWriteVMCS(VMX_VMCS32_GUEST_SYSENTER_CS, pCtx->SysEnter.cs); 1881 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_SYSENTER_EIP, pCtx->SysEnter.eip);1882 rc |= VMXWriteVMCS64(VMX_VMCS 64_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); 1883 1883 AssertRC(rc); 1884 1884 } … … 1923 1923 | VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR3_STORE_EXIT; 1924 1924 } 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); 1926 1926 AssertRC(rc); 1927 1927 } … … 1935 1935 val &= ~(X86_CR0_CD|X86_CR0_NW); 1936 1936 1937 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_CR0, val);1937 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_CR0, val); 1938 1938 Log2(("Guest CR0 %08x\n", val)); 1939 1939 … … 2015 2015 } 2016 2016 2017 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_CR4, val);2017 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_CR4, val); 2018 2018 Log2(("Guest CR4 %08x\n", val)); 2019 2019 … … 2057 2057 | (VMX_EPT_PAGE_WALK_LENGTH_DEFAULT << VMX_EPT_PAGE_WALK_LENGTH_SHIFT); 2058 2058 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); 2060 2060 AssertRC(rc); 2061 2061 … … 2090 2090 2091 2091 /* Save our shadow CR3 register. */ 2092 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_CR3, val);2092 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_CR3, val); 2093 2093 AssertRC(rc); 2094 2094 } … … 2107 2107 2108 2108 /* Resync DR7 */ 2109 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_DR7, pCtx->dr[7]);2109 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]); 2110 2110 AssertRC(rc); 2111 2111 … … 2123 2123 2124 2124 /* Override dr7 with the hypervisor value. */ 2125 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_DR7, CPUMGetHyperDR7(pVCpu));2125 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, CPUMGetHyperDR7(pVCpu)); 2126 2126 AssertRC(rc); 2127 2127 } … … 2137 2137 /* Disable DRx move intercepts. */ 2138 2138 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); 2140 2140 AssertRC(rc); 2141 2141 … … 2146 2146 2147 2147 /* IA32_DEBUGCTL MSR. */ 2148 rc = VMXWriteVMCS64(VMX_VMCS _GUEST_DEBUGCTL_FULL, 0);2148 rc = VMXWriteVMCS64(VMX_VMCS64_GUEST_DEBUGCTL_FULL, 0); 2149 2149 AssertRC(rc); 2150 2150 … … 2173 2173 { 2174 2174 /* Update these as wrmsr might have changed them. */ 2175 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_FS_BASE, pCtx->fs.u64Base);2175 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_FS_BASE, pCtx->fs.u64Base); 2176 2176 AssertRC(rc); 2177 rc = VMXWriteVMCS64(VMX_VMCS 64_GUEST_GS_BASE, pCtx->gs.u64Base);2177 rc = VMXWriteVMCS64(VMX_VMCS_GUEST_GS_BASE, pCtx->gs.u64Base); 2178 2178 AssertRC(rc); 2179 2179 } … … 2247 2247 pVCpu->hm.s.vmx.cCachedMsrs = idxMsr; 2248 2248 2249 rc = VMXWriteVMCS(VMX_VMCS _CTRL_ENTRY_MSR_LOAD_COUNT, idxMsr);2249 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_MSR_LOAD_COUNT, idxMsr); 2250 2250 AssertRC(rc); 2251 2251 2252 rc = VMXWriteVMCS(VMX_VMCS _CTRL_EXIT_MSR_STORE_COUNT, idxMsr);2252 rc = VMXWriteVMCS(VMX_VMCS32_CTRL_EXIT_MSR_STORE_COUNT, idxMsr); 2253 2253 AssertRC(rc); 2254 2254 #endif /* VBOX_WITH_AUTO_MSR_LOAD_RESTORE */ … … 2279 2279 { 2280 2280 /* 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); 2282 2282 AssertRC(rc); 2283 2283 2284 2284 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); 2286 2286 AssertRC(rc); 2287 2287 STAM_COUNTER_INC(&pVCpu->hm.s.StatTscOffset); … … 2295 2295 TMCpuTickGet(pVCpu))); 2296 2296 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); 2298 2298 AssertRC(rc); 2299 2299 STAM_COUNTER_INC(&pVCpu->hm.s.StatTscInterceptOverFlow); … … 2303 2303 { 2304 2304 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); 2306 2306 AssertRC(rc); 2307 2307 STAM_COUNTER_INC(&pVCpu->hm.s.StatTscIntercept); … … 2332 2332 2333 2333 /* First sync back EIP, ESP, and EFLAGS. */ 2334 rc = VMXReadCachedVMCS(VMX_VMCS 64_GUEST_RIP, &val);2334 rc = VMXReadCachedVMCS(VMX_VMCS_GUEST_RIP, &val); 2335 2335 AssertRC(rc); 2336 2336 pCtx->rip = val; 2337 rc = VMXReadCachedVMCS(VMX_VMCS 64_GUEST_RSP, &val);2337 rc = VMXReadCachedVMCS(VMX_VMCS_GUEST_RSP, &val); 2338 2338 AssertRC(rc); 2339 2339 pCtx->rsp = val; … … 2356 2356 /* Control registers. */ 2357 2357 VMXReadCachedVMCS(VMX_VMCS_CTRL_CR0_READ_SHADOW, &valShadow); 2358 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_CR0,&val);2358 VMXReadCachedVMCS(VMX_VMCS_GUEST_CR0, &val); 2359 2359 val = (valShadow & pVCpu->hm.s.vmx.cr0_mask) | (val & ~pVCpu->hm.s.vmx.cr0_mask); 2360 2360 CPUMSetGuestCR0(pVCpu, val); 2361 2361 2362 2362 VMXReadCachedVMCS(VMX_VMCS_CTRL_CR4_READ_SHADOW, &valShadow); 2363 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_CR4,&val);2363 VMXReadCachedVMCS(VMX_VMCS_GUEST_CR4, &val); 2364 2364 val = (valShadow & pVCpu->hm.s.vmx.cr4_mask) | (val & ~pVCpu->hm.s.vmx.cr4_mask); 2365 2365 CPUMSetGuestCR4(pVCpu, val); … … 2377 2377 CPUMSetGuestCR2(pVCpu, pCache->cr2); 2378 2378 2379 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_CR3, &val);2379 VMXReadCachedVMCS(VMX_VMCS_GUEST_CR3, &val); 2380 2380 2381 2381 if (val != pCtx->cr3) … … 2389 2389 2390 2390 /* Sync back DR7. */ 2391 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_DR7, &val);2391 VMXReadCachedVMCS(VMX_VMCS_GUEST_DR7, &val); 2392 2392 pCtx->dr[7] = val; 2393 2393 … … 2403 2403 VMXReadCachedVMCS(VMX_VMCS32_GUEST_SYSENTER_CS, &val); 2404 2404 pCtx->SysEnter.cs = val; 2405 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_SYSENTER_EIP, &val);2405 VMXReadCachedVMCS(VMX_VMCS_GUEST_SYSENTER_EIP, &val); 2406 2406 pCtx->SysEnter.eip = val; 2407 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_SYSENTER_ESP, &val);2407 VMXReadCachedVMCS(VMX_VMCS_GUEST_SYSENTER_ESP, &val); 2408 2408 pCtx->SysEnter.esp = val; 2409 2409 … … 2413 2413 VMXReadCachedVMCS(VMX_VMCS32_GUEST_GDTR_LIMIT, &val); 2414 2414 pCtx->gdtr.cbGdt = val; 2415 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_GDTR_BASE, &val);2415 VMXReadCachedVMCS(VMX_VMCS_GUEST_GDTR_BASE, &val); 2416 2416 pCtx->gdtr.pGdt = val; 2417 2417 2418 2418 VMXReadCachedVMCS(VMX_VMCS32_GUEST_IDTR_LIMIT, &val); 2419 2419 pCtx->idtr.cbIdt = val; 2420 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_IDTR_BASE, &val);2420 VMXReadCachedVMCS(VMX_VMCS_GUEST_IDTR_BASE, &val); 2421 2421 pCtx->idtr.pIdt = val; 2422 2422 … … 2835 2835 * originated before a VM reset *after* the VM has been reset. See @bugref{6220}. 2836 2836 */ 2837 VMXWriteVMCS(VMX_VMCS _CTRL_ENTRY_IRQ_INFO, 0);2837 VMXWriteVMCS(VMX_VMCS32_CTRL_ENTRY_IRQ_INFO, 0); 2838 2838 2839 2839 #ifdef VBOX_STRICT … … 2841 2841 RTCCUINTREG val2; 2842 2842 2843 rc2 = VMXReadVMCS(VMX_VMCS _CTRL_PIN_EXEC_CONTROLS, &val2);2843 rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_PIN_EXEC_CONTROLS, &val2); 2844 2844 AssertRC(rc2); 2845 2845 Log2(("VMX_VMCS_CTRL_PIN_EXEC_CONTROLS = %08x\n", val2)); … … 2853 2853 Log(("Invalid VMX_VMCS_CTRL_PIN_EXEC_CONTROLS: one\n")); 2854 2854 2855 rc2 = VMXReadVMCS(VMX_VMCS _CTRL_PROC_EXEC_CONTROLS, &val2);2855 rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_PROC_EXEC_CONTROLS, &val2); 2856 2856 AssertRC(rc2); 2857 2857 Log2(("VMX_VMCS_CTRL_PROC_EXEC_CONTROLS = %08x\n", val2)); … … 2875 2875 Log(("Invalid VMX_VMCS_CTRL_PROC_EXEC_CONTROLS: one\n")); 2876 2876 2877 rc2 = VMXReadVMCS(VMX_VMCS _CTRL_ENTRY_CONTROLS, &val2);2877 rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_ENTRY_CONTROLS, &val2); 2878 2878 AssertRC(rc2); 2879 2879 Log2(("VMX_VMCS_CTRL_ENTRY_CONTROLS = %08x\n", val2)); … … 2887 2887 Log(("Invalid VMX_VMCS_CTRL_ENTRY_CONTROLS: one\n")); 2888 2888 2889 rc2 = VMXReadVMCS(VMX_VMCS _CTRL_EXIT_CONTROLS, &val2);2889 rc2 = VMXReadVMCS(VMX_VMCS32_CTRL_EXIT_CONTROLS, &val2); 2890 2890 AssertRC(rc2); 2891 2891 Log2(("VMX_VMCS_CTRL_EXIT_CONTROLS = %08x\n", val2)); … … 3081 3081 3082 3082 /* 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); 3084 3084 AssertRC(VBOXSTRICTRC_VAL(rc)); 3085 3085 … … 3408 3408 { 3409 3409 Assert(exitReason == VMX_EXIT_EXTERNAL_IRQ); 3410 #if 0 //def VBOX_WITH_VMMR0_DISABLE_PREEMPTION3411 if ( RTThreadPreemptIsPendingTrusty()3412 && !RTThreadPreemptIsPending(NIL_RTTHREAD))3413 goto ResumeExecution;3414 #endif3415 3410 /* External interrupt; leave to allow it to be dispatched again. */ 3416 3411 rc = VINF_EM_RAW_INTERRUPT; … … 3655 3650 3656 3651 /* Resync DR7 */ 3657 rc2 = VMXWriteVMCS64(VMX_VMCS 64_GUEST_DR7, pCtx->dr[7]);3652 rc2 = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]); 3658 3653 AssertRC(rc2); 3659 3654 … … 4024 4019 Assert(pVM->hm.s.fNestedPaging); 4025 4020 4026 rc2 = VMXReadVMCS64(VMX_VMCS _EXIT_PHYS_ADDR_FULL, &GCPhys);4021 rc2 = VMXReadVMCS64(VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL, &GCPhys); 4027 4022 AssertRC(rc2); 4028 4023 Assert(((exitQualification >> 7) & 3) != 2); … … 4098 4093 Assert(pVM->hm.s.fNestedPaging); 4099 4094 4100 rc2 = VMXReadVMCS64(VMX_VMCS _EXIT_PHYS_ADDR_FULL, &GCPhys);4095 rc2 = VMXReadVMCS64(VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL, &GCPhys); 4101 4096 AssertRC(rc2); 4102 4097 Log(("VMX_EXIT_EPT_MISCONFIG for %RGp\n", GCPhys)); … … 4144 4139 VMCPU_FF_ISPENDING(pVCpu, (VMCPU_FF_INTERRUPT_APIC|VMCPU_FF_INTERRUPT_PIC)), pCtx->eflags.Bits.u1IF)); 4145 4140 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); 4147 4142 AssertRC(rc2); 4148 4143 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitIrqWindow); … … 4399 4394 /* Disable DRx move intercepts. */ 4400 4395 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); 4402 4397 AssertRC(rc2); 4403 4398 … … 4589 4584 4590 4585 /* Resync DR7 */ 4591 rc2 = VMXWriteVMCS64(VMX_VMCS 64_GUEST_DR7, pCtx->dr[7]);4586 rc2 = VMXWriteVMCS64(VMX_VMCS_GUEST_DR7, pCtx->dr[7]); 4592 4587 AssertRC(rc2); 4593 4588 … … 4765 4760 LogFlow(("VMX_EXIT_MTF at %RGv\n", (RTGCPTR)pCtx->rip)); 4766 4761 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); 4768 4763 AssertRC(rc2); 4769 4764 STAM_COUNTER_INC(&pVCpu->hm.s.StatExitMtf); … … 4836 4831 Log(("VMX_EXIT_ERR_INVALID_GUEST_STATE\n")); 4837 4832 4838 VMXReadVMCS(VMX_VMCS 64_GUEST_RIP, &val2);4833 VMXReadVMCS(VMX_VMCS_GUEST_RIP, &val2); 4839 4834 Log(("Old eip %RGv new %RGv\n", (RTGCPTR)pCtx->rip, (RTGCPTR)val2)); 4840 4835 4841 VMXReadVMCS(VMX_VMCS 64_GUEST_CR0, &val2);4836 VMXReadVMCS(VMX_VMCS_GUEST_CR0, &val2); 4842 4837 Log(("VMX_VMCS_GUEST_CR0 %RX64\n", (uint64_t)val2)); 4843 4838 4844 VMXReadVMCS(VMX_VMCS 64_GUEST_CR3, &val2);4839 VMXReadVMCS(VMX_VMCS_GUEST_CR3, &val2); 4845 4840 Log(("VMX_VMCS_GUEST_CR3 %RX64\n", (uint64_t)val2)); 4846 4841 4847 VMXReadVMCS(VMX_VMCS 64_GUEST_CR4, &val2);4842 VMXReadVMCS(VMX_VMCS_GUEST_CR4, &val2); 4848 4843 Log(("VMX_VMCS_GUEST_CR4 %RX64\n", (uint64_t)val2)); 4849 4844 … … 4860 4855 VMX_LOG_SELREG(LDTR, "LDTR", val2); 4861 4856 4862 VMXReadVMCS(VMX_VMCS 64_GUEST_GDTR_BASE, &val2);4857 VMXReadVMCS(VMX_VMCS_GUEST_GDTR_BASE, &val2); 4863 4858 Log(("VMX_VMCS_GUEST_GDTR_BASE %RX64\n", (uint64_t)val2)); 4864 VMXReadVMCS(VMX_VMCS 64_GUEST_IDTR_BASE, &val2);4859 VMXReadVMCS(VMX_VMCS_GUEST_IDTR_BASE, &val2); 4865 4860 Log(("VMX_VMCS_GUEST_IDTR_BASE %RX64\n", (uint64_t)val2)); 4866 4861 #endif /* VBOX_STRICT */ … … 5000 4995 /* Enable DRx move intercepts again. */ 5001 4996 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); 5003 4998 AssertRC(rc); 5004 4999 … … 5191 5186 ASMGetGDTR(&gdtr); 5192 5187 5193 VMXReadVMCS(VMX_VMCS 64_GUEST_RIP, &val);5188 VMXReadVMCS(VMX_VMCS_GUEST_RIP, &val); 5194 5189 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); 5196 5191 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); 5198 5193 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); 5200 5195 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); 5202 5197 Log(("VMX_VMCS_CTRL_EXIT_CONTROLS %08x\n", val)); 5203 5198 … … 5387 5382 switch (idxField) 5388 5383 { 5389 case VMX_VMCS 64_GUEST_RIP:5390 case VMX_VMCS 64_GUEST_RSP:5384 case VMX_VMCS_GUEST_RIP: 5385 case VMX_VMCS_GUEST_RSP: 5391 5386 case VMX_VMCS_GUEST_RFLAGS: 5392 5387 case VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE: 5393 5388 case VMX_VMCS_CTRL_CR0_READ_SHADOW: 5394 case VMX_VMCS 64_GUEST_CR0:5389 case VMX_VMCS_GUEST_CR0: 5395 5390 case VMX_VMCS_CTRL_CR4_READ_SHADOW: 5396 case VMX_VMCS 64_GUEST_CR4:5397 case VMX_VMCS 64_GUEST_DR7:5391 case VMX_VMCS_GUEST_CR4: 5392 case VMX_VMCS_GUEST_DR7: 5398 5393 case VMX_VMCS32_GUEST_SYSENTER_CS: 5399 case VMX_VMCS 64_GUEST_SYSENTER_EIP:5400 case VMX_VMCS 64_GUEST_SYSENTER_ESP:5394 case VMX_VMCS_GUEST_SYSENTER_EIP: 5395 case VMX_VMCS_GUEST_SYSENTER_ESP: 5401 5396 case VMX_VMCS32_GUEST_GDTR_LIMIT: 5402 5397 case VMX_VMCS64_GUEST_GDTR_BASE: 5403 5398 case VMX_VMCS32_GUEST_IDTR_LIMIT: 5404 case VMX_VMCS 64_GUEST_IDTR_BASE:5399 case VMX_VMCS_GUEST_IDTR_BASE: 5405 5400 case VMX_VMCS16_GUEST_FIELD_CS: 5406 5401 case VMX_VMCS32_GUEST_CS_LIMIT: 5407 case VMX_VMCS 64_GUEST_CS_BASE:5402 case VMX_VMCS_GUEST_CS_BASE: 5408 5403 case VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS: 5409 5404 case VMX_VMCS16_GUEST_FIELD_DS: 5410 5405 case VMX_VMCS32_GUEST_DS_LIMIT: 5411 case VMX_VMCS 64_GUEST_DS_BASE:5406 case VMX_VMCS_GUEST_DS_BASE: 5412 5407 case VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS: 5413 5408 case VMX_VMCS16_GUEST_FIELD_ES: 5414 5409 case VMX_VMCS32_GUEST_ES_LIMIT: 5415 case VMX_VMCS 64_GUEST_ES_BASE:5410 case VMX_VMCS_GUEST_ES_BASE: 5416 5411 case VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS: 5417 5412 case VMX_VMCS16_GUEST_FIELD_FS: 5418 5413 case VMX_VMCS32_GUEST_FS_LIMIT: 5419 case VMX_VMCS 64_GUEST_FS_BASE:5414 case VMX_VMCS_GUEST_FS_BASE: 5420 5415 case VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS: 5421 5416 case VMX_VMCS16_GUEST_FIELD_GS: 5422 5417 case VMX_VMCS32_GUEST_GS_LIMIT: 5423 case VMX_VMCS 64_GUEST_GS_BASE:5418 case VMX_VMCS_GUEST_GS_BASE: 5424 5419 case VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS: 5425 5420 case VMX_VMCS16_GUEST_FIELD_SS: 5426 5421 case VMX_VMCS32_GUEST_SS_LIMIT: 5427 case VMX_VMCS 64_GUEST_SS_BASE:5422 case VMX_VMCS_GUEST_SS_BASE: 5428 5423 case VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS: 5429 5424 case VMX_VMCS16_GUEST_FIELD_LDTR: … … 5433 5428 case VMX_VMCS16_GUEST_FIELD_TR: 5434 5429 case VMX_VMCS32_GUEST_TR_LIMIT: 5435 case VMX_VMCS 64_GUEST_TR_BASE:5430 case VMX_VMCS_GUEST_TR_BASE: 5436 5431 case VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS: 5437 5432 case VMX_VMCS32_RO_EXIT_REASON: … … 5444 5439 case VMX_VMCS32_RO_IDT_INFO: 5445 5440 case VMX_VMCS32_RO_IDT_ERRCODE: 5446 case VMX_VMCS 64_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: 5448 5443 return true; 5449 5444 } … … 5578 5573 switch (idxField) 5579 5574 { 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: 5597 5592 /* These fields consist of two parts, which are both writable in 32 bits mode. */ 5598 5593 rc = VMXWriteVMCS32(idxField, u64Val); … … 5601 5596 return rc; 5602 5597 5603 case VMX_VMCS 64_GUEST_LDTR_BASE:5604 case VMX_VMCS 64_GUEST_TR_BASE:5605 case VMX_VMCS 64_GUEST_GDTR_BASE:5606 case VMX_VMCS 64_GUEST_IDTR_BASE:5607 case VMX_VMCS 64_GUEST_SYSENTER_EIP:5608 case VMX_VMCS 64_GUEST_SYSENTER_ESP:5609 case VMX_VMCS 64_GUEST_CR0:5610 case VMX_VMCS 64_GUEST_CR4:5611 case VMX_VMCS 64_GUEST_CR3:5612 case VMX_VMCS 64_GUEST_DR7:5613 case VMX_VMCS 64_GUEST_RIP:5614 case VMX_VMCS 64_GUEST_RSP:5615 case VMX_VMCS 64_GUEST_CS_BASE:5616 case VMX_VMCS 64_GUEST_DS_BASE:5617 case VMX_VMCS 64_GUEST_ES_BASE:5618 case VMX_VMCS 64_GUEST_FS_BASE:5619 case VMX_VMCS 64_GUEST_GS_BASE:5620 case VMX_VMCS 64_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: 5621 5616 /* Queue a 64 bits value as we can't set it in 32 bits host mode. */ 5622 5617 if (u64Val >> 32ULL) -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.h
r43387 r43700 37 37 38 38 /* Read cache indices. */ 39 #define VMX_VMCS 64_GUEST_RIP_CACHE_IDX040 #define VMX_VMCS 64_GUEST_RSP_CACHE_IDX139 #define VMX_VMCS_GUEST_RIP_CACHE_IDX 0 40 #define VMX_VMCS_GUEST_RSP_CACHE_IDX 1 41 41 #define VMX_VMCS_GUEST_RFLAGS_CACHE_IDX 2 42 42 #define VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE_CACHE_IDX 3 43 43 #define VMX_VMCS_CTRL_CR0_READ_SHADOW_CACHE_IDX 4 44 #define VMX_VMCS 64_GUEST_CR0_CACHE_IDX544 #define VMX_VMCS_GUEST_CR0_CACHE_IDX 5 45 45 #define VMX_VMCS_CTRL_CR4_READ_SHADOW_CACHE_IDX 6 46 #define VMX_VMCS 64_GUEST_CR4_CACHE_IDX747 #define VMX_VMCS 64_GUEST_DR7_CACHE_IDX846 #define VMX_VMCS_GUEST_CR4_CACHE_IDX 7 47 #define VMX_VMCS_GUEST_DR7_CACHE_IDX 8 48 48 #define VMX_VMCS32_GUEST_SYSENTER_CS_CACHE_IDX 9 49 #define VMX_VMCS 64_GUEST_SYSENTER_EIP_CACHE_IDX1050 #define VMX_VMCS 64_GUEST_SYSENTER_ESP_CACHE_IDX1149 #define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 10 50 #define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 11 51 51 #define VMX_VMCS32_GUEST_GDTR_LIMIT_CACHE_IDX 12 52 #define VMX_VMCS 64_GUEST_GDTR_BASE_CACHE_IDX1352 #define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX 13 53 53 #define VMX_VMCS32_GUEST_IDTR_LIMIT_CACHE_IDX 14 54 #define VMX_VMCS 64_GUEST_IDTR_BASE_CACHE_IDX1554 #define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX 15 55 55 #define VMX_VMCS16_GUEST_FIELD_CS_CACHE_IDX 16 56 56 #define VMX_VMCS32_GUEST_CS_LIMIT_CACHE_IDX 17 57 #define VMX_VMCS 64_GUEST_CS_BASE_CACHE_IDX1857 #define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX 18 58 58 #define VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS_CACHE_IDX 19 59 59 #define VMX_VMCS16_GUEST_FIELD_DS_CACHE_IDX 20 60 60 #define VMX_VMCS32_GUEST_DS_LIMIT_CACHE_IDX 21 61 #define VMX_VMCS 64_GUEST_DS_BASE_CACHE_IDX2261 #define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX 22 62 62 #define VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS_CACHE_IDX 23 63 63 #define VMX_VMCS16_GUEST_FIELD_ES_CACHE_IDX 24 64 64 #define VMX_VMCS32_GUEST_ES_LIMIT_CACHE_IDX 25 65 #define VMX_VMCS 64_GUEST_ES_BASE_CACHE_IDX2665 #define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX 26 66 66 #define VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS_CACHE_IDX 27 67 67 #define VMX_VMCS16_GUEST_FIELD_FS_CACHE_IDX 28 68 68 #define VMX_VMCS32_GUEST_FS_LIMIT_CACHE_IDX 29 69 #define VMX_VMCS 64_GUEST_FS_BASE_CACHE_IDX3069 #define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX 30 70 70 #define VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS_CACHE_IDX 31 71 71 #define VMX_VMCS16_GUEST_FIELD_GS_CACHE_IDX 32 72 72 #define VMX_VMCS32_GUEST_GS_LIMIT_CACHE_IDX 33 73 #define VMX_VMCS 64_GUEST_GS_BASE_CACHE_IDX3473 #define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX 34 74 74 #define VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS_CACHE_IDX 35 75 75 #define VMX_VMCS16_GUEST_FIELD_SS_CACHE_IDX 36 76 76 #define VMX_VMCS32_GUEST_SS_LIMIT_CACHE_IDX 37 77 #define VMX_VMCS 64_GUEST_SS_BASE_CACHE_IDX3877 #define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX 38 78 78 #define VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS_CACHE_IDX 39 79 79 #define VMX_VMCS16_GUEST_FIELD_TR_CACHE_IDX 40 80 80 #define VMX_VMCS32_GUEST_TR_LIMIT_CACHE_IDX 41 81 #define VMX_VMCS 64_GUEST_TR_BASE_CACHE_IDX4281 #define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX 42 82 82 #define VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS_CACHE_IDX 43 83 83 #define VMX_VMCS16_GUEST_FIELD_LDTR_CACHE_IDX 44 84 84 #define VMX_VMCS32_GUEST_LDTR_LIMIT_CACHE_IDX 45 85 #define VMX_VMCS 64_GUEST_LDTR_BASE_CACHE_IDX4685 #define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX 46 86 86 #define VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS_CACHE_IDX 47 87 87 #define VMX_VMCS32_RO_EXIT_REASON_CACHE_IDX 48 … … 95 95 #define VMX_VMCS32_RO_IDT_ERRCODE_CACHE_IDX 56 96 96 #define VMX_VMCS_MAX_CACHE_IDX (VMX_VMCS32_RO_IDT_ERRCODE_CACHE_IDX+1) 97 #define VMX_VMCS 64_GUEST_CR3_CACHE_IDX5798 #define VMX_VMCS _EXIT_PHYS_ADDR_FULL_CACHE_IDX5899 #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) 100 100 101 101 … … 211 211 rc = VMXWriteVMCS(VMX_VMCS16_GUEST_FIELD_##REG, pCtx->reg.Sel); \ 212 212 rc |= VMXWriteVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT, pCtx->reg.u32Limit); \ 213 rc |= VMXWriteVMCS64(VMX_VMCS 64_GUEST_##REG##_BASE,pCtx->reg.u64Base); \213 rc |= VMXWriteVMCS64(VMX_VMCS_GUEST_##REG##_BASE, pCtx->reg.u64Base); \ 214 214 if ((pCtx->eflags.u32 & X86_EFL_VM)) \ 215 215 { \ … … 250 250 VMXReadCachedVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT, &val); \ 251 251 pCtx->reg.u32Limit = val; \ 252 VMXReadCachedVMCS(VMX_VMCS 64_GUEST_##REG##_BASE,&val); \252 VMXReadCachedVMCS(VMX_VMCS_GUEST_##REG##_BASE, &val); \ 253 253 pCtx->reg.u64Base = val; \ 254 254 VMXReadCachedVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &val); \ … … 264 264 VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_LIMIT, &(val)); \ 265 265 Log(("%s Limit %x\n", szSelReg, (val))); \ 266 VMXReadVMCS(VMX_VMCS 64_GUEST_##REG##_BASE,&(val)); \266 VMXReadVMCS(VMX_VMCS_GUEST_##REG##_BASE, &(val)); \ 267 267 Log(("%s Base %RX64\n", szSelReg, (uint64_t)(val))); \ 268 268 VMXReadVMCS(VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS, &(val)); \ … … 327 327 VMXSetupCachedReadVMCS(pCache, VMX_VMCS16_GUEST_FIELD_##REG); \ 328 328 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_##REG##_LIMIT); \ 329 VMXSetupCachedReadVMCS(pCache, VMX_VMCS 64_GUEST_##REG##_BASE); \329 VMXSetupCachedReadVMCS(pCache, VMX_VMCS_GUEST_##REG##_BASE); \ 330 330 VMXSetupCachedReadVMCS(pCache, VMX_VMCS32_GUEST_##REG##_ACCESS_RIGHTS); \ 331 331 }
Note:
See TracChangeset
for help on using the changeset viewer.

