VirtualBox

Changeset 108368 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Feb 25, 2025 1:17:32 PM (2 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167729
Message:

VMM/IEM: More work on targeting arm. jiraref:VBP-1531

Location:
trunk/src/VBox/VMM/VMMAll
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAll.cpp

    r108278 r108368  
    194194
    195195    /* Decoder state: */
    196     pVCpu->iem.s.enmDefAddrMode     = fExec & IEM_F_MODE_CPUMODE_MASK;  /** @todo check if this is correct... */
    197     pVCpu->iem.s.enmEffAddrMode     = fExec & IEM_F_MODE_CPUMODE_MASK;
    198     if ((fExec & IEM_F_MODE_CPUMODE_MASK) != IEMMODE_64BIT)
    199     {
    200         pVCpu->iem.s.enmDefOpSize   = fExec & IEM_F_MODE_CPUMODE_MASK;  /** @todo check if this is correct... */
    201         pVCpu->iem.s.enmEffOpSize   = fExec & IEM_F_MODE_CPUMODE_MASK;
     196    pVCpu->iem.s.enmDefAddrMode     = fExec & IEM_F_MODE_X86_CPUMODE_MASK;  /** @todo check if this is correct... */
     197    pVCpu->iem.s.enmEffAddrMode     = fExec & IEM_F_MODE_X86_CPUMODE_MASK;
     198    if ((fExec & IEM_F_MODE_X86_CPUMODE_MASK) != IEMMODE_64BIT)
     199    {
     200        pVCpu->iem.s.enmDefOpSize   = fExec & IEM_F_MODE_X86_CPUMODE_MASK;  /** @todo check if this is correct... */
     201        pVCpu->iem.s.enmEffOpSize   = fExec & IEM_F_MODE_X86_CPUMODE_MASK;
    202202    }
    203203    else
  • trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp

    r108287 r108368  
    93739373    PCIEMTBDBG const        pDbgInfo      = pTb->pDbgInfo;
    93749374#endif
    9375     DISCPUMODE              enmGstCpuMode = (pTb->fFlags & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
    9376                                           : (pTb->fFlags & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
    9377                                           :                                                            DISCPUMODE_64BIT;
     9375    DISCPUMODE              enmGstCpuMode = (pTb->fFlags & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
     9376                                          : (pTb->fFlags & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
     9377                                          :                                                                DISCPUMODE_64BIT;
    93789378#ifdef IEMNATIVE_WITH_TB_DEBUG_INFO
    93799379    IEMNATIVDISASMSYMCTX    SymCtx        = { pVCpu, pTb, iemExecMemGetTbChunkCtx(pVCpu, pTb), pDbgInfo };
     
    94619461                                                                   szDisBuf, sizeof(szDisBuf)));
    94629462                                fExec = pDbgInfo->aEntries[iDbgEntry].GuestInstruction.fExec;
    9463                                 enmGstCpuMode = (fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
    9464                                               : (fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
    9465                                               :                                                      DISCPUMODE_64BIT;
     9463                                enmGstCpuMode = (fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
     9464                                              : (fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
     9465                                              :                                                          DISCPUMODE_64BIT;
    94669466                            }
    94679467
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdPython.py

    r108296 r108368  
    24862486        #
    24872487        # Determine what we're switch on.
    2488         # This ASSUMES that (IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | IEM_F_MODE_CPUMODE_MASK) == 7!
     2488        # This ASSUMES that (IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | IEM_F_MODE_X86_CPUMODE_MASK) == 7!
    24892489        #
    24902490        fSimple = True;
    2491         sSwitchValue  = '(pVCpu->iem.s.fExec & (IEM_F_MODE_CPUMODE_MASK | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK))';
     2491        sSwitchValue  = '(pVCpu->iem.s.fExec & (IEM_F_MODE_X86_CPUMODE_MASK | IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK))';
    24922492        if dByVari.keys() & self.kdVariationsWithNeedForPrefixCheck.keys():
    2493             sSwitchValue += ' | (pVCpu->iem.s.enmEffAddrMode == (pVCpu->iem.s.fExec & IEM_F_MODE_CPUMODE_MASK) ? 0 : 8)';
     2493            sSwitchValue += ' | (pVCpu->iem.s.enmEffAddrMode == (pVCpu->iem.s.fExec & IEM_F_MODE_X86_CPUMODE_MASK) ? 0 : 8)';
    24942494            # Accesses via FS and GS and CS goes thru non-FLAT functions. (CS
    24952495            # is not writable in 32-bit mode (at least), thus the penalty mode
     
    36303630        #
    36313631        oOut.write('\n'.join(self.generateLicenseHeader()));
    3632         oOut.write('AssertCompile((IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | IEM_F_MODE_CPUMODE_MASK) == 7);\n');
     3632        oOut.write('AssertCompile((IEM_F_MODE_X86_FLAT_OR_PRE_386_MASK | IEM_F_MODE_X86_CPUMODE_MASK) == 7);\n');
    36333633
    36343634        #
  • trunk/src/VBox/VMM/VMMAll/IEMAllThrdRecompiler.cpp

    r108278 r108368  
    15881588    PCIEMTHRDEDCALLENTRY const  paCalls          = pTb->Thrd.paCalls;
    15891589    uint32_t const              cCalls           = pTb->Thrd.cCalls;
    1590     DISCPUMODE                  enmGstCpuMode    = (pTb->fFlags & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
    1591                                                  : (pTb->fFlags & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
    1592                                                  :                                                            DISCPUMODE_64BIT;
     1590    DISCPUMODE                  enmGstCpuMode    = (pTb->fFlags & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_16BIT ? DISCPUMODE_16BIT
     1591                                                 : (pTb->fFlags & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT ? DISCPUMODE_32BIT
     1592                                                 :                                                                DISCPUMODE_64BIT;
    15931593    uint32_t                    fExec            = pTb->fFlags & UINT32_C(0x00ffffff);
    15941594    uint8_t                     idxRange         = UINT8_MAX;
  • trunk/src/VBox/VMM/VMMAll/target-x86/IEMAllN8veRecompFuncs-x86.h

    r108313 r108368  
    16491649        iemNativeRegFreeTmp(pReNative, idxRegSsAttr);
    16501650        offFixupJumpToUseOtherBitSp = off;
    1651         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     1651        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    16521652        {
    16531653            off = iemNativeEmitJccToFixedEx(pCodeBuf, off, off /*8-bit suffices*/, kIemNativeInstrCond_e); /* jump if zero */
     
    16941694#endif
    16951695        iemNativeFixupFixedJump(pReNative, offFixupJumpToUseOtherBitSp, off);
    1696         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     1696        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    16971697            off = iemNativeEmitStackPushUse16Sp(pCodeBuf, off, idxRegRsp, idxRegEffSp, cbMem);
    16981698        else
     
    23902390#endif
    23912391        iemNativeFixupFixedJump(pReNative, offFixupJumpToUseOtherBitSp, off);
    2392         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     2392        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    23932393            off = iemNativeEmitStackPopForRetnUse16Sp(pCodeBuf, off, idxRegRsp, idxRegEffSp, cbMem, cbPopArgs,
    23942394                                                      idxRegMemResult);
     
    82758275        iemNativeRegFreeTmp(pReNative, idxRegSsAttr);
    82768276        offFixupJumpToUseOtherBitSp = off;
    8277         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     8277        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    82788278        {
    82798279            off = iemNativeEmitJccToFixedEx(pCodeBuf, off, off /*8-bit suffices*/, kIemNativeInstrCond_e); /* jump if zero */
     
    83258325#endif
    83268326        iemNativeFixupFixedJump(pReNative, offFixupJumpToUseOtherBitSp, off);
    8327         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     8327        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    83288328            off = iemNativeEmitStackPushUse16Sp(pCodeBuf, off, idxRegRsp, idxRegEffSp, cbMem);
    83298329        else
     
    86578657        iemNativeRegFreeTmp(pReNative, idxRegSsAttr);
    86588658        offFixupJumpToUseOtherBitSp = off;
    8659         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     8659        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    86608660        {
    86618661/** @todo can skip idxRegRsp updating when popping ESP.   */
     
    87018701#endif
    87028702        iemNativeFixupFixedJump(pReNative, offFixupJumpToUseOtherBitSp, off);
    8703         if ((pReNative->fExec & IEM_F_MODE_CPUMODE_MASK) == IEMMODE_32BIT)
     8703        if ((pReNative->fExec & IEM_F_MODE_X86_CPUMODE_MASK) == IEMMODE_32BIT)
    87048704            off = iemNativeEmitStackPopUse16Sp(pCodeBuf, off, idxRegRsp, idxRegEffSp, cbMem, idxRegMemResult);
    87058705        else
  • trunk/src/VBox/VMM/VMMAll/target-x86/IEMInternal-x86.h

    r108298 r108368  
    23982398 * @param   a_pVCpu         The cross context virtual CPU structure of the calling thread.
    23992399 */
    2400 #define IEM_GET_CPU_MODE(a_pVCpu)           ((a_pVCpu)->iem.s.fExec & IEM_F_MODE_CPUMODE_MASK)
     2400#define IEM_GET_CPU_MODE(a_pVCpu)           ((a_pVCpu)->iem.s.fExec & IEM_F_MODE_X86_CPUMODE_MASK)
    24012401
    24022402/**
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