Changeset 72744 in vbox for trunk/include/VBox
- Timestamp:
- Jun 29, 2018 7:36:19 AM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123280
- Location:
- trunk/include/VBox/vmm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/hm.h
r72643 r72744 217 217 VMMR0_INT_DECL(bool) HMR0SuspendPending(void); 218 218 VMMR0_INT_DECL(int) HMR0InvalidatePage(PVMCPU pVCpu, RTGCPTR GCVirt); 219 VMMR0_INT_DECL(int) HMR0ImportStateOnDemand(PVMCPU pVCpu, PCPUMCTX pCtx,uint64_t fWhat);219 VMMR0_INT_DECL(int) HMR0ImportStateOnDemand(PVMCPU pVCpu, uint64_t fWhat); 220 220 221 221 # if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) … … 224 224 VMMR0_INT_DECL(int) HMR0TestSwitcher3264(PVM pVM); 225 225 # endif 226 227 VMMR0_INT_DECL(int) HMR0EnsureCompleteBasicContext(PVMCPU pVCpu, PCPUMCTX pMixedCtx);228 226 229 227 /** @} */ -
trunk/include/VBox/vmm/hm_svm.h
r72643 r72744 1104 1104 do \ 1105 1105 { \ 1106 Assert((a_pCtx)->a_reg.fFlags & CPUMSELREG_FLAGS_VALID); \1107 Assert((a_pCtx)->a_reg.ValidSel == (a_pCtx)->a_reg.Sel); \1108 (a_pVmcbStateSave)->a_REG.u16Sel 1109 (a_pVmcbStateSave)->a_REG.u32Limit 1110 (a_pVmcbStateSave)->a_REG.u64Base 1111 (a_pVmcbStateSave)->a_REG.u16Attr 1106 Assert((a_pCtx)->a_reg.fFlags & CPUMSELREG_FLAGS_VALID); \ 1107 Assert((a_pCtx)->a_reg.ValidSel == (a_pCtx)->a_reg.Sel); \ 1108 (a_pVmcbStateSave)->a_REG.u16Sel = (a_pCtx)->a_reg.Sel; \ 1109 (a_pVmcbStateSave)->a_REG.u32Limit = (a_pCtx)->a_reg.u32Limit; \ 1110 (a_pVmcbStateSave)->a_REG.u64Base = (a_pCtx)->a_reg.u64Base; \ 1111 (a_pVmcbStateSave)->a_REG.u16Attr = HMSVM_CPU_2_VMCB_SEG_ATTR((a_pCtx)->a_reg.Attr.u); \ 1112 1112 } while (0) 1113 1113 … … 1126 1126 do \ 1127 1127 { \ 1128 (a_pCtx)->a_reg.Sel 1129 (a_pCtx)->a_reg.ValidSel 1130 (a_pCtx)->a_reg.fFlags = CPUMSELREG_FLAGS_VALID;\1131 (a_pCtx)->a_reg.u32Limit 1132 (a_pCtx)->a_reg.u64Base 1133 (a_pCtx)->a_reg.Attr.u 1128 (a_pCtx)->a_reg.Sel = (a_pVmcbStateSave)->a_REG.u16Sel; \ 1129 (a_pCtx)->a_reg.ValidSel = (a_pVmcbStateSave)->a_REG.u16Sel; \ 1130 (a_pCtx)->a_reg.fFlags = CPUMSELREG_FLAGS_VALID; \ 1131 (a_pCtx)->a_reg.u32Limit = (a_pVmcbStateSave)->a_REG.u32Limit; \ 1132 (a_pCtx)->a_reg.u64Base = (a_pVmcbStateSave)->a_REG.u64Base; \ 1133 (a_pCtx)->a_reg.Attr.u = HMSVM_VMCB_2_CPU_SEG_ATTR((a_pVmcbStateSave)->a_REG.u16Attr); \ 1134 1134 } while (0) 1135 1135 -
trunk/include/VBox/vmm/hm_vmx.h
r72643 r72744 58 58 */ 59 59 60 /** @def HMVMXCPU_GST_SET_UPDATED61 * Sets a guest-state-updated flag.62 *63 * @param pVCpu The cross context virtual CPU structure.64 * @param fFlag The flag to set.65 */66 #define HMVMXCPU_GST_SET_UPDATED(pVCpu, fFlag) (ASMAtomicUoOrU32(&(pVCpu)->hm.s.vmx.fUpdatedGuestState, (fFlag)))67 68 /** @def HMVMXCPU_GST_IS_SET69 * Checks if all the flags in the specified guest-state-updated set is pending.70 *71 * @param pVCpu The cross context virtual CPU structure.72 * @param fFlag The flag to check.73 */74 #define HMVMXCPU_GST_IS_SET(pVCpu, fFlag) ((ASMAtomicUoReadU32(&(pVCpu)->hm.s.vmx.fUpdatedGuestState) & (fFlag)) == (fFlag))75 76 /** @def HMVMXCPU_GST_IS_UPDATED77 * Checks if one or more of the flags in the specified guest-state-updated set78 * is updated.79 *80 * @param pVCpu The cross context virtual CPU structure.81 * @param fFlags The flags to check for.82 */83 #define HMVMXCPU_GST_IS_UPDATED(pVCpu, fFlags) RT_BOOL(ASMAtomicUoReadU32(&(pVCpu)->hm.s.vmx.fUpdatedGuestState) & (fFlags))84 85 /** @def HMVMXCPU_GST_RESET_TO86 * Resets the guest-state-updated flags to the specified value.87 *88 * @param pVCpu The cross context virtual CPU structure.89 * @param fFlags The new value.90 */91 #define HMVMXCPU_GST_RESET_TO(pVCpu, fFlags) (ASMAtomicUoWriteU32(&(pVCpu)->hm.s.vmx.fUpdatedGuestState, (fFlags)))92 93 /** @def HMVMXCPU_GST_VALUE94 * Returns the current guest-state-updated flags value.95 *96 * @param pVCpu The cross context virtual CPU structure.97 */98 #define HMVMXCPU_GST_VALUE(pVCpu) (ASMAtomicUoReadU32(&(pVCpu)->hm.s.vmx.fUpdatedGuestState))99 100 60 /** @name Host-state restoration flags. 101 61 * @note If you change these values don't forget to update the assembly … … 103 63 * @{ 104 64 */ 105 #define VMX_RESTORE_HOST_SEL_DS RT_BIT(0)106 #define VMX_RESTORE_HOST_SEL_ES RT_BIT(1)107 #define VMX_RESTORE_HOST_SEL_FS RT_BIT(2)108 #define VMX_RESTORE_HOST_SEL_GS RT_BIT(3)109 #define VMX_RESTORE_HOST_SEL_TR RT_BIT(4)110 #define VMX_RESTORE_HOST_GDTR RT_BIT(5)111 #define VMX_RESTORE_HOST_IDTR RT_BIT(6)112 #define VMX_RESTORE_HOST_GDT_READ_ONLY RT_BIT(7)113 #define VMX_RESTORE_HOST_REQUIRED RT_BIT(8)114 #define VMX_RESTORE_HOST_GDT_NEED_WRITABLE RT_BIT(9)65 #define VMX_RESTORE_HOST_SEL_DS RT_BIT(0) 66 #define VMX_RESTORE_HOST_SEL_ES RT_BIT(1) 67 #define VMX_RESTORE_HOST_SEL_FS RT_BIT(2) 68 #define VMX_RESTORE_HOST_SEL_GS RT_BIT(3) 69 #define VMX_RESTORE_HOST_SEL_TR RT_BIT(4) 70 #define VMX_RESTORE_HOST_GDTR RT_BIT(5) 71 #define VMX_RESTORE_HOST_IDTR RT_BIT(6) 72 #define VMX_RESTORE_HOST_GDT_READ_ONLY RT_BIT(7) 73 #define VMX_RESTORE_HOST_REQUIRED RT_BIT(8) 74 #define VMX_RESTORE_HOST_GDT_NEED_WRITABLE RT_BIT(9) 115 75 /** @} */ 116 76 … … 150 110 */ 151 111 /** The host MSRs have been saved. */ 152 #define VMX_LAZY_MSRS_SAVED_HOST RT_BIT(0)112 #define VMX_LAZY_MSRS_SAVED_HOST RT_BIT(0) 153 113 /** The guest MSRs are loaded and in effect. */ 154 #define VMX_LAZY_MSRS_LOADED_GUEST RT_BIT(1)114 #define VMX_LAZY_MSRS_LOADED_GUEST RT_BIT(1) 155 115 /** @} */ 156 116 … … 466 426 #define VMX_VMCS_GUEST_SYSENTER_ESP_CACHE_IDX 12 467 427 #define VMX_VMCS_GUEST_SYSENTER_EIP_CACHE_IDX 13 468 #define VMX_VMCS_RO_EXIT_QUAL IFICATION_CACHE_IDX14469 #define VMX_VMCS_MAX_CACHE_IDX (VMX_VMCS_RO_EXIT_QUAL IFICATION_CACHE_IDX + 1)428 #define VMX_VMCS_RO_EXIT_QUAL_CACHE_IDX 14 429 #define VMX_VMCS_MAX_CACHE_IDX (VMX_VMCS_RO_EXIT_QUAL_CACHE_IDX + 1) 470 430 #define VMX_VMCS_GUEST_CR3_CACHE_IDX 15 471 431 #define VMX_VMCS_MAX_NESTED_PAGING_CACHE_IDX (VMX_VMCS_GUEST_CR3_CACHE_IDX + 1) … … 606 566 /** Pointer to a const EPT Page Directory Pointer Table. */ 607 567 typedef const EPTPDPT *PCEPTPDPT; 608 609 568 610 569 /** … … 705 664 typedef const EPTPD *PCEPTPD; 706 665 707 708 666 /** 709 667 * EPT Page Table Entry. Bit view. … … 712 670 { 713 671 /** 0 - Present bit. 714 * @remark This is a convenience "misnomer". The bit actually indicates 715 * read access and the CPU will consider an entry with any of the 716 * first three bits set as present. Since all our valid entries 717 * will have this bit set, it can be used as a present indicator 718 * and allow some code sharing. */ 672 * @remarks This is a convenience "misnomer". The bit actually indicates read access 673 * and the CPU will consider an entry with any of the first three bits set 674 * as present. Since all our valid entries will have this bit set, it can 675 * be used as a present indicator and allow some code sharing. */ 719 676 uint64_t u1Present : 1; 720 677 /** 1 - Writable bit. */ … … 1385 1342 /** @} */ 1386 1343 1344 1387 1345 /** @name VMX_VMCS_CTRL_PROC_EXEC 1388 1346 * @{ … … 1431 1389 #define VMX_VMCS_CTRL_PROC_EXEC_USE_SECONDARY_EXEC_CTRL RT_BIT(31) 1432 1390 /** @} */ 1391 1433 1392 1434 1393 /** @name VMX_VMCS_CTRL_PROC_EXEC2 … … 1542 1501 #define VMX_VMCS32_RO_EXIT_INTERRUPTION_INFO 0x4404 1543 1502 #define VMX_VMCS32_RO_EXIT_INTERRUPTION_ERROR_CODE 0x4406 1544 #define VMX_VMCS32_RO_IDT_ INFO0x44081545 #define VMX_VMCS32_RO_IDT_ ERROR_CODE0x440A1503 #define VMX_VMCS32_RO_IDT_VECTORING_INFO 0x4408 1504 #define VMX_VMCS32_RO_IDT_VECTORING_ERROR_CODE 0x440A 1546 1505 #define VMX_VMCS32_RO_EXIT_INSTR_LENGTH 0x440C 1547 1506 #define VMX_VMCS32_RO_EXIT_INSTR_INFO 0x440E 1548 1507 /** @} */ 1549 1508 1509 1550 1510 /** @name VMX_VMCS32_RO_EXIT_REASON 1551 1511 * @{ … … 1553 1513 #define VMX_EXIT_REASON_BASIC(a) ((a) & 0xffff) 1554 1514 /** @} */ 1515 1555 1516 1556 1517 /** @name VMX_VMCS32_CTRL_ENTRY_INTERRUPTION_INFO … … 1578 1539 /** @} */ 1579 1540 1541 1580 1542 /** @name VMX_VMCS_RO_EXIT_INTERRUPTION_INFO_TYPE 1581 1543 * @{ … … 1588 1550 #define VMX_EXIT_INTERRUPTION_INFO_TYPE_SW_XCPT 6 1589 1551 /** @} */ 1552 1590 1553 1591 1554 /** @name VMX_VMCS32_RO_IDT_VECTORING_INFO … … 1600 1563 #define VMX_ENTRY_INT_INFO_FROM_EXIT_IDT_INFO(a) ((a) & ~RT_BIT(12)) 1601 1564 /** @} */ 1565 1602 1566 1603 1567 /** @name VMX_VMCS_RO_IDT_VECTORING_INFO_TYPE … … 1671 1635 /** @} */ 1672 1636 1637 1673 1638 /** @name Natural width control fields 1674 1639 * @{ … … 1701 1666 */ 1702 1667 /** 0-2: Debug register number */ 1703 #define VMX_EXIT_QUAL IFICATION_DRX_REGISTER(a) ((a) & 7)1668 #define VMX_EXIT_QUAL_DRX_REGISTER(a) ((a) & 7) 1704 1669 /** 3: Reserved; cleared to 0. */ 1705 #define VMX_EXIT_QUAL IFICATION_DRX_RES1(a) (((a) >> 3) & 1)1670 #define VMX_EXIT_QUAL_DRX_RES1(a) (((a) >> 3) & 1) 1706 1671 /** 4: Direction of move (0 = write, 1 = read) */ 1707 #define VMX_EXIT_QUAL IFICATION_DRX_DIRECTION(a) (((a) >> 4) & 1)1672 #define VMX_EXIT_QUAL_DRX_DIRECTION(a) (((a) >> 4) & 1) 1708 1673 /** 5-7: Reserved; cleared to 0. */ 1709 #define VMX_EXIT_QUAL IFICATION_DRX_RES2(a) (((a) >> 5) & 7)1674 #define VMX_EXIT_QUAL_DRX_RES2(a) (((a) >> 5) & 7) 1710 1675 /** 8-11: General purpose register number. */ 1711 #define VMX_EXIT_QUAL IFICATION_DRX_GENREG(a) (((a) >> 8) & 0xF)1676 #define VMX_EXIT_QUAL_DRX_GENREG(a) (((a) >> 8) & 0xF) 1712 1677 /** Rest: reserved. */ 1713 1678 /** @} */ 1714 1679 1715 /** @name VMX_EXIT_QUALIFICATION_DRX_DIRECTION values 1716 * @{ 1717 * /1718 #define VMX_EXIT_QUALIFICATION_DRX_DIRECTION_WRITE 0 1719 #define VMX_EXIT_QUAL IFICATION_DRX_DIRECTION_READ 11720 /** @} */ 1721 1680 1681 /** @name VMX_EXIT_QUAL_DRX_DIRECTION values 1682 * @{ 1683 */ 1684 #define VMX_EXIT_QUAL_DRX_DIRECTION_WRITE 0 1685 #define VMX_EXIT_QUAL_DRX_DIRECTION_READ 1 1686 /** @} */ 1722 1687 1723 1688 … … 1726 1691 */ 1727 1692 /** 0-3: Control register number (0 for CLTS & LMSW) */ 1728 #define VMX_EXIT_QUAL IFICATION_CRX_REGISTER(a) ((a) & 0xF)1693 #define VMX_EXIT_QUAL_CRX_REGISTER(a) ((a) & 0xF) 1729 1694 /** 4-5: Access type. */ 1730 #define VMX_EXIT_QUAL IFICATION_CRX_ACCESS(a) (((a) >> 4) & 3)1695 #define VMX_EXIT_QUAL_CRX_ACCESS(a) (((a) >> 4) & 3) 1731 1696 /** 6: LMSW operand type */ 1732 #define VMX_EXIT_QUAL IFICATION_CRX_LMSW_OP(a) (((a) >> 6) & 1)1697 #define VMX_EXIT_QUAL_CRX_LMSW_OP(a) (((a) >> 6) & 1) 1733 1698 /** 7: Reserved; cleared to 0. */ 1734 #define VMX_EXIT_QUAL IFICATION_CRX_RES1(a) (((a) >> 7) & 1)1699 #define VMX_EXIT_QUAL_CRX_RES1(a) (((a) >> 7) & 1) 1735 1700 /** 8-11: General purpose register number (0 for CLTS & LMSW). */ 1736 #define VMX_EXIT_QUAL IFICATION_CRX_GENREG(a) (((a) >> 8) & 0xF)1701 #define VMX_EXIT_QUAL_CRX_GENREG(a) (((a) >> 8) & 0xF) 1737 1702 /** 12-15: Reserved; cleared to 0. */ 1738 #define VMX_EXIT_QUAL IFICATION_CRX_RES2(a) (((a) >> 12) & 0xF)1703 #define VMX_EXIT_QUAL_CRX_RES2(a) (((a) >> 12) & 0xF) 1739 1704 /** 16-31: LMSW source data (else 0). */ 1740 #define VMX_EXIT_QUAL IFICATION_CRX_LMSW_DATA(a) (((a) >> 16) & 0xFFFF)1705 #define VMX_EXIT_QUAL_CRX_LMSW_DATA(a) (((a) >> 16) & 0xFFFF) 1741 1706 /* Rest: reserved. */ 1742 1707 /** @} */ 1743 1708 1744 /** @name VMX_EXIT_QUALIFICATION_CRX_ACCESS 1745 * @{ 1746 */ 1747 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_WRITE 0 1748 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_READ 1 1749 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_CLTS 2 1750 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS_LMSW 3 1751 /** @} */ 1752 1753 /** @name VMX_EXIT_QUALIFICATION_TASK_SWITCH 1754 * @{ 1755 */ 1756 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_SELECTOR(a) ((a) & 0xffff) 1757 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE(a) (((a) >> 30) & 0x3) 1709 1710 /** @name VMX_EXIT_QUAL_CRX_ACCESS 1711 * @{ 1712 */ 1713 #define VMX_EXIT_QUAL_CRX_ACCESS_WRITE 0 1714 #define VMX_EXIT_QUAL_CRX_ACCESS_READ 1 1715 #define VMX_EXIT_QUAL_CRX_ACCESS_CLTS 2 1716 #define VMX_EXIT_QUAL_CRX_ACCESS_LMSW 3 1717 /** @} */ 1718 1719 1720 /** @name VMX_EXIT_QUAL_TASK_SWITCH 1721 * @{ 1722 */ 1723 #define VMX_EXIT_QUAL_TASK_SWITCH_SELECTOR(a) ((a) & 0xffff) 1724 #define VMX_EXIT_QUAL_TASK_SWITCH_TYPE(a) (((a) >> 30) & 0x3) 1758 1725 /** Task switch caused by a call instruction. */ 1759 #define VMX_EXIT_QUAL IFICATION_TASK_SWITCH_TYPE_CALL 01726 #define VMX_EXIT_QUAL_TASK_SWITCH_TYPE_CALL 0 1760 1727 /** Task switch caused by an iret instruction. */ 1761 #define VMX_EXIT_QUAL IFICATION_TASK_SWITCH_TYPE_IRET 11728 #define VMX_EXIT_QUAL_TASK_SWITCH_TYPE_IRET 1 1762 1729 /** Task switch caused by a jmp instruction. */ 1763 #define VMX_EXIT_QUAL IFICATION_TASK_SWITCH_TYPE_JMP 21730 #define VMX_EXIT_QUAL_TASK_SWITCH_TYPE_JMP 2 1764 1731 /** Task switch caused by an interrupt gate. */ 1765 #define VMX_EXIT_QUAL IFICATION_TASK_SWITCH_TYPE_IDT 31732 #define VMX_EXIT_QUAL_TASK_SWITCH_TYPE_IDT 3 1766 1733 /** @} */ 1767 1734 … … 1771 1738 */ 1772 1739 /** Set if the violation was caused by a data read. */ 1773 #define VMX_EXIT_QUAL IFICATION_EPT_DATA_READ RT_BIT(0)1740 #define VMX_EXIT_QUAL_EPT_DATA_READ RT_BIT(0) 1774 1741 /** Set if the violation was caused by a data write. */ 1775 #define VMX_EXIT_QUAL IFICATION_EPT_DATA_WRITE RT_BIT(1)1742 #define VMX_EXIT_QUAL_EPT_DATA_WRITE RT_BIT(1) 1776 1743 /** Set if the violation was caused by an instruction fetch. */ 1777 #define VMX_EXIT_QUAL IFICATION_EPT_INSTR_FETCH RT_BIT(2)1744 #define VMX_EXIT_QUAL_EPT_INSTR_FETCH RT_BIT(2) 1778 1745 /** AND of the present bit of all EPT structures. */ 1779 #define VMX_EXIT_QUAL IFICATION_EPT_ENTRY_PRESENT RT_BIT(3)1746 #define VMX_EXIT_QUAL_EPT_ENTRY_PRESENT RT_BIT(3) 1780 1747 /** AND of the write bit of all EPT structures. */ 1781 #define VMX_EXIT_QUAL IFICATION_EPT_ENTRY_WRITE RT_BIT(4)1748 #define VMX_EXIT_QUAL_EPT_ENTRY_WRITE RT_BIT(4) 1782 1749 /** AND of the execute bit of all EPT structures. */ 1783 #define VMX_EXIT_QUAL IFICATION_EPT_ENTRY_EXECUTE RT_BIT(5)1750 #define VMX_EXIT_QUAL_EPT_ENTRY_EXECUTE RT_BIT(5) 1784 1751 /** Set if the guest linear address field contains the faulting address. */ 1785 #define VMX_EXIT_QUAL IFICATION_EPT_GUEST_ADDR_VALID RT_BIT(7)1752 #define VMX_EXIT_QUAL_EPT_GUEST_ADDR_VALID RT_BIT(7) 1786 1753 /** If bit 7 is one: (reserved otherwise) 1787 1754 * 1 - violation due to physical address access. 1788 1755 * 0 - violation caused by page walk or access/dirty bit updates 1789 1756 */ 1790 #define VMX_EXIT_QUAL IFICATION_EPT_TRANSLATED_ACCESS RT_BIT(8)1757 #define VMX_EXIT_QUAL_EPT_TRANSLATED_ACCESS RT_BIT(8) 1791 1758 /** @} */ 1792 1759 … … 1796 1763 */ 1797 1764 /** 0-2: IO operation width. */ 1798 #define VMX_EXIT_QUAL IFICATION_IO_WIDTH(a) ((a) & 7)1765 #define VMX_EXIT_QUAL_IO_WIDTH(a) ((a) & 7) 1799 1766 /** 3: IO operation direction. */ 1800 #define VMX_EXIT_QUAL IFICATION_IO_DIRECTION(a) (((a) >> 3) & 1)1767 #define VMX_EXIT_QUAL_IO_DIRECTION(a) (((a) >> 3) & 1) 1801 1768 /** 4: String IO operation (INS / OUTS). */ 1802 #define VMX_EXIT_QUAL IFICATION_IO_IS_STRING(a) RT_BOOL((a) & RT_BIT_64(4))1769 #define VMX_EXIT_QUAL_IO_IS_STRING(a) RT_BOOL((a) & RT_BIT_64(4)) 1803 1770 /** 5: Repeated IO operation. */ 1804 #define VMX_EXIT_QUAL IFICATION_IO_IS_REP(a) RT_BOOL((a) & RT_BIT_64(5))1771 #define VMX_EXIT_QUAL_IO_IS_REP(a) RT_BOOL((a) & RT_BIT_64(5)) 1805 1772 /** 6: Operand encoding. */ 1806 #define VMX_EXIT_QUAL IFICATION_IO_ENCODING(a) (((a) >> 6) & 1)1773 #define VMX_EXIT_QUAL_IO_ENCODING(a) (((a) >> 6) & 1) 1807 1774 /** 16-31: IO Port (0-0xffff). */ 1808 #define VMX_EXIT_QUAL IFICATION_IO_PORT(a) (((a) >> 16) & 0xffff)1775 #define VMX_EXIT_QUAL_IO_PORT(a) (((a) >> 16) & 0xffff) 1809 1776 /* Rest reserved. */ 1810 1777 /** @} */ 1811 1778 1812 /** @name VMX_EXIT_QUALIFICATION_IO_DIRECTION 1813 * @{ 1814 */ 1815 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION_OUT 0 1816 #define VMX_EXIT_QUALIFICATION_IO_DIRECTION_IN 1 1817 /** @} */ 1818 1819 1820 /** @name VMX_EXIT_QUALIFICATION_IO_ENCODING 1821 * @{ 1822 */ 1823 #define VMX_EXIT_QUALIFICATION_IO_ENCODING_DX 0 1824 #define VMX_EXIT_QUALIFICATION_IO_ENCODING_IMM 1 1825 /** @} */ 1779 1780 /** @name VMX_EXIT_QUAL_IO_DIRECTION 1781 * @{ 1782 */ 1783 #define VMX_EXIT_QUAL_IO_DIRECTION_OUT 0 1784 #define VMX_EXIT_QUAL_IO_DIRECTION_IN 1 1785 /** @} */ 1786 1787 1788 /** @name VMX_EXIT_QUAL_IO_ENCODING 1789 * @{ 1790 */ 1791 #define VMX_EXIT_QUAL_IO_ENCODING_DX 0 1792 #define VMX_EXIT_QUAL_IO_ENCODING_IMM 1 1793 /** @} */ 1794 1826 1795 1827 1796 /** @name VMX_EXIT_APIC_ACCESS … … 1829 1798 */ 1830 1799 /** 0-11: If the APIC-access VM-exit is due to a linear access, the offset of access within the APIC page. */ 1831 #define VMX_EXIT_QUAL IFICATION_APIC_ACCESS_OFFSET(a) ((a) & 0xfff)1800 #define VMX_EXIT_QUAL_APIC_ACCESS_OFFSET(a) ((a) & 0xfff) 1832 1801 /** 12-15: Access type. */ 1833 #define VMX_EXIT_QUAL IFICATION_APIC_ACCESS_TYPE(a) (((a) & 0xf000) >> 12)1802 #define VMX_EXIT_QUAL_APIC_ACCESS_TYPE(a) (((a) & 0xf000) >> 12) 1834 1803 /* Rest reserved. */ 1835 1804 /** @} */ 1836 1805 1837 1806 1838 /** @name VMX_EXIT_QUAL IFICATION_APIC_ACCESS_TYPE return values1807 /** @name VMX_EXIT_QUAL_APIC_ACCESS_TYPE return values 1839 1808 * @{ 1840 1809 */ … … 1852 1821 #define VMX_APIC_ACCESS_TYPE_PHYSICAL_INSTR 15 1853 1822 /** @} */ 1823 1854 1824 1855 1825 /** @name VMX_XDTR_INSINFO_XXX - VMX_EXIT_XDTR_ACCESS instruction information
Note:
See TracChangeset
for help on using the changeset viewer.