VirtualBox

Changeset 48543 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Sep 19, 2013 4:02:26 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
89090
Message:

VMM: Macros are not to be trusted, extra braces esp. when using '&' operator please.

File:
1 edited

Legend:

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

    r48216 r48543  
    10771077 */
    10781078/** VMCS revision identifier used by the processor. */
    1079 #define MSR_IA32_VMX_BASIC_INFO_VMCS_ID(a)                      (a & 0x7FFFFFFF)
     1079#define MSR_IA32_VMX_BASIC_INFO_VMCS_ID(a)                      ((a) & 0x7FFFFFFF)
    10801080/** Size of the VMCS. */
    10811081#define MSR_IA32_VMX_BASIC_INFO_VMCS_SIZE(a)                    (((a) >> 32) & 0xFFF)
     
    14691469 * @{
    14701470 */
    1471 #define VMX_EXIT_REASON_BASIC(a)                                  (a & 0xffff)
     1471#define VMX_EXIT_REASON_BASIC(a)                                  ((a) & 0xffff)
    14721472/** @} */
    14731473
     
    14751475 * @{
    14761476 */
    1477 #define VMX_ENTRY_INTERRUPTION_INFO_VALID(a)                      (a & RT_BIT(31))
     1477#define VMX_ENTRY_INTERRUPTION_INFO_VALID(a)                      ((a) & RT_BIT(31))
    14781478#define VMX_ENTRY_INTERRUPTION_INFO_TYPE_SHIFT                    8
    14791479#define VMX_ENTRY_INTERRUPTION_INFO_TYPE(a)                       ((a >> VMX_ENTRY_INTERRUPTION_INFO_TYPE_SHIFT) & 7)
     
    14841484 * @{
    14851485 */
    1486 #define VMX_EXIT_INTERRUPTION_INFO_VECTOR(a)                      (a & 0xff)
     1486#define VMX_EXIT_INTERRUPTION_INFO_VECTOR(a)                      ((a) & 0xff)
    14871487#define VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT                     8
    1488 #define VMX_EXIT_INTERRUPTION_INFO_TYPE(a)                        ((a >> VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT) & 7)
     1488#define VMX_EXIT_INTERRUPTION_INFO_TYPE(a)                        (((a) >> VMX_EXIT_INTERRUPTION_INFO_TYPE_SHIFT) & 7)
    14891489#define VMX_EXIT_INTERRUPTION_INFO_ERROR_CODE_VALID               RT_BIT(11)
    1490 #define VMX_EXIT_INTERRUPTION_INFO_ERROR_CODE_IS_VALID(a)         (a & VMX_EXIT_INTERRUPTION_INFO_ERROR_CODE_VALID)
    1491 #define VMX_EXIT_INTERRUPTION_INFO_NMI_UNBLOCK(a)                 (a & RT_BIT(12))
     1490#define VMX_EXIT_INTERRUPTION_INFO_ERROR_CODE_IS_VALID(a)         ((a) & VMX_EXIT_INTERRUPTION_INFO_ERROR_CODE_VALID)
     1491#define VMX_EXIT_INTERRUPTION_INFO_NMI_UNBLOCK(a)                 ((a) & RT_BIT(12))
    14921492#ifdef VBOX_WITH_OLD_VTX_CODE
    14931493# define VMX_EXIT_INTERRUPTION_INFO_VALID_SHIFT                    31
    14941494#endif
    14951495#define VMX_EXIT_INTERRUPTION_INFO_VALID                          RT_BIT(31)
    1496 #define VMX_EXIT_INTERRUPTION_INFO_IS_VALID(a)                    (a & RT_BIT(31))
     1496#define VMX_EXIT_INTERRUPTION_INFO_IS_VALID(a)                    ((a) & RT_BIT(31))
    14971497/** Construct an irq event injection value from the exit interruption info value (same except that bit 12 is reserved). */
    1498 #define VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(a)        (a & ~RT_BIT(12))
     1498#define VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(a)        ((a) & ~RT_BIT(12))
    14991499/** @} */
    15001500
     
    15131513 * @{
    15141514 */
    1515 #define VMX_IDT_VECTORING_INFO_VECTOR(a)                          (a & 0xff)
     1515#define VMX_IDT_VECTORING_INFO_VECTOR(a)                          ((a) & 0xff)
    15161516#define VMX_IDT_VECTORING_INFO_TYPE_SHIFT                         8
    1517 #define VMX_IDT_VECTORING_INFO_TYPE(a)                            ((a >> VMX_IDT_VECTORING_INFO_TYPE_SHIFT) & 7)
     1517#define VMX_IDT_VECTORING_INFO_TYPE(a)                            (((a) >> VMX_IDT_VECTORING_INFO_TYPE_SHIFT) & 7)
    15181518#define VMX_IDT_VECTORING_INFO_ERROR_CODE_VALID                   RT_BIT(11)
    1519 #define VMX_IDT_VECTORING_INFO_ERROR_CODE_IS_VALID(a)             (a & VMX_IDT_VECTORING_INFO_ERROR_CODE_VALID)
    1520 #define VMX_IDT_VECTORING_INFO_VALID(a)                           (a & RT_BIT(31))
    1521 #define VMX_ENTRY_INTR_INFO_FROM_EXIT_IDT_INFO(a)                 (a & ~RT_BIT(12))
     1519#define VMX_IDT_VECTORING_INFO_ERROR_CODE_IS_VALID(a)             ((a) & VMX_IDT_VECTORING_INFO_ERROR_CODE_VALID)
     1520#define VMX_IDT_VECTORING_INFO_VALID(a)                           ((a) & RT_BIT(31))
     1521#define VMX_ENTRY_INTR_INFO_FROM_EXIT_IDT_INFO(a)                 ((a) & ~RT_BIT(12))
    15221522/** @} */
    15231523
     
    16221622 */
    16231623/** 0-2:  Debug register number */
    1624 #define VMX_EXIT_QUALIFICATION_DRX_REGISTER(a)                  (a & 7)
     1624#define VMX_EXIT_QUALIFICATION_DRX_REGISTER(a)                  ((a) & 7)
    16251625/** 3:    Reserved; cleared to 0. */
    1626 #define VMX_EXIT_QUALIFICATION_DRX_RES1(a)                      ((a >> 3) & 1)
     1626#define VMX_EXIT_QUALIFICATION_DRX_RES1(a)                      (((a) >> 3) & 1)
    16271627/** 4:    Direction of move (0 = write, 1 = read) */
    1628 #define VMX_EXIT_QUALIFICATION_DRX_DIRECTION(a)                 ((a >> 4) & 1)
     1628#define VMX_EXIT_QUALIFICATION_DRX_DIRECTION(a)                 (((a) >> 4) & 1)
    16291629/** 5-7:  Reserved; cleared to 0. */
    1630 #define VMX_EXIT_QUALIFICATION_DRX_RES2(a)                      ((a >> 5) & 7)
     1630#define VMX_EXIT_QUALIFICATION_DRX_RES2(a)                      (((a) >> 5) & 7)
    16311631/** 8-11: General purpose register number. */
    1632 #define VMX_EXIT_QUALIFICATION_DRX_GENREG(a)                    ((a >> 8) & 0xF)
     1632#define VMX_EXIT_QUALIFICATION_DRX_GENREG(a)                    (((a) >> 8) & 0xF)
    16331633/** Rest: reserved. */
    16341634/** @} */
     
    16471647 */
    16481648/** 0-3:   Control register number (0 for CLTS & LMSW) */
    1649 #define VMX_EXIT_QUALIFICATION_CRX_REGISTER(a)                  (a & 0xF)
     1649#define VMX_EXIT_QUALIFICATION_CRX_REGISTER(a)                  ((a) & 0xF)
    16501650/** 4-5:   Access type. */
    1651 #define VMX_EXIT_QUALIFICATION_CRX_ACCESS(a)                    ((a >> 4) & 3)
     1651#define VMX_EXIT_QUALIFICATION_CRX_ACCESS(a)                    (((a) >> 4) & 3)
    16521652/** 6:     LMSW operand type */
    1653 #define VMX_EXIT_QUALIFICATION_CRX_LMSW_OP(a)                   ((a >> 6) & 1)
     1653#define VMX_EXIT_QUALIFICATION_CRX_LMSW_OP(a)                   (((a) >> 6) & 1)
    16541654/** 7:     Reserved; cleared to 0. */
    1655 #define VMX_EXIT_QUALIFICATION_CRX_RES1(a)                      ((a >> 7) & 1)
     1655#define VMX_EXIT_QUALIFICATION_CRX_RES1(a)                      (((a) >> 7) & 1)
    16561656/** 8-11:  General purpose register number (0 for CLTS & LMSW). */
    1657 #define VMX_EXIT_QUALIFICATION_CRX_GENREG(a)                    ((a >> 8) & 0xF)
     1657#define VMX_EXIT_QUALIFICATION_CRX_GENREG(a)                    (((a) >> 8) & 0xF)
    16581658/** 12-15: Reserved; cleared to 0. */
    1659 #define VMX_EXIT_QUALIFICATION_CRX_RES2(a)                      ((a >> 12) & 0xF)
     1659#define VMX_EXIT_QUALIFICATION_CRX_RES2(a)                      (((a) >> 12) & 0xF)
    16601660/** 16-31: LMSW source data (else 0). */
    1661 #define VMX_EXIT_QUALIFICATION_CRX_LMSW_DATA(a)                 ((a >> 16) & 0xFFFF)
     1661#define VMX_EXIT_QUALIFICATION_CRX_LMSW_DATA(a)                 (((a) >> 16) & 0xFFFF)
    16621662/** Rest: reserved. */
    16631663/** @} */
     
    16751675 * @{
    16761676 */
    1677 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_SELECTOR(a)          (a & 0xffff)
    1678 #define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE(a)              ((a >> 30)& 0x3)
     1677#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_SELECTOR(a)          ((a) & 0xffff)
     1678#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE(a)              (((a) >> 30) & 0x3)
    16791679/** Task switch caused by a call instruction. */
    16801680#define VMX_EXIT_QUALIFICATION_TASK_SWITCH_TYPE_CALL            0
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette