VirtualBox

Changeset 97005 in vbox for trunk/include


Ignore:
Timestamp:
Oct 5, 2022 2:37:41 PM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153937
Message:

VMM/HMVMXR0: Converted all VMVEXITINFO initialization to use initializers (via macros) and not call memset/RT_ZERO. This may cause the code to be slightly larger but faster, as it allows the compiler to do a better job.

File:
1 edited

Legend:

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

    r96711 r97005  
    38443844typedef const VMXVEXITINFO *PCVMXVEXITINFO;
    38453845AssertCompileMemberAlignment(VMXVEXITINFO, u64Qual, 8);
     3846
     3847/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3848 *  instruction info and length. */
     3849#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO(a_uReason, a_uQualifier, a_uInstrInfo, a_cbInstr) \
     3850    { (a_uReason), (a_cbInstr), { a_uInstrInfo }, VMXINSTRID_NONE, (a_uQualifier), 0, 0, 0, 0 }
     3851
     3852/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3853 *  instruction info and length all copied from a VMXTRANSIENT structure. */
     3854#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_FROM_TRANSIENT(a_pVmxTransient) \
     3855    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO((a_pVmxTransient)->uExitReason, \
     3856                                                    (a_pVmxTransient)->uExitQual, \
     3857                                                    (a_pVmxTransient)->ExitInstrInfo.u, \
     3858                                                    (a_pVmxTransient)->cbExitInstr)
     3859
     3860/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3861 *  instruction length (no info). */
     3862#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(a_uReason, a_uQualifier, a_cbInstr) \
     3863    { (a_uReason), (a_cbInstr), { 0 }, VMXINSTRID_NONE, (a_uQualifier), 0, 0, 0, 0 }
     3864
     3865/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier and
     3866 *  instruction length (no info) all copied from a VMXTRANSIENT structure. */
     3867#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_FROM_TRANSIENT(a_pVmxTransient) \
     3868    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN((a_pVmxTransient)->uExitReason, \
     3869                                                   (a_pVmxTransient)->uExitQual, \
     3870                                                   (a_pVmxTransient)->cbExitInstr)
     3871
     3872/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3873 *  instruction info, instruction length and guest linear address. */
     3874#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR(a_uReason, a_uQualifier, a_uInstrInfo, \
     3875                                                                     a_cbInstr, a_uGstLinAddr) \
     3876    { (a_uReason), (a_cbInstr), { (a_uInstrInfo) }, VMXINSTRID_NONE, (a_uQualifier), (a_uGstLinAddr), 0, 0, 0 }
     3877
     3878/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3879 *  instruction info, instruction length and guest linear address all copied
     3880 *  from a VMXTRANSIENT structure. */
     3881#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR_FROM_TRANSIENT(a_pVmxTransient) \
     3882    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_INFO_AND_LIN_ADDR((a_pVmxTransient)->uExitReason, \
     3883                                                                (a_pVmxTransient)->uExitQual, \
     3884                                                                (a_pVmxTransient)->ExitInstrInfo.u, \
     3885                                                                (a_pVmxTransient)->cbExitInstr, \
     3886                                                                (a_pVmxTransient)->uGuestLinearAddr)
     3887
     3888/** Initialize a VMXVEXITINFO structure from exit reason and pending debug
     3889 *  exceptions. */
     3890#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS(a_uReason, a_uPendingDbgXcpts) \
     3891    { (a_uReason), 0, { 0 }, VMXINSTRID_NONE, 0, 0, 0, (a_uPendingDbgXcpts), 0 }
     3892
     3893/** Initialize a VMXVEXITINFO structure from exit reason and pending debug
     3894 *  exceptions both copied from a VMXTRANSIENT structure. */
     3895#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS_FROM_TRANSIENT(a_pVmxTransient) \
     3896    VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_DBG_XCPTS((a_pVmxTransient)->uExitReason, (a_pVmxTransient)->uGuestPendingDbgXcpts)
     3897
     3898
     3899/** Initialize a VMXVEXITINFO structure from exit reason, exit qualifier,
     3900 *  instruction length, guest linear address and guest physical address. */
     3901#define VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN_AND_GST_ADDRESSES(a_uReason, a_uQualifier, a_cbInstr, \
     3902                                                                         a_uGstLinAddr, a_uGstPhysAddr) \
     3903    { (a_uReason), (a_cbInstr), { 0 }, VMXINSTRID_NONE, (a_uQualifier), (a_uGstLinAddr), (a_uGstPhysAddr), 0, 0 }
     3904
    38463905
    38473906/**
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