VirtualBox

Changeset 42676 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 8, 2012 9:23:50 AM (13 years ago)
Author:
vboxsync
Message:

IEM: IRET to V8086 (had to try). Set CPUM_CHANGED_FPU_REM. Added missing RIP advancing to fincstp and fdecstp.

Location:
trunk/src/VBox/VMM
Files:
4 edited

Legend:

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

    r42670 r42676  
    68716871#define IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(a_iEffSeg, a_GCPtrEff) \
    68726872    iemFpuStackPushOverflowWithMemOp(pIemCpu, a_iEffSeg, a_GCPtrEff)
     6873/** Indicates that we (might) have modified the FPU state. */
     6874#define IEM_MC_USED_FPU() \
     6875    CPUMSetChangedFlags(IEMCPU_TO_VMCPU(pIemCpu), CPUM_CHANGED_FPU_REM)
    68736876
    68746877#define IEM_MC_IF_EFL_BIT_SET(a_fBit)                   if (pIemCpu->CTX_SUFF(pCtx)->eflags.u & (a_fBit)) {
     
    74017404
    74027405#endif
    7403 #if 1 /* NT4SP1 - iret to v8086 (executing edlin) */
     7406#if 0 /* NT4SP1 - iret to v8086 (executing edlin) */
    74047407            || (pOrgCtx->cs.Sel == 8 && pOrgCtx->rip == 0x8013b609)
    74057408
     
    82048207        else if (rcStrict == VERR_IEM_INSTR_NOT_IMPLEMENTED)
    82058208            pIemCpu->cRetInstrNotImplemented++;
     8209#ifdef IEM_VERIFICATION_MODE
     8210        else if (rcStrict == VERR_IEM_RESTART_INSTRUCTION)
     8211            rcStrict = VINF_SUCCESS;
     8212#endif
    82068213        else
    82078214            pIemCpu->cRetErrStatuses++;
  • trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h

    r42670 r42676  
    8383 * Updates the specified flags according to a 8-bit result.
    8484 *
    85  * @param   pIemCpu             The.
     85 * @param   pIemCpu             The IEM state of the calling EMT.
    8686 * @param   u8Result            The result to set the flags according to.
    8787 * @param   fToUpdate           The flags to update.
     
    139139           !=                         (X86_SEL_TYPE_CODE | X86_SEL_TYPE_CONF)) /* not conforming code */
    140140        iemHlpLoadNullDataSelectorProt(pSReg, 0);
     141}
     142
     143
     144/**
     145 * Indicates that we have modified the FPU state.
     146 *
     147 * @param   pIemCpu             The IEM state of the calling EMT.
     148 */
     149DECLINLINE(void) iemHlpUsedFpu(PIEMCPU pIemCpu)
     150{
     151    CPUMSetChangedFlags(IEMCPU_TO_VMCPU(pIemCpu), CPUM_CHANGED_FPU_REM);
    141152}
    142153
     
    20062017
    20072018/**
     2019 * Loads a segment register when entering V8086 mode.
     2020 *
     2021 * @param   pSReg           The segment register.
     2022 * @param   uSeg            The segment to load.
     2023 */
     2024static void iemCImplCommonV8086LoadSeg(PCPUMSELREG pSReg, uint16_t uSeg)
     2025{
     2026    pSReg->Sel        = uSeg;
     2027    pSReg->ValidSel   = uSeg;
     2028    pSReg->fFlags     = CPUMSELREG_FLAGS_VALID;
     2029    pSReg->u64Base    = (uint32_t)uSeg << 4;
     2030    pSReg->u32Limit   = 0xffff;
     2031    pSReg->Attr.u     = X86_SEL_TYPE_RW_ACC | RT_BIT(4) /*!sys*/ | RT_BIT(7) /*P*/ | (3 /*DPL*/ << 5); /* VT-x wants 0xf3 */
     2032    /** @todo Testcase: Check if VT-x really needs this and what it does itself when
     2033     *        IRET'ing to V8086. */
     2034}
     2035
     2036
     2037/**
    20082038 * Implements iret for protected mode returning to V8086 mode.
    20092039 *
    2010  * @param   enmEffOpSize    The effective operand size.
     2040 * @param   pCtx            Pointer to the CPU context.
    20112041 * @param   uNewEip         The new EIP.
    20122042 * @param   uNewCs          The new CS.
     
    20142044 * @param   uNewRsp         The RSP after the initial IRET frame.
    20152045 */
    2016 IEM_CIMPL_DEF_5(iemCImpl_iret_prot_v8086, IEMMODE, enmEffOpSize, uint32_t, uNewEip, uint16_t, uNewCs,
     2046IEM_CIMPL_DEF_5(iemCImpl_iret_prot_v8086, PCPUMCTX, pCtx, uint32_t, uNewEip, uint16_t, uNewCs,
    20172047                uint32_t, uNewFlags, uint64_t, uNewRsp)
    20182048{
    2019     /** @todo NT4SP1 0008:8013bd5d cf   iret */
    2020     IEM_RETURN_ASPECT_NOT_IMPLEMENTED();
     2049#if 1
     2050    if (!LogIs6Enabled())
     2051    {
     2052        RTLogGroupSettings(NULL, "iem.eo.l6.l2");
     2053        RTLogFlags(NULL, "enabled");
     2054        return VERR_IEM_RESTART_INSTRUCTION;
     2055    }
     2056#endif
     2057
     2058    /*
     2059     * Pop the V8086 specific frame bits off the stack.
     2060     */
     2061    VBOXSTRICTRC    rcStrict;
     2062    RTCPTRUNION     uFrame;
     2063    rcStrict = iemMemStackPopContinueSpecial(pIemCpu, 24, &uFrame.pv, &uNewRsp);
     2064    if (rcStrict != VINF_SUCCESS)
     2065        return rcStrict;
     2066    uint32_t uNewEsp = uFrame.pu32[0];
     2067    uint16_t uNewSs  = uFrame.pu32[1];
     2068    uint16_t uNewEs  = uFrame.pu32[2];
     2069    uint16_t uNewDs  = uFrame.pu32[3];
     2070    uint16_t uNewFs  = uFrame.pu32[4];
     2071    uint16_t uNewGs  = uFrame.pu32[5];
     2072    rcStrict = iemMemCommitAndUnmap(pIemCpu, (void *)uFrame.pv, IEM_ACCESS_STACK_R); /* don't use iemMemStackPopCommitSpecial here. */
     2073    if (rcStrict != VINF_SUCCESS)
     2074        return rcStrict;
     2075
     2076    /*
     2077     * Commit the operation.
     2078     */
     2079    iemCImplCommonV8086LoadSeg(&pCtx->cs, uNewCs);
     2080    iemCImplCommonV8086LoadSeg(&pCtx->ss, uNewSs);
     2081    iemCImplCommonV8086LoadSeg(&pCtx->es, uNewEs);
     2082    iemCImplCommonV8086LoadSeg(&pCtx->ds, uNewDs);
     2083    iemCImplCommonV8086LoadSeg(&pCtx->fs, uNewFs);
     2084    iemCImplCommonV8086LoadSeg(&pCtx->gs, uNewGs);
     2085    pCtx->rip      = uNewEip;
     2086    pCtx->rsp      = uNewEsp;
     2087    pCtx->rflags.u = uNewFlags;
     2088    pIemCpu->uCpl  = 3;
     2089
     2090    return VINF_SUCCESS;
    20212091}
    20222092
     
    20892159    if (   (uNewFlags & X86_EFL_VM)
    20902160        && pIemCpu->uCpl == 0)
    2091         return IEM_CIMPL_CALL_5(iemCImpl_iret_prot_v8086, enmEffOpSize, uNewEip, uNewCs, uNewFlags, uNewRsp);
     2161    {
     2162        Assert(enmEffOpSize == IEMMODE_32BIT);
     2163        return IEM_CIMPL_CALL_5(iemCImpl_iret_prot_v8086, pCtx, uNewEip, uNewCs, uNewFlags, uNewRsp);
     2164    }
    20922165
    20932166    /*
     
    40844157    }
    40854158
     4159    iemHlpUsedFpu(pIemCpu);
    40864160    iemRegAddToRip(pIemCpu, cbInstr);
    40874161    return VINF_SUCCESS;
     
    42934367        return rcStrict;
    42944368
     4369    iemHlpUsedFpu(pIemCpu);
    42954370    iemRegAddToRip(pIemCpu, cbInstr);
    42964371    return VINF_SUCCESS;
     
    44974572
    44984573
    4499     /* Note: C0, C1, C2 and C3 are documented as undefined, we leave them untouched! */
     4574    iemHlpUsedFpu(pIemCpu);
    45004575    iemRegAddToRip(pIemCpu, cbInstr);
    45014576    return VINF_SUCCESS;
     
    45264601        return rcStrict;
    45274602
     4603    iemHlpUsedFpu(pIemCpu);
    45284604    iemRegAddToRip(pIemCpu, cbInstr);
    45294605    return VINF_SUCCESS;
     
    45604636        return rcStrict;
    45614637
     4638    iemHlpUsedFpu(pIemCpu);
    45624639    iemRegAddToRip(pIemCpu, cbInstr);
    45634640    return VINF_SUCCESS;
     
    45834660
    45844661    /* Note: C0, C1, C2 and C3 are documented as undefined, we leave them untouched! */
     4662    iemHlpUsedFpu(pIemCpu);
    45854663    iemRegAddToRip(pIemCpu, cbInstr);
    45864664    return VINF_SUCCESS;
     
    46294707        pCtx->fpu.FSW |= X86_FSW_C1 | X86_FSW_IE | X86_FSW_SF | X86_FSW_ES | X86_FSW_B;
    46304708    }
     4709
    46314710    iemFpuUpdateOpcodeAndIpWorker(pIemCpu, pCtx);
    4632 
     4711    iemHlpUsedFpu(pIemCpu);
    46334712    iemRegAddToRip(pIemCpu, cbInstr);
    46344713    return VINF_SUCCESS;
     
    46994778
    47004779    iemFpuUpdateOpcodeAndIpWorker(pIemCpu, pCtx);
     4780    iemHlpUsedFpu(pIemCpu);
    47014781    iemRegAddToRip(pIemCpu, cbInstr);
    47024782    return VINF_SUCCESS;
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h

    r42670 r42676  
    1126111261        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1126211262    IEM_MC_ENDIF();
     11263    IEM_MC_USED_FPU();
    1126311264    IEM_MC_ADVANCE_RIP();
    1126411265
     
    1129211293        IEM_MC_FPU_STACK_UNDERFLOW(UINT8_MAX);
    1129311294    IEM_MC_ENDIF();
     11295    IEM_MC_USED_FPU();
    1129411296    IEM_MC_ADVANCE_RIP();
    1129511297
     
    1132311325        IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(UINT8_MAX);
    1132411326    IEM_MC_ENDIF();
     11327    IEM_MC_USED_FPU();
    1132511328    IEM_MC_ADVANCE_RIP();
    1132611329
     
    1142311426        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1142411427    IEM_MC_ENDIF();
     11428    IEM_MC_USED_FPU();
    1142511429    IEM_MC_ADVANCE_RIP();
    1142611430
     
    1147211476        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1147311477    IEM_MC_ENDIF();
     11478    IEM_MC_USED_FPU();
    1147411479    IEM_MC_ADVANCE_RIP();
    1147511480
     
    1150511510        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1150611511    IEM_MC_ENDIF();
     11512    IEM_MC_USED_FPU();
    1150711513    IEM_MC_ADVANCE_RIP();
    1150811514
     
    1160911615        IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc);
    1161011616    IEM_MC_ENDIF();
     11617    IEM_MC_USED_FPU();
    1161111618    IEM_MC_ADVANCE_RIP();
    1161211619
     
    1164411651        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1164511652    IEM_MC_ENDIF();
     11653    IEM_MC_USED_FPU();
    1164611654    IEM_MC_ADVANCE_RIP();
    1164711655
     
    1167911687        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1168011688    IEM_MC_ENDIF();
     11689    IEM_MC_USED_FPU();
    1168111690    IEM_MC_ADVANCE_RIP();
    1168211691
     
    1176711776     *        intel optimizations. Investigate. */
    1176811777    IEM_MC_UPDATE_FPU_OPCODE_IP();
     11778    IEM_MC_USED_FPU();
    1176911779    IEM_MC_ADVANCE_RIP(); /* C0-C3 are documented as undefined, we leave them unmodified. */
    1177011780    IEM_MC_END();
     
    1179211802        IEM_MC_FPU_STACK_PUSH_UNDERFLOW();
    1179311803    IEM_MC_ENDIF();
     11804    IEM_MC_USED_FPU();
    1179411805    IEM_MC_ADVANCE_RIP();
    1179511806    IEM_MC_END();
     
    1182111832        IEM_MC_CALL_CIMPL_1(iemCImpl_fxch_underflow, iStReg);
    1182211833    IEM_MC_ENDIF();
     11834    IEM_MC_USED_FPU();
    1182311835    IEM_MC_ADVANCE_RIP();
    1182411836    IEM_MC_END();
     
    1184711859            IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(0);
    1184811860        IEM_MC_ENDIF();
     11861        IEM_MC_USED_FPU();
    1184911862        IEM_MC_ADVANCE_RIP();
    1185011863        IEM_MC_END();
     
    1186311876            IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(iDstReg);
    1186411877        IEM_MC_ENDIF();
     11878        IEM_MC_USED_FPU();
    1186511879        IEM_MC_ADVANCE_RIP();
    1186611880        IEM_MC_END();
     
    1189311907        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1189411908    IEM_MC_ENDIF();
     11909    IEM_MC_USED_FPU();
    1189511910    IEM_MC_ADVANCE_RIP();
    1189611911
     
    1193811953        IEM_MC_FPU_STACK_UNDERFLOW(UINT8_MAX);
    1193911954    IEM_MC_ENDIF();
     11955    IEM_MC_USED_FPU();
    1194011956    IEM_MC_ADVANCE_RIP();
    1194111957
     
    1198211998        IEM_MC_FPU_STACK_PUSH_OVERFLOW();
    1198311999    IEM_MC_ENDIF();
     12000    IEM_MC_USED_FPU();
    1198412001    IEM_MC_ADVANCE_RIP();
    1198512002
     
    1208212099        IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO();
    1208312100    IEM_MC_ENDIF();
     12101    IEM_MC_USED_FPU();
    1208412102    IEM_MC_ADVANCE_RIP();
    1208512103
     
    1212212140        IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(bRm & X86_MODRM_RM_MASK);
    1212312141    IEM_MC_ENDIF();
     12142    IEM_MC_USED_FPU();
    1212412143    IEM_MC_ADVANCE_RIP();
    1212512144
     
    1217012189    IEM_MC_UPDATE_FSW_CONST(0);
    1217112190
     12191    IEM_MC_USED_FPU();
     12192    IEM_MC_ADVANCE_RIP();
    1217212193    IEM_MC_END();
    1217312194    return VINF_SUCCESS;
     
    1219212213    IEM_MC_UPDATE_FSW_CONST(0);
    1219312214
     12215    IEM_MC_USED_FPU();
     12216    IEM_MC_ADVANCE_RIP();
    1219412217    IEM_MC_END();
    1219512218    return VINF_SUCCESS;
     
    1236112384        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1236212385    IEM_MC_ENDIF();
     12386    IEM_MC_USED_FPU();
    1236312387    IEM_MC_ADVANCE_RIP();
    1236412388
     
    1238812412        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1238912413    IEM_MC_ENDIF();
     12414    IEM_MC_USED_FPU();
    1239012415    IEM_MC_ADVANCE_RIP();
    1239112416
     
    1241512440        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1241612441    IEM_MC_ENDIF();
     12442    IEM_MC_USED_FPU();
    1241712443    IEM_MC_ADVANCE_RIP();
    1241812444
     
    1244212468        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1244312469    IEM_MC_ENDIF();
     12470    IEM_MC_USED_FPU();
    1244412471    IEM_MC_ADVANCE_RIP();
    1244512472
     
    1247312500        IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP();
    1247412501    IEM_MC_ENDIF();
     12502    IEM_MC_USED_FPU();
    1247512503    IEM_MC_ADVANCE_RIP();
    1247612504
     
    1251712545        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1251812546    IEM_MC_ENDIF();
     12547    IEM_MC_USED_FPU();
    1251912548    IEM_MC_ADVANCE_RIP();
    1252012549
     
    1256612595        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1256712596    IEM_MC_ENDIF();
     12597    IEM_MC_USED_FPU();
    1256812598    IEM_MC_ADVANCE_RIP();
    1256912599
     
    1259912629        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1260012630    IEM_MC_ENDIF();
     12631    IEM_MC_USED_FPU();
    1260112632    IEM_MC_ADVANCE_RIP();
    1260212633
     
    1270412735        IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc);
    1270512736    IEM_MC_ENDIF();
     12737    IEM_MC_USED_FPU();
    1270612738    IEM_MC_ADVANCE_RIP();
    1270712739
     
    1273912771        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1274012772    IEM_MC_ENDIF();
     12773    IEM_MC_USED_FPU();
    1274112774    IEM_MC_ADVANCE_RIP();
    1274212775
     
    1277412807        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1277512808    IEM_MC_ENDIF();
     12809    IEM_MC_USED_FPU();
    1277612810    IEM_MC_ADVANCE_RIP();
    1277712811
     
    1280912843        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1281012844    IEM_MC_ENDIF();
     12845    IEM_MC_USED_FPU();
    1281112846    IEM_MC_ADVANCE_RIP();
    1281212847
     
    1284112876        IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc);
    1284212877    IEM_MC_ENDIF();
     12878    IEM_MC_USED_FPU();
    1284312879    IEM_MC_ADVANCE_RIP();
    1284412880
     
    1287612912        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1287712913    IEM_MC_ENDIF();
     12914    IEM_MC_USED_FPU();
    1287812915    IEM_MC_ADVANCE_RIP();
    1287912916
     
    1290312940        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1290412941    IEM_MC_ENDIF();
     12942    IEM_MC_USED_FPU();
    1290512943    IEM_MC_ADVANCE_RIP();
    1290612944
     
    1293012968        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1293112969    IEM_MC_ENDIF();
     12970    IEM_MC_USED_FPU();
    1293212971    IEM_MC_ADVANCE_RIP();
    1293312972
     
    1295712996        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1295812997    IEM_MC_ENDIF();
     12998    IEM_MC_USED_FPU();
    1295912999    IEM_MC_ADVANCE_RIP();
    1296013000
     
    1298413024        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1298513025    IEM_MC_ENDIF();
     13026    IEM_MC_USED_FPU();
    1298613027    IEM_MC_ADVANCE_RIP();
    1298713028
     
    1316313204        IEM_MC_FPU_STACK_UNDERFLOW(bRm & X86_MODRM_RM_MASK);
    1316413205    IEM_MC_ENDIF();
     13206    IEM_MC_USED_FPU();
    1316513207    IEM_MC_ADVANCE_RIP();
    1316613208
     
    1324613288        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(0, pIemCpu->iEffSeg, GCPtrEffSrc);
    1324713289    IEM_MC_ENDIF();
     13290    IEM_MC_USED_FPU();
    1324813291    IEM_MC_ADVANCE_RIP();
    1324913292
     
    1329513338        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1329613339    IEM_MC_ENDIF();
     13340    IEM_MC_USED_FPU();
    1329713341    IEM_MC_ADVANCE_RIP();
    1329813342
     
    1332813372        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1332913373    IEM_MC_ENDIF();
     13374    IEM_MC_USED_FPU();
    1333013375    IEM_MC_ADVANCE_RIP();
    1333113376
     
    1343013475        IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc);
    1343113476    IEM_MC_ENDIF();
     13477    IEM_MC_USED_FPU();
    1343213478    IEM_MC_ADVANCE_RIP();
    1343313479
     
    1346513511        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1346613512    IEM_MC_ENDIF();
     13513    IEM_MC_USED_FPU();
    1346713514    IEM_MC_ADVANCE_RIP();
    1346813515
     
    1350013547        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1350113548    IEM_MC_ENDIF();
     13549    IEM_MC_USED_FPU();
    1350213550    IEM_MC_ADVANCE_RIP();
    1350313551
     
    1353713585        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1353813586    IEM_MC_ENDIF();
     13587    IEM_MC_USED_FPU();
    1353913588    IEM_MC_ADVANCE_RIP();
    1354013589
     
    1361913668    IEM_MC_UPDATE_FPU_OPCODE_IP();
    1362013669
     13670    IEM_MC_USED_FPU();
    1362113671    IEM_MC_ADVANCE_RIP();
    1362213672    IEM_MC_END();
     
    1364213692        IEM_MC_FPU_STACK_UNDERFLOW(bRm & X86_MODRM_RM_MASK);
    1364313693    IEM_MC_ENDIF();
     13694    IEM_MC_USED_FPU();
    1364413695    IEM_MC_ADVANCE_RIP();
    1364513696    IEM_MC_END();
     
    1378713838        IEM_MC_FPU_STACK_UNDERFLOW(0);
    1378813839    IEM_MC_ENDIF();
     13840    IEM_MC_USED_FPU();
    1378913841    IEM_MC_ADVANCE_RIP();
    1379013842
     
    1383613888        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1383713889    IEM_MC_ENDIF();
     13890    IEM_MC_USED_FPU();
    1383813891    IEM_MC_ADVANCE_RIP();
    1383913892
     
    1386913922        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc);
    1387013923    IEM_MC_ENDIF();
     13924    IEM_MC_USED_FPU();
    1387113925    IEM_MC_ADVANCE_RIP();
    1387213926
     
    1396414018    IEM_MC_UPDATE_FPU_OPCODE_IP();
    1396514019
     14020    IEM_MC_USED_FPU();
    1396614021    IEM_MC_ADVANCE_RIP();
    1396714022    IEM_MC_END();
     
    1403514090        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1403614091    IEM_MC_ENDIF();
     14092    IEM_MC_USED_FPU();
    1403714093    IEM_MC_ADVANCE_RIP();
    1403814094
     
    1407014126        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1407114127    IEM_MC_ENDIF();
     14128    IEM_MC_USED_FPU();
    1407214129    IEM_MC_ADVANCE_RIP();
    1407314130
     
    1410514162        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1410614163    IEM_MC_ENDIF();
     14164    IEM_MC_USED_FPU();
    1410714165    IEM_MC_ADVANCE_RIP();
    1410814166
     
    1415014208        IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst);
    1415114209    IEM_MC_ENDIF();
     14210    IEM_MC_USED_FPU();
    1415214211    IEM_MC_ADVANCE_RIP();
    1415314212
  • trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp

    r42670 r42676  
    544544#define IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP(a_u16FSW, a_iEffSeg, a_GCPtrEff)                 do { } while (0)
    545545#define IEM_MC_UPDATE_FSW_THEN_POP_POP(a_u16FSW)                                                do { } while (0)
     546#define IEM_MC_USED_FPU()                                                                       do { } while (0)
    546547
    547548#define IEM_MC_IF_EFL_BIT_SET(a_fBit)                                   if (g_fRandom) {
Note: See TracChangeset for help on using the changeset viewer.

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