Changeset 102733 in vbox for trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
- Timestamp:
- Dec 29, 2023 7:40:03 PM (14 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMN8veRecompilerEmit.h
r102724 r102733 4301 4301 DECL_FORCE_INLINE_THROW(uint32_t) 4302 4302 iemNativeEmitLoadArgGregFromStackVar(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxRegArg, uint8_t idxVar, 4303 int32_t offAddend = 0, bool fVarAllowInVolatileReg = false) 4303 int32_t offAddend = 0, uint32_t fHstVolatileRegsAllowed = UINT32_MAX, 4304 bool fSpilledVarsInVolatileRegs = false) 4304 4305 { 4305 4306 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxVar); … … 4308 4309 4309 4310 uint8_t const idxRegVar = pReNative->Core.aVars[idxVar].idxReg; 4310 if (idxRegVar < RT_ELEMENTS(pReNative->Core.aHstRegs)) 4311 { 4312 Assert(!(RT_BIT_32(idxRegVar) & IEMNATIVE_CALL_VOLATILE_GREG_MASK) || fVarAllowInVolatileReg); 4313 RT_NOREF(fVarAllowInVolatileReg); 4311 if ( idxRegVar < RT_ELEMENTS(pReNative->Core.aHstRegs) 4312 && ( (RT_BIT_32(idxRegVar) & (~IEMNATIVE_CALL_VOLATILE_GREG_MASK | fHstVolatileRegsAllowed)) 4313 || !fSpilledVarsInVolatileRegs )) 4314 { 4315 AssertStmt( !(RT_BIT_32(idxRegVar) & IEMNATIVE_CALL_VOLATILE_GREG_MASK) 4316 || (RT_BIT_32(idxRegVar) & fHstVolatileRegsAllowed), 4317 IEMNATIVE_DO_LONGJMP(pReNative, VERR_IEM_REG_IPE_13)); 4314 4318 if (!offAddend) 4315 4319 { … … 4339 4343 DECL_FORCE_INLINE_THROW(uint32_t) 4340 4344 iemNativeEmitLoadArgGregFromImmOrStackVar(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxRegArg, uint8_t idxVar, 4341 int32_t offAddend = 0, bool fVarAllowInVolatileReg = false) 4345 int32_t offAddend = 0, uint32_t fHstVolatileRegsAllowed = 0, 4346 bool fSpilledVarsInVolatileRegs = false) 4342 4347 { 4343 4348 IEMNATIVE_ASSERT_VAR_IDX(pReNative, idxVar); … … 4345 4350 off = iemNativeEmitLoadGprImm64(pReNative, off, idxRegArg, pReNative->Core.aVars[idxVar].u.uValue + offAddend); 4346 4351 else 4347 off = iemNativeEmitLoadArgGregFromStackVar(pReNative, off, idxRegArg, idxVar, offAddend, fVarAllowInVolatileReg); 4352 off = iemNativeEmitLoadArgGregFromStackVar(pReNative, off, idxRegArg, idxVar, offAddend, 4353 fHstVolatileRegsAllowed, fSpilledVarsInVolatileRegs); 4348 4354 return off; 4349 4355 }
Note:
See TracChangeset
for help on using the changeset viewer.