Changeset 100151 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jun 10, 2023 9:12:41 PM (19 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllThreadedRecompiler.cpp
r100150 r100151 300 300 301 301 302 static VBOXSTRICTRC iemThreadedTbExec(PVMCC pVM, PVMCPUCC pVCpu, PIEMTB pTb) 303 { 304 RT_NOREF(pVM, pVCpu, pTb); 305 return VERR_NOT_IMPLEMENTED; 302 /** 303 * Executes a translation block. 304 * 305 * @returns Strict VBox status code. 306 * @param pVCpu The cross context virtual CPU structure of the calling 307 * thread. 308 * @param pTb The translation block to execute. 309 */ 310 static VBOXSTRICTRC iemThreadedTbExec(PVMCPUCC pVCpu, PIEMTB pTb) 311 { 312 /* Set the current TB so CIMPL function may get at it. */ 313 pVCpu->iem.s.pCurTbR3 = pTb; 314 315 /* The execution loop. */ 316 PCIEMTHRDEDCALLENTRY pCallEntry = pTb->Thrd.paCalls; 317 uint32_t cCallsLeft = pTb->Thrd.cCalls; 318 while (cCallsLeft-- > 0) 319 { 320 VBOXSTRICTRC const rcStrict = g_apfnIemThreadedFunctions[pCallEntry->enmFunction](pVCpu, 321 pCallEntry->auParams[0], 322 pCallEntry->auParams[1], 323 pCallEntry->auParams[2]); 324 if (RT_LIKELY(rcStrict == VINF_SUCCESS)) 325 pCallEntry++; 326 else 327 { 328 pVCpu->iem.s.pCurTbR3 = NULL; 329 330 /* Some status codes are just to get us out of this loop and 331 continue in a different translation block. */ 332 if (rcStrict == VINF_IEM_REEXEC_MODE_CHANGED) 333 return VINF_SUCCESS; 334 return rcStrict; 335 } 336 } 337 338 pVCpu->iem.s.pCurTbR3 = NULL; 339 return VINF_SUCCESS; 306 340 } 307 341 … … 379 413 pTb = iemThreadedTbLookup(pVM, pVCpu, GCPhysPc, uPc); 380 414 if (pTb) 381 rcStrict = iemThreadedTbExec(pV M, pVCpu, pTb);415 rcStrict = iemThreadedTbExec(pVCpu, pTb); 382 416 else 383 417 rcStrict = iemThreadedCompile(pVM, pVCpu /*, GCPhysPc, uPc*/);
Note:
See TracChangeset
for help on using the changeset viewer.