VirtualBox

Changeset 72555 in vbox for trunk/src/VBox/VMM/include


Ignore:
Timestamp:
Jun 14, 2018 9:28:31 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123048
Message:

EM,NEM,HM: Started on generic exit history, only hooked up to NEM/win. bugref:9044

Location:
trunk/src/VBox/VMM/include
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/include/EMInternal.h

    r72490 r72555  
    292292
    293293/**
     294 * Exit history entry.
     295 *
     296 * @remarks We could perhaps trim this down a little bit by assuming uFlatPC
     297 *          only needs 48 bits (currently true but will change) and stuffing
     298 *          the flags+type in the available 16 bits made available.  The
     299 *          timestamp could likewise be shortened to accomodate the index, or
     300 *          we might skip the index entirely.  However, since we will have to
     301 *          deal with 56-bit wide PC address before long, there's not point.
     302 *
     303 *          On the upside, there are unused bits in both uFlagsAndType and the
     304 *          idxSlot fields if needed for anything.
     305 */
     306typedef struct EMEXITENTRY
     307{
     308    /** The flat PC (CS:EIP/RIP) address of the exit. */
     309    uint64_t        uFlatPC;
     310    /** The EMEXIT_MAKE_FLAGS_AND_TYPE */
     311    uint32_t        uFlagsAndType;
     312    /** The index into the exit slot hash table.
     313     * UINT32_MAX if too many collisions and not entered into it. */
     314    uint32_t        idxSlot;
     315    /** The TSC timestamp of the exit.
     316     * This is 0 if not timestamped. */
     317    uint64_t        uTimestamp;
     318} EMEXITENTRY;
     319/** Pointer to an exit history entry. */
     320typedef EMEXITENTRY *PEMEXITENTRY;
     321/** Pointer to a const exit history entry. */
     322typedef EMEXITENTRY const *PCEMEXITENTRY;
     323
     324
     325/**
    294326 * Converts a EM pointer into a VM pointer.
    295327 * @returns Pointer to the VM structure the EM is part of.
     
    464496    uint64_t                padding1;
    465497#endif
     498
     499    /** Where to store the next exit history entry.
     500     * Since aExitHistory is 256 items longs, we'll just increment this and
     501     * mask it when using it.  That help the readers detect whether we've
     502     * wrapped around or not.  */
     503    uint64_t                iNextExit;
     504    /** Exit history table (6KB). */
     505    EMEXITENTRY             aExitHistory[256];
    466506} EMCPU;
    467507/** Pointer to EM VM instance data. */
  • trunk/src/VBox/VMM/include/NEMInternal.h

    r72541 r72555  
    102102# define NEM_TMPL_STATIC
    103103#endif
     104
     105
     106/**
     107 * Generic NEM exit type enumeration for use with EMHistoryAddExit.
     108 *
     109 * On windows we've got two different set of exit types and they are both jumping
     110 * around the place value wise, so EM can use their values.
     111 *
     112 * @note We only have exit types for exits not covered by EM here.
     113 */
     114typedef enum NEMEXITTYPE
     115{
     116    /* windows: */
     117    NEMEXITTYPE_UNRECOVERABLE_EXCEPTION = 1,
     118    NEMEXITTYPE_INVALID_VP_REGISTER_VALUE,
     119    NEMEXITTYPE_INTTERRUPT_WINDOW,
     120    NEMEXITTYPE_HALT,
     121    NEMEXITTYPE_XCPT_UD,
     122    NEMEXITTYPE_XCPT_DB,
     123    NEMEXITTYPE_XCPT_BP,
     124    NEMEXITTYPE_CANCELED
     125} NEMEXITTYPE;
    104126
    105127
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