Changeset 42676 in vbox for trunk/src/VBox
- Timestamp:
- Aug 8, 2012 9:23:50 AM (13 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r42670 r42676 6871 6871 #define IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(a_iEffSeg, a_GCPtrEff) \ 6872 6872 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) 6873 6876 6874 6877 #define IEM_MC_IF_EFL_BIT_SET(a_fBit) if (pIemCpu->CTX_SUFF(pCtx)->eflags.u & (a_fBit)) { … … 7401 7404 7402 7405 #endif 7403 #if 1/* NT4SP1 - iret to v8086 (executing edlin) */7406 #if 0 /* NT4SP1 - iret to v8086 (executing edlin) */ 7404 7407 || (pOrgCtx->cs.Sel == 8 && pOrgCtx->rip == 0x8013b609) 7405 7408 … … 8204 8207 else if (rcStrict == VERR_IEM_INSTR_NOT_IMPLEMENTED) 8205 8208 pIemCpu->cRetInstrNotImplemented++; 8209 #ifdef IEM_VERIFICATION_MODE 8210 else if (rcStrict == VERR_IEM_RESTART_INSTRUCTION) 8211 rcStrict = VINF_SUCCESS; 8212 #endif 8206 8213 else 8207 8214 pIemCpu->cRetErrStatuses++; -
trunk/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
r42670 r42676 83 83 * Updates the specified flags according to a 8-bit result. 84 84 * 85 * @param pIemCpu The .85 * @param pIemCpu The IEM state of the calling EMT. 86 86 * @param u8Result The result to set the flags according to. 87 87 * @param fToUpdate The flags to update. … … 139 139 != (X86_SEL_TYPE_CODE | X86_SEL_TYPE_CONF)) /* not conforming code */ 140 140 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 */ 149 DECLINLINE(void) iemHlpUsedFpu(PIEMCPU pIemCpu) 150 { 151 CPUMSetChangedFlags(IEMCPU_TO_VMCPU(pIemCpu), CPUM_CHANGED_FPU_REM); 141 152 } 142 153 … … 2006 2017 2007 2018 /** 2019 * Loads a segment register when entering V8086 mode. 2020 * 2021 * @param pSReg The segment register. 2022 * @param uSeg The segment to load. 2023 */ 2024 static 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 /** 2008 2038 * Implements iret for protected mode returning to V8086 mode. 2009 2039 * 2010 * @param enmEffOpSize The effective operand size.2040 * @param pCtx Pointer to the CPU context. 2011 2041 * @param uNewEip The new EIP. 2012 2042 * @param uNewCs The new CS. … … 2014 2044 * @param uNewRsp The RSP after the initial IRET frame. 2015 2045 */ 2016 IEM_CIMPL_DEF_5(iemCImpl_iret_prot_v8086, IEMMODE, enmEffOpSize, uint32_t, uNewEip, uint16_t, uNewCs,2046 IEM_CIMPL_DEF_5(iemCImpl_iret_prot_v8086, PCPUMCTX, pCtx, uint32_t, uNewEip, uint16_t, uNewCs, 2017 2047 uint32_t, uNewFlags, uint64_t, uNewRsp) 2018 2048 { 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; 2021 2091 } 2022 2092 … … 2089 2159 if ( (uNewFlags & X86_EFL_VM) 2090 2160 && 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 } 2092 2165 2093 2166 /* … … 4084 4157 } 4085 4158 4159 iemHlpUsedFpu(pIemCpu); 4086 4160 iemRegAddToRip(pIemCpu, cbInstr); 4087 4161 return VINF_SUCCESS; … … 4293 4367 return rcStrict; 4294 4368 4369 iemHlpUsedFpu(pIemCpu); 4295 4370 iemRegAddToRip(pIemCpu, cbInstr); 4296 4371 return VINF_SUCCESS; … … 4497 4572 4498 4573 4499 /* Note: C0, C1, C2 and C3 are documented as undefined, we leave them untouched! */4574 iemHlpUsedFpu(pIemCpu); 4500 4575 iemRegAddToRip(pIemCpu, cbInstr); 4501 4576 return VINF_SUCCESS; … … 4526 4601 return rcStrict; 4527 4602 4603 iemHlpUsedFpu(pIemCpu); 4528 4604 iemRegAddToRip(pIemCpu, cbInstr); 4529 4605 return VINF_SUCCESS; … … 4560 4636 return rcStrict; 4561 4637 4638 iemHlpUsedFpu(pIemCpu); 4562 4639 iemRegAddToRip(pIemCpu, cbInstr); 4563 4640 return VINF_SUCCESS; … … 4583 4660 4584 4661 /* Note: C0, C1, C2 and C3 are documented as undefined, we leave them untouched! */ 4662 iemHlpUsedFpu(pIemCpu); 4585 4663 iemRegAddToRip(pIemCpu, cbInstr); 4586 4664 return VINF_SUCCESS; … … 4629 4707 pCtx->fpu.FSW |= X86_FSW_C1 | X86_FSW_IE | X86_FSW_SF | X86_FSW_ES | X86_FSW_B; 4630 4708 } 4709 4631 4710 iemFpuUpdateOpcodeAndIpWorker(pIemCpu, pCtx); 4632 4711 iemHlpUsedFpu(pIemCpu); 4633 4712 iemRegAddToRip(pIemCpu, cbInstr); 4634 4713 return VINF_SUCCESS; … … 4699 4778 4700 4779 iemFpuUpdateOpcodeAndIpWorker(pIemCpu, pCtx); 4780 iemHlpUsedFpu(pIemCpu); 4701 4781 iemRegAddToRip(pIemCpu, cbInstr); 4702 4782 return VINF_SUCCESS; -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r42670 r42676 11261 11261 IEM_MC_FPU_STACK_UNDERFLOW(0); 11262 11262 IEM_MC_ENDIF(); 11263 IEM_MC_USED_FPU(); 11263 11264 IEM_MC_ADVANCE_RIP(); 11264 11265 … … 11292 11293 IEM_MC_FPU_STACK_UNDERFLOW(UINT8_MAX); 11293 11294 IEM_MC_ENDIF(); 11295 IEM_MC_USED_FPU(); 11294 11296 IEM_MC_ADVANCE_RIP(); 11295 11297 … … 11323 11325 IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(UINT8_MAX); 11324 11326 IEM_MC_ENDIF(); 11327 IEM_MC_USED_FPU(); 11325 11328 IEM_MC_ADVANCE_RIP(); 11326 11329 … … 11423 11426 IEM_MC_FPU_STACK_UNDERFLOW(0); 11424 11427 IEM_MC_ENDIF(); 11428 IEM_MC_USED_FPU(); 11425 11429 IEM_MC_ADVANCE_RIP(); 11426 11430 … … 11472 11476 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 11473 11477 IEM_MC_ENDIF(); 11478 IEM_MC_USED_FPU(); 11474 11479 IEM_MC_ADVANCE_RIP(); 11475 11480 … … 11505 11510 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 11506 11511 IEM_MC_ENDIF(); 11512 IEM_MC_USED_FPU(); 11507 11513 IEM_MC_ADVANCE_RIP(); 11508 11514 … … 11609 11615 IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc); 11610 11616 IEM_MC_ENDIF(); 11617 IEM_MC_USED_FPU(); 11611 11618 IEM_MC_ADVANCE_RIP(); 11612 11619 … … 11644 11651 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 11645 11652 IEM_MC_ENDIF(); 11653 IEM_MC_USED_FPU(); 11646 11654 IEM_MC_ADVANCE_RIP(); 11647 11655 … … 11679 11687 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 11680 11688 IEM_MC_ENDIF(); 11689 IEM_MC_USED_FPU(); 11681 11690 IEM_MC_ADVANCE_RIP(); 11682 11691 … … 11767 11776 * intel optimizations. Investigate. */ 11768 11777 IEM_MC_UPDATE_FPU_OPCODE_IP(); 11778 IEM_MC_USED_FPU(); 11769 11779 IEM_MC_ADVANCE_RIP(); /* C0-C3 are documented as undefined, we leave them unmodified. */ 11770 11780 IEM_MC_END(); … … 11792 11802 IEM_MC_FPU_STACK_PUSH_UNDERFLOW(); 11793 11803 IEM_MC_ENDIF(); 11804 IEM_MC_USED_FPU(); 11794 11805 IEM_MC_ADVANCE_RIP(); 11795 11806 IEM_MC_END(); … … 11821 11832 IEM_MC_CALL_CIMPL_1(iemCImpl_fxch_underflow, iStReg); 11822 11833 IEM_MC_ENDIF(); 11834 IEM_MC_USED_FPU(); 11823 11835 IEM_MC_ADVANCE_RIP(); 11824 11836 IEM_MC_END(); … … 11847 11859 IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(0); 11848 11860 IEM_MC_ENDIF(); 11861 IEM_MC_USED_FPU(); 11849 11862 IEM_MC_ADVANCE_RIP(); 11850 11863 IEM_MC_END(); … … 11863 11876 IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(iDstReg); 11864 11877 IEM_MC_ENDIF(); 11878 IEM_MC_USED_FPU(); 11865 11879 IEM_MC_ADVANCE_RIP(); 11866 11880 IEM_MC_END(); … … 11893 11907 IEM_MC_FPU_STACK_UNDERFLOW(0); 11894 11908 IEM_MC_ENDIF(); 11909 IEM_MC_USED_FPU(); 11895 11910 IEM_MC_ADVANCE_RIP(); 11896 11911 … … 11938 11953 IEM_MC_FPU_STACK_UNDERFLOW(UINT8_MAX); 11939 11954 IEM_MC_ENDIF(); 11955 IEM_MC_USED_FPU(); 11940 11956 IEM_MC_ADVANCE_RIP(); 11941 11957 … … 11982 11998 IEM_MC_FPU_STACK_PUSH_OVERFLOW(); 11983 11999 IEM_MC_ENDIF(); 12000 IEM_MC_USED_FPU(); 11984 12001 IEM_MC_ADVANCE_RIP(); 11985 12002 … … 12082 12099 IEM_MC_FPU_STACK_PUSH_UNDERFLOW_TWO(); 12083 12100 IEM_MC_ENDIF(); 12101 IEM_MC_USED_FPU(); 12084 12102 IEM_MC_ADVANCE_RIP(); 12085 12103 … … 12122 12140 IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP(bRm & X86_MODRM_RM_MASK); 12123 12141 IEM_MC_ENDIF(); 12142 IEM_MC_USED_FPU(); 12124 12143 IEM_MC_ADVANCE_RIP(); 12125 12144 … … 12170 12189 IEM_MC_UPDATE_FSW_CONST(0); 12171 12190 12191 IEM_MC_USED_FPU(); 12192 IEM_MC_ADVANCE_RIP(); 12172 12193 IEM_MC_END(); 12173 12194 return VINF_SUCCESS; … … 12192 12213 IEM_MC_UPDATE_FSW_CONST(0); 12193 12214 12215 IEM_MC_USED_FPU(); 12216 IEM_MC_ADVANCE_RIP(); 12194 12217 IEM_MC_END(); 12195 12218 return VINF_SUCCESS; … … 12361 12384 IEM_MC_FPU_STACK_UNDERFLOW(0); 12362 12385 IEM_MC_ENDIF(); 12386 IEM_MC_USED_FPU(); 12363 12387 IEM_MC_ADVANCE_RIP(); 12364 12388 … … 12388 12412 IEM_MC_FPU_STACK_UNDERFLOW(0); 12389 12413 IEM_MC_ENDIF(); 12414 IEM_MC_USED_FPU(); 12390 12415 IEM_MC_ADVANCE_RIP(); 12391 12416 … … 12415 12440 IEM_MC_FPU_STACK_UNDERFLOW(0); 12416 12441 IEM_MC_ENDIF(); 12442 IEM_MC_USED_FPU(); 12417 12443 IEM_MC_ADVANCE_RIP(); 12418 12444 … … 12442 12468 IEM_MC_FPU_STACK_UNDERFLOW(0); 12443 12469 IEM_MC_ENDIF(); 12470 IEM_MC_USED_FPU(); 12444 12471 IEM_MC_ADVANCE_RIP(); 12445 12472 … … 12473 12500 IEM_MC_FPU_STACK_UNDERFLOW_THEN_POP_POP(); 12474 12501 IEM_MC_ENDIF(); 12502 IEM_MC_USED_FPU(); 12475 12503 IEM_MC_ADVANCE_RIP(); 12476 12504 … … 12517 12545 IEM_MC_FPU_STACK_UNDERFLOW(0); 12518 12546 IEM_MC_ENDIF(); 12547 IEM_MC_USED_FPU(); 12519 12548 IEM_MC_ADVANCE_RIP(); 12520 12549 … … 12566 12595 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 12567 12596 IEM_MC_ENDIF(); 12597 IEM_MC_USED_FPU(); 12568 12598 IEM_MC_ADVANCE_RIP(); 12569 12599 … … 12599 12629 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 12600 12630 IEM_MC_ENDIF(); 12631 IEM_MC_USED_FPU(); 12601 12632 IEM_MC_ADVANCE_RIP(); 12602 12633 … … 12704 12735 IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc); 12705 12736 IEM_MC_ENDIF(); 12737 IEM_MC_USED_FPU(); 12706 12738 IEM_MC_ADVANCE_RIP(); 12707 12739 … … 12739 12771 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 12740 12772 IEM_MC_ENDIF(); 12773 IEM_MC_USED_FPU(); 12741 12774 IEM_MC_ADVANCE_RIP(); 12742 12775 … … 12774 12807 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 12775 12808 IEM_MC_ENDIF(); 12809 IEM_MC_USED_FPU(); 12776 12810 IEM_MC_ADVANCE_RIP(); 12777 12811 … … 12809 12843 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 12810 12844 IEM_MC_ENDIF(); 12845 IEM_MC_USED_FPU(); 12811 12846 IEM_MC_ADVANCE_RIP(); 12812 12847 … … 12841 12876 IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc); 12842 12877 IEM_MC_ENDIF(); 12878 IEM_MC_USED_FPU(); 12843 12879 IEM_MC_ADVANCE_RIP(); 12844 12880 … … 12876 12912 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 12877 12913 IEM_MC_ENDIF(); 12914 IEM_MC_USED_FPU(); 12878 12915 IEM_MC_ADVANCE_RIP(); 12879 12916 … … 12903 12940 IEM_MC_FPU_STACK_UNDERFLOW(0); 12904 12941 IEM_MC_ENDIF(); 12942 IEM_MC_USED_FPU(); 12905 12943 IEM_MC_ADVANCE_RIP(); 12906 12944 … … 12930 12968 IEM_MC_FPU_STACK_UNDERFLOW(0); 12931 12969 IEM_MC_ENDIF(); 12970 IEM_MC_USED_FPU(); 12932 12971 IEM_MC_ADVANCE_RIP(); 12933 12972 … … 12957 12996 IEM_MC_FPU_STACK_UNDERFLOW(0); 12958 12997 IEM_MC_ENDIF(); 12998 IEM_MC_USED_FPU(); 12959 12999 IEM_MC_ADVANCE_RIP(); 12960 13000 … … 12984 13024 IEM_MC_FPU_STACK_UNDERFLOW(0); 12985 13025 IEM_MC_ENDIF(); 13026 IEM_MC_USED_FPU(); 12986 13027 IEM_MC_ADVANCE_RIP(); 12987 13028 … … 13163 13204 IEM_MC_FPU_STACK_UNDERFLOW(bRm & X86_MODRM_RM_MASK); 13164 13205 IEM_MC_ENDIF(); 13206 IEM_MC_USED_FPU(); 13165 13207 IEM_MC_ADVANCE_RIP(); 13166 13208 … … 13246 13288 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(0, pIemCpu->iEffSeg, GCPtrEffSrc); 13247 13289 IEM_MC_ENDIF(); 13290 IEM_MC_USED_FPU(); 13248 13291 IEM_MC_ADVANCE_RIP(); 13249 13292 … … 13295 13338 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 13296 13339 IEM_MC_ENDIF(); 13340 IEM_MC_USED_FPU(); 13297 13341 IEM_MC_ADVANCE_RIP(); 13298 13342 … … 13328 13372 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 13329 13373 IEM_MC_ENDIF(); 13374 IEM_MC_USED_FPU(); 13330 13375 IEM_MC_ADVANCE_RIP(); 13331 13376 … … 13430 13475 IEM_MC_FPU_STACK_PUSH_OVERFLOW_MEM_OP(pIemCpu->iEffSeg, GCPtrEffSrc); 13431 13476 IEM_MC_ENDIF(); 13477 IEM_MC_USED_FPU(); 13432 13478 IEM_MC_ADVANCE_RIP(); 13433 13479 … … 13465 13511 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 13466 13512 IEM_MC_ENDIF(); 13513 IEM_MC_USED_FPU(); 13467 13514 IEM_MC_ADVANCE_RIP(); 13468 13515 … … 13500 13547 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 13501 13548 IEM_MC_ENDIF(); 13549 IEM_MC_USED_FPU(); 13502 13550 IEM_MC_ADVANCE_RIP(); 13503 13551 … … 13537 13585 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 13538 13586 IEM_MC_ENDIF(); 13587 IEM_MC_USED_FPU(); 13539 13588 IEM_MC_ADVANCE_RIP(); 13540 13589 … … 13619 13668 IEM_MC_UPDATE_FPU_OPCODE_IP(); 13620 13669 13670 IEM_MC_USED_FPU(); 13621 13671 IEM_MC_ADVANCE_RIP(); 13622 13672 IEM_MC_END(); … … 13642 13692 IEM_MC_FPU_STACK_UNDERFLOW(bRm & X86_MODRM_RM_MASK); 13643 13693 IEM_MC_ENDIF(); 13694 IEM_MC_USED_FPU(); 13644 13695 IEM_MC_ADVANCE_RIP(); 13645 13696 IEM_MC_END(); … … 13787 13838 IEM_MC_FPU_STACK_UNDERFLOW(0); 13788 13839 IEM_MC_ENDIF(); 13840 IEM_MC_USED_FPU(); 13789 13841 IEM_MC_ADVANCE_RIP(); 13790 13842 … … 13836 13888 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 13837 13889 IEM_MC_ENDIF(); 13890 IEM_MC_USED_FPU(); 13838 13891 IEM_MC_ADVANCE_RIP(); 13839 13892 … … 13869 13922 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffSrc); 13870 13923 IEM_MC_ENDIF(); 13924 IEM_MC_USED_FPU(); 13871 13925 IEM_MC_ADVANCE_RIP(); 13872 13926 … … 13964 14018 IEM_MC_UPDATE_FPU_OPCODE_IP(); 13965 14019 14020 IEM_MC_USED_FPU(); 13966 14021 IEM_MC_ADVANCE_RIP(); 13967 14022 IEM_MC_END(); … … 14035 14090 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 14036 14091 IEM_MC_ENDIF(); 14092 IEM_MC_USED_FPU(); 14037 14093 IEM_MC_ADVANCE_RIP(); 14038 14094 … … 14070 14126 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 14071 14127 IEM_MC_ENDIF(); 14128 IEM_MC_USED_FPU(); 14072 14129 IEM_MC_ADVANCE_RIP(); 14073 14130 … … 14105 14162 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 14106 14163 IEM_MC_ENDIF(); 14164 IEM_MC_USED_FPU(); 14107 14165 IEM_MC_ADVANCE_RIP(); 14108 14166 … … 14150 14208 IEM_MC_FPU_STACK_UNDERFLOW_MEM_OP_THEN_POP(UINT8_MAX, pIemCpu->iEffSeg, GCPtrEffDst); 14151 14209 IEM_MC_ENDIF(); 14210 IEM_MC_USED_FPU(); 14152 14211 IEM_MC_ADVANCE_RIP(); 14153 14212 -
trunk/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
r42670 r42676 544 544 #define IEM_MC_UPDATE_FSW_WITH_MEM_OP_THEN_POP(a_u16FSW, a_iEffSeg, a_GCPtrEff) do { } while (0) 545 545 #define IEM_MC_UPDATE_FSW_THEN_POP_POP(a_u16FSW) do { } while (0) 546 #define IEM_MC_USED_FPU() do { } while (0) 546 547 547 548 #define IEM_MC_IF_EFL_BIT_SET(a_fBit) if (g_fRandom) {
Note:
See TracChangeset
for help on using the changeset viewer.