Changeset 103663 in vbox
- Timestamp:
- Mar 4, 2024 12:08:32 PM (13 months ago)
- svn:sync-xref-src-repo-rev:
- 162023
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r103660 r103663 3229 3229 'IEM_MC_REF_XREG_R32_CONST': (McBlock.parseMcGeneric, False, False, False, ), 3230 3230 'IEM_MC_REF_XREG_R64_CONST': (McBlock.parseMcGeneric, False, False, False, ), 3231 'IEM_MC_REF_XREG_U128': (McBlock.parseMcGeneric, False, False, False,),3232 'IEM_MC_REF_XREG_U128_CONST': (McBlock.parseMcGeneric, False, False, False,),3231 'IEM_MC_REF_XREG_U128': (McBlock.parseMcGeneric, False, False, True, ), 3232 'IEM_MC_REF_XREG_U128_CONST': (McBlock.parseMcGeneric, False, False, True, ), 3233 3233 'IEM_MC_REF_XREG_U32_CONST': (McBlock.parseMcGeneric, False, False, False, ), 3234 3234 'IEM_MC_REF_XREG_U64_CONST': (McBlock.parseMcGeneric, False, False, False, ), 3235 'IEM_MC_REF_XREG_XMM_CONST': (McBlock.parseMcGeneric, False, False, False,),3235 'IEM_MC_REF_XREG_XMM_CONST': (McBlock.parseMcGeneric, False, False, True, ), 3236 3236 'IEM_MC_REF_YREG_U128': (McBlock.parseMcGeneric, False, False, False, ), 3237 3237 'IEM_MC_REF_YREG_U128_CONST': (McBlock.parseMcGeneric, False, False, False, ), -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r103661 r103663 10784 10784 * we assume the threaded recompiler catches any incorrect EFLAGS delcarations. */ 10785 10785 #define IEM_MC_ASSERT_EFLAGS(a_fEflInput, a_fEflOutput) ((void)0) 10786 10787 10788 #define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg) \ 10789 off = iemNativeEmitRefXregXxx(pReNative, off, a_pu128Dst, a_iXReg, false /*fConst*/) 10790 10791 #define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg) \ 10792 off = iemNativeEmitRefXregXxx(pReNative, off, a_pu128Dst, a_iXReg, true /*fConst*/) 10793 10794 #define IEM_MC_REF_XREG_XMM_CONST(a_pXmmDst, a_iXReg) \ 10795 off = iemNativeEmitRefXregXxx(pReNative, off, a_pXmmDst, a_iXReg, true /*fConst*/) 10796 10797 /** Handles IEM_MC_REF_XREG_xxx[_CONST]. */ 10798 DECL_INLINE_THROW(uint32_t) 10799 iemNativeEmitRefXregXxx(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxVarRef, uint8_t iXReg, bool fConst) 10800 { 10801 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxVarRef); 10802 Assert(pReNative->Core.aVars[idxVarRef].cbVar == sizeof(void *)); 10803 Assert(iXReg < 16); 10804 10805 iemNativeVarSetKindToGstRegRef(pReNative, idxVarRef, kIemNativeGstRegRef_XReg, iXReg); 10806 10807 /* If we've delayed writing back the register value, flush it now. */ 10808 off = iemNativeRegFlushPendingSpecificWrite(pReNative, off, kIemNativeGstRegRef_XReg, iXReg); 10809 10810 /** @todo r=aeichner This needs to be done as soon as we shadow SSE registers in host registers, needs 10811 * figuring out the semantics on how this is tracked. 10812 * For now this is safe though as the reference will directly operate on the CPUMCTX 10813 * structure so the value can't get out of sync. 10814 */ 10815 #if 0 10816 /* If it's not a const reference we need to flush the shadow copy of the register now. */ 10817 if (!fConst) 10818 iemNativeRegFlushGuestShadows(pReNative, RT_BIT_64(IEMNATIVEGSTREG_XREG(iXReg))); 10819 #else 10820 RT_NOREF(fConst); 10821 #endif 10822 10823 return off; 10824 } 10786 10825 10787 10826
Note:
See TracChangeset
for help on using the changeset viewer.