Changeset 46267 in vbox for trunk/include/VBox/vmm
- Timestamp:
- May 26, 2013 11:29:24 AM (12 years ago)
- svn:sync-xref-src-repo-rev:
- 86004
- Location:
- trunk/include/VBox/vmm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm_vmx.h
r46004 r46267 37 37 */ 38 38 39 /** @name Host-state restoration flags. 40 * @{ 41 */ 42 /* If you change these values don't forget to update the assembly defines as well! */ 43 #define VMX_RESTORE_HOST_SEL_DS RT_BIT(0) 44 #define VMX_RESTORE_HOST_SEL_ES RT_BIT(1) 45 #define VMX_RESTORE_HOST_SEL_FS RT_BIT(2) 46 #define VMX_RESTORE_HOST_SEL_GS RT_BIT(3) 47 #define VMX_RESTORE_HOST_GDTR RT_BIT(4) 48 #define VMX_RESTORE_HOST_IDTR RT_BIT(5) 49 #define VMX_RESTORE_HOST_LDTR RT_BIT(6) 50 /** @} */ 51 52 /** 53 * Host-state restoration structure. 54 * This holds host-state fields that require manual restoration. The layout is 55 * critical as it's used from assembly code. 56 */ 57 #pragma pack(1) 58 typedef struct VMXRESTOREHOST 59 { 60 RTSEL uHostSelDS; /* 0x00 */ 61 RTSEL uHostSelES; /* 0x02 */ 62 RTSEL uHostSelFS; /* 0x04 */ 63 RTSEL uHostSelGS; /* 0x06 */ 64 uint64_t uHostFSBase; /* 0x08 */ 65 uint64_t uHostGSBase; /* 0x10 */ 66 X86XDTR64 HostGdtr; /* 0x18 */ 67 X86XDTR64 HostIdtr; /* 0x22 */ 68 } VMXRESTOREHOST; 69 #pragma pack() 70 /** Pointer to VMXRESTOREHOST. */ 71 typedef VMXRESTOREHOST *PVMXRESTOREHOST; 72 AssertCompileSize(X86XDTR64, 10); 73 AssertCompileMemberOffset(VMXRESTOREHOST, uHostSelES, 2); 74 AssertCompileMemberOffset(VMXRESTOREHOST, uHostSelFS, 4); 75 AssertCompileMemberOffset(VMXRESTOREHOST, uHostSelGS, 6); 76 AssertCompileMemberOffset(VMXRESTOREHOST, uHostFSBase, 8); 77 AssertCompileMemberOffset(VMXRESTOREHOST, uHostGSBase, 16); 78 AssertCompileMemberOffset(VMXRESTOREHOST, HostGdtr, 24); 79 AssertCompileMemberOffset(VMXRESTOREHOST, HostIdtr, 34); 80 AssertCompileSize(VMXRESTOREHOST, 44); 81 39 82 /** @name VMX VMCS-Read cache indices. 40 83 * @{ 41 84 */ 42 85 #ifndef VBOX_WITH_OLD_VTX_CODE 43 # define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX 44 # define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX 45 # define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX 46 # define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX 47 # define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX 48 # define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX 49 # define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX 50 # define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX 51 # define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX 52 # define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX 53 # define VMX_VMCS_GUEST_RSP_CACHE_IDX 54 # define VMX_VMCS_GUEST_RIP_CACHE_IDX 55 # define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 56 # define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 57 # define VMX_VMCS_RO_EXIT_QUALIFICATION_CACHE_IDX 58 # define VMX_VMCS_MAX_CACHE_IDX 59 # define VMX_VMCS_GUEST_CR3_CACHE_IDX 60 # define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX 86 # define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX 0 87 # define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX 1 88 # define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX 2 89 # define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX 3 90 # define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX 4 91 # define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX 5 92 # define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX 6 93 # define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX 7 94 # define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX 8 95 # define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX 9 96 # define VMX_VMCS_GUEST_RSP_CACHE_IDX 10 97 # define VMX_VMCS_GUEST_RIP_CACHE_IDX 11 98 # define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 12 99 # define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 13 100 # define VMX_VMCS_RO_EXIT_QUALIFICATION_CACHE_IDX 14 101 # define VMX_VMCS_MAX_CACHE_IDX (VMX_VMCS_RO_EXIT_QUALIFICATION_CACHE_IDX + 1) 102 # define VMX_VMCS_GUEST_CR3_CACHE_IDX 15 103 # define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX (VMX_VMCS_GUEST_CR3_CACHE_IDX + 1) 61 104 #else /* VBOX_WITH_OLD_VTX_CODE */ 62 # define VMX_VMCS_GUEST_RIP_CACHE_IDX 63 # define VMX_VMCS_GUEST_RSP_CACHE_IDX 64 # define VMX_VMCS_GUEST_RFLAGS_CACHE_IDX 65 # define VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE_CACHE_IDX 66 # define VMX_VMCS_CTRL_CR0_READ_SHADOW_CACHE_IDX 67 # define VMX_VMCS_GUEST_CR0_CACHE_IDX 68 # define VMX_VMCS_CTRL_CR4_READ_SHADOW_CACHE_IDX 69 # define VMX_VMCS_GUEST_CR4_CACHE_IDX 70 # define VMX_VMCS_GUEST_DR7_CACHE_IDX 71 # define VMX_VMCS32_GUEST_SYSENTER_CS_CACHE_IDX 72 # define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 73 # define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 74 # define VMX_VMCS32_GUEST_GDTR_LIMIT_CACHE_IDX 75 # define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX 76 # define VMX_VMCS32_GUEST_IDTR_LIMIT_CACHE_IDX 77 # define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX 78 # define VMX_VMCS16_GUEST_FIELD_CS_CACHE_IDX 79 # define VMX_VMCS32_GUEST_CS_LIMIT_CACHE_IDX 80 # define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX 81 # define VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS_CACHE_IDX 82 # define VMX_VMCS16_GUEST_FIELD_DS_CACHE_IDX 83 # define VMX_VMCS32_GUEST_DS_LIMIT_CACHE_IDX 84 # define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX 85 # define VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS_CACHE_IDX 86 # define VMX_VMCS16_GUEST_FIELD_ES_CACHE_IDX 87 # define VMX_VMCS32_GUEST_ES_LIMIT_CACHE_IDX 88 # define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX 89 # define VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS_CACHE_IDX 90 # define VMX_VMCS16_GUEST_FIELD_FS_CACHE_IDX 91 # define VMX_VMCS32_GUEST_FS_LIMIT_CACHE_IDX 92 # define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX 93 # define VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS_CACHE_IDX 94 # define VMX_VMCS16_GUEST_FIELD_GS_CACHE_IDX 95 # define VMX_VMCS32_GUEST_GS_LIMIT_CACHE_IDX 96 # define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX 97 # define VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS_CACHE_IDX 98 # define VMX_VMCS16_GUEST_FIELD_SS_CACHE_IDX 99 # define VMX_VMCS32_GUEST_SS_LIMIT_CACHE_IDX 100 # define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX 101 # define VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS_CACHE_IDX 102 # define VMX_VMCS16_GUEST_FIELD_TR_CACHE_IDX 103 # define VMX_VMCS32_GUEST_TR_LIMIT_CACHE_IDX 104 # define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX 105 # define VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS_CACHE_IDX 106 # define VMX_VMCS16_GUEST_FIELD_LDTR_CACHE_IDX 107 # define VMX_VMCS32_GUEST_LDTR_LIMIT_CACHE_IDX 108 # define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX 109 # define VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS_CACHE_IDX 110 # define VMX_VMCS32_RO_EXIT_REASON_CACHE_IDX 111 # define VMX_VMCS32_RO_VM_INSTR_ERROR_CACHE_IDX 112 # define VMX_VMCS32_RO_EXIT_INSTR_LENGTH_CACHE_IDX 113 # define VMX_VMCS32_RO_EXIT_INTERRUPTION_ERROR_CODE_CACHE_IDX 114 # define VMX_VMCS32_RO_EXIT_INSTR_INFO_CACHE_IDX 115 # define VMX_VMCS32_RO_EXIT_INTERRUPTION_INFO_CACHE_IDX 116 # define VMX_VMCS_RO_EXIT_QUALIFICATION_CACHE_IDX 117 # define VMX_VMCS32_RO_IDT_INFO_CACHE_IDX 118 # define VMX_VMCS32_RO_IDT_ERROR_CODE_CACHE_IDX 119 # define VMX_VMCS_MAX_CACHE_IDX 120 # define VMX_VMCS_GUEST_CR3_CACHE_IDX 121 # define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL_CACHE_IDX 122 # define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX 105 # define VMX_VMCS_GUEST_RIP_CACHE_IDX 0 106 # define VMX_VMCS_GUEST_RSP_CACHE_IDX 1 107 # define VMX_VMCS_GUEST_RFLAGS_CACHE_IDX 2 108 # define VMX_VMCS32_GUEST_INTERRUPTIBILITY_STATE_CACHE_IDX 3 109 # define VMX_VMCS_CTRL_CR0_READ_SHADOW_CACHE_IDX 4 110 # define VMX_VMCS_GUEST_CR0_CACHE_IDX 5 111 # define VMX_VMCS_CTRL_CR4_READ_SHADOW_CACHE_IDX 6 112 # define VMX_VMCS_GUEST_CR4_CACHE_IDX 7 113 # define VMX_VMCS_GUEST_DR7_CACHE_IDX 8 114 # define VMX_VMCS32_GUEST_SYSENTER_CS_CACHE_IDX 9 115 # define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 10 116 # define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 11 117 # define VMX_VMCS32_GUEST_GDTR_LIMIT_CACHE_IDX 12 118 # define VMX_VMCS_GUEST_GDTR_BASE_CACHE_IDX 13 119 # define VMX_VMCS32_GUEST_IDTR_LIMIT_CACHE_IDX 14 120 # define VMX_VMCS_GUEST_IDTR_BASE_CACHE_IDX 15 121 # define VMX_VMCS16_GUEST_FIELD_CS_CACHE_IDX 16 122 # define VMX_VMCS32_GUEST_CS_LIMIT_CACHE_IDX 17 123 # define VMX_VMCS_GUEST_CS_BASE_CACHE_IDX 18 124 # define VMX_VMCS32_GUEST_CS_ACCESS_RIGHTS_CACHE_IDX 19 125 # define VMX_VMCS16_GUEST_FIELD_DS_CACHE_IDX 20 126 # define VMX_VMCS32_GUEST_DS_LIMIT_CACHE_IDX 21 127 # define VMX_VMCS_GUEST_DS_BASE_CACHE_IDX 22 128 # define VMX_VMCS32_GUEST_DS_ACCESS_RIGHTS_CACHE_IDX 23 129 # define VMX_VMCS16_GUEST_FIELD_ES_CACHE_IDX 24 130 # define VMX_VMCS32_GUEST_ES_LIMIT_CACHE_IDX 25 131 # define VMX_VMCS_GUEST_ES_BASE_CACHE_IDX 26 132 # define VMX_VMCS32_GUEST_ES_ACCESS_RIGHTS_CACHE_IDX 27 133 # define VMX_VMCS16_GUEST_FIELD_FS_CACHE_IDX 28 134 # define VMX_VMCS32_GUEST_FS_LIMIT_CACHE_IDX 29 135 # define VMX_VMCS_GUEST_FS_BASE_CACHE_IDX 30 136 # define VMX_VMCS32_GUEST_FS_ACCESS_RIGHTS_CACHE_IDX 31 137 # define VMX_VMCS16_GUEST_FIELD_GS_CACHE_IDX 32 138 # define VMX_VMCS32_GUEST_GS_LIMIT_CACHE_IDX 33 139 # define VMX_VMCS_GUEST_GS_BASE_CACHE_IDX 34 140 # define VMX_VMCS32_GUEST_GS_ACCESS_RIGHTS_CACHE_IDX 35 141 # define VMX_VMCS16_GUEST_FIELD_SS_CACHE_IDX 36 142 # define VMX_VMCS32_GUEST_SS_LIMIT_CACHE_IDX 37 143 # define VMX_VMCS_GUEST_SS_BASE_CACHE_IDX 38 144 # define VMX_VMCS32_GUEST_SS_ACCESS_RIGHTS_CACHE_IDX 39 145 # define VMX_VMCS16_GUEST_FIELD_TR_CACHE_IDX 40 146 # define VMX_VMCS32_GUEST_TR_LIMIT_CACHE_IDX 41 147 # define VMX_VMCS_GUEST_TR_BASE_CACHE_IDX 42 148 # define VMX_VMCS32_GUEST_TR_ACCESS_RIGHTS_CACHE_IDX 43 149 # define VMX_VMCS16_GUEST_FIELD_LDTR_CACHE_IDX 44 150 # define VMX_VMCS32_GUEST_LDTR_LIMIT_CACHE_IDX 45 151 # define VMX_VMCS_GUEST_LDTR_BASE_CACHE_IDX 46 152 # define VMX_VMCS32_GUEST_LDTR_ACCESS_RIGHTS_CACHE_IDX 47 153 # define VMX_VMCS32_RO_EXIT_REASON_CACHE_IDX 48 154 # define VMX_VMCS32_RO_VM_INSTR_ERROR_CACHE_IDX 49 155 # define VMX_VMCS32_RO_EXIT_INSTR_LENGTH_CACHE_IDX 50 156 # define VMX_VMCS32_RO_EXIT_INTERRUPTION_ERROR_CODE_CACHE_IDX 51 157 # define VMX_VMCS32_RO_EXIT_INSTR_INFO_CACHE_IDX 52 158 # define VMX_VMCS32_RO_EXIT_INTERRUPTION_INFO_CACHE_IDX 53 159 # define VMX_VMCS_RO_EXIT_QUALIFICATION_CACHE_IDX 54 160 # define VMX_VMCS32_RO_IDT_INFO_CACHE_IDX 55 161 # define VMX_VMCS32_RO_IDT_ERROR_CODE_CACHE_IDX 56 162 # define VMX_VMCS_MAX_CACHE_IDX (VMX_VMCS32_RO_IDT_ERROR_CODE_CACHE_IDX + 1) 163 # define VMX_VMCS_GUEST_CR3_CACHE_IDX 57 164 # define VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL_CACHE_IDX 58 165 # define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX (VMX_VMCS64_EXIT_GUEST_PHYS_ADDR_FULL_CACHE_IDX + 1) 123 166 #endif /* VBOX_WITH_OLD_VTX_CODE */ 124 167 /** @} */ 125 126 168 127 169 /** @name VMX EPT paging structures … … 1477 1519 1478 1520 /** 1521 * Restores some host-state fields that need not be done on every VM-exit. 1522 * 1523 * @returns VBox status code. 1524 * @param fRestoreHostFlags Flags of which host registers needs to be 1525 * restored. 1526 * @param pRestoreHost Pointer to the host-restore structure. 1527 */ 1528 DECLASM(int) VMXRestoreHostState(uint32_t fRestoreHostFlags, PVMXRESTOREHOST pRestoreHost); 1529 1530 1531 /** 1479 1532 * Executes VMXON 1480 1533 * -
trunk/include/VBox/vmm/hm_vmx.mac
r45947 r46267 152 152 %define VMX_VMCS_HOST_RIP 06C16h 153 153 154 %define VMX_RESTORE_HOST_SEL_DS 1h ;RT_BIT(0) 155 %define VMX_RESTORE_HOST_SEL_ES 2h ;RT_BIT(1) 156 %define VMX_RESTORE_HOST_SEL_FS 4h ;RT_BIT(2) 157 %define VMX_RESTORE_HOST_SEL_GS 8h ;RT_BIT(3) 158 %define VMX_RESTORE_HOST_GDTR 10h ;RT_BIT(4) 159 %define VMX_RESTORE_HOST_IDTR 20h ;RT_BIT(5) 160 %define VMX_RESTORE_HOST_LDTR 40h ;RT_BIT(6) 161 -
trunk/include/VBox/vmm/vm.h
r46155 r46267 149 149 struct HMCPU s; 150 150 #endif 151 uint8_t padding[5 440]; /* multiple of 64 */151 uint8_t padding[5504]; /* multiple of 64 */ 152 152 } hm; 153 153 … … 226 226 227 227 /** Align the following members on page boundary. */ 228 uint8_t abAlignment2[ 320];228 uint8_t abAlignment2[256]; 229 229 230 230 /** PGM part. */ -
trunk/include/VBox/vmm/vm.mac
r45870 r46267 135 135 136 136 .cpum resb 3584 137 .hm resb 5 440137 .hm resb 5504 138 138 .em resb 1472 139 139 .iem resb 3072
Note:
See TracChangeset
for help on using the changeset viewer.