VirtualBox

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


Ignore:
Timestamp:
Jun 15, 2023 9:04:04 PM (21 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
157889
Message:

VMM/IEM: More recompilation code. bugref:10369

File:
1 edited

Legend:

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

    r100072 r100183  
    661661/** State mask.  */
    662662#define IEMTB_F_STATE_MASK              UINT32_C(0x0c000000)
     663/** State shift count.  */
     664#define IEMTB_F_STATE_SHIFT             26
    663665/** State: Compiling. */
    664666#define IEMTB_F_STATE_COMPILING         UINT32_C(0x04000000)
     
    668670#define IEMTB_F_STATE_OBSOLETE          UINT32_C(0x0c000000)
    669671
     672/** Checks that EIP/IP is wihin CS.LIM and that RIP is canonical before each
     673 *  instruction.  Used when we're close the limit before starting a TB, as
     674 *  determined by iemGetTbFlagsForCurrentPc(). */
     675#define IEMTB_F_RIP_CHECKS              UINT32_C(0x0c000000)
     676
    670677/** Mask of the IEMTB_F_XXX flags that are part of the TB lookup key.
    671  * @note We don't   */
    672 #define IEMTB_F_KEY_MASK                ((UINT32_C(0xffffffff) & ~IEM_F_X86_CTX_MASK) | IEM_F_X86_CTX_SMM)
     678 * @note We skip the CPL as we don't currently generate ring-specific code,
     679 *       that's all handled in CIMPL functions.
     680 *
     681 *       For the same reasons, we skip all of IEM_F_X86_CTX_MASK, with the
     682 *       exception of SMM (which we don't implement). */
     683#define IEMTB_F_KEY_MASK                ((UINT32_C(0xffffffff) & ~(IEM_F_X86_CTX_MASK | IEM_F_X86_CPL_MASK)) | IEM_F_X86_CTX_SMM)
    673684/** @} */
    674685
     
    980991     * This can either be one being executed or one being compiled. */
    981992    R3PTRTYPE(PIEMTB)       pCurTbR3;
     993    /** The PC (RIP) at the start of pCurTbR3/pCurTbR0.
     994     * The TBs are based on physical addresses, so this is needed to correleated
     995     * RIP to opcode bytes stored in the TB (AMD-V / VT-x). */
     996    uint64_t                uCurTbStartPc;
     997    /** Statistics: Number of TB allocation calls. */
     998    uint64_t                cTbAllocs;
     999    /** Statistics: Number of TB free calls. */
     1000    uint64_t                cTbFrees;
     1001    /** Whether to end the current TB. */
     1002    bool                    fEndTb;
    9821003    /** Spaced reserved for recompiler data / alignment. */
    983     uint64_t                auRecompilerStuff[7];
     1004    bool                    afRecompilerStuff1[7];
     1005    /** Spaced reserved for recompiler data / alignment. */
     1006    uint64_t                auRecompilerStuff2[3];
    9841007    /** @} */
    9851008
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