Changeset 103588 in vbox for trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
- Timestamp:
- Feb 27, 2024 3:39:36 PM (9 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstTwoByte0f.cpp.h
r103548 r103588 1719 1719 IEM_MC_ARG_CONST(RTGCPTR, GCPtrEffDst, NIL_RTGCPTR, 1); 1720 1720 IEM_MC_FETCH_GREG_U16(u16Tmp, IEM_GET_MODRM_RM(pVCpu, bRm)); 1721 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, 0, iemCImpl_lmsw, u16Tmp, GCPtrEffDst); 1721 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, RT_BIT_64(kIemNativeGstReg_Cr0), 1722 iemCImpl_lmsw, u16Tmp, GCPtrEffDst); 1722 1723 IEM_MC_END(); 1723 1724 } … … 1730 1731 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1731 1732 IEM_MC_FETCH_MEM_U16(u16Tmp, pVCpu->iem.s.iEffSeg, GCPtrEffDst); 1732 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, 0, iemCImpl_lmsw, u16Tmp, GCPtrEffDst); 1733 IEM_MC_CALL_CIMPL_2(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, RT_BIT_64(kIemNativeGstReg_Cr0), 1734 iemCImpl_lmsw, u16Tmp, GCPtrEffDst); 1733 1735 IEM_MC_END(); 1734 1736 } … … 1978 1980 IEMOP_MNEMONIC(syscall, "syscall"); /** @todo 286 LOADALL */ 1979 1981 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1982 /** @todo r=aeichner Clobbers cr0 only if this is a 286 LOADALL instruction. */ 1980 1983 IEM_MC_DEFER_TO_CIMPL_0_RET(IEM_CIMPL_F_BRANCH_INDIRECT | IEM_CIMPL_F_BRANCH_FAR | IEM_CIMPL_F_BRANCH_STACK_FAR 1981 | IEM_CIMPL_F_MODE | IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_END_TB, 0,1982 iemCImpl_syscall);1984 | IEM_CIMPL_F_MODE | IEM_CIMPL_F_RFLAGS | IEM_CIMPL_F_END_TB, 1985 RT_BIT_64(kIemNativeGstReg_Cr0), iemCImpl_syscall); 1983 1986 } 1984 1987 … … 1989 1992 IEMOP_MNEMONIC(clts, "clts"); 1990 1993 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 1991 IEM_MC_DEFER_TO_CIMPL_0_RET(IEM_CIMPL_F_VMEXIT, 0, iemCImpl_clts);1994 IEM_MC_DEFER_TO_CIMPL_0_RET(IEM_CIMPL_F_VMEXIT, RT_BIT_64(kIemNativeGstReg_Cr0), iemCImpl_clts); 1992 1995 } 1993 1996 … … 3381 3384 IEMOP_HLP_DONE_DECODING(); 3382 3385 3386 /** @todo r=aeichner Split this up as flushing the cr0 is excessive for crX != 0? */ 3383 3387 if (iCrReg & (2 | 8)) 3384 3388 IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_VMEXIT, 0, 3385 3389 iemCImpl_mov_Cd_Rd, iCrReg, IEM_GET_MODRM_RM(pVCpu, bRm)); 3386 3390 else 3387 IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, 0,3391 IEM_MC_DEFER_TO_CIMPL_2_RET(IEM_CIMPL_F_MODE | IEM_CIMPL_F_VMEXIT, RT_BIT_64(kIemNativeGstReg_Cr0), 3388 3392 iemCImpl_mov_Cd_Rd, iCrReg, IEM_GET_MODRM_RM(pVCpu, bRm)); 3389 3393 }
Note:
See TracChangeset
for help on using the changeset viewer.