- Timestamp:
- Aug 19, 2008 3:44:24 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 34992
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/EMAll.cpp
r11488 r11492 1313 1313 uint32_t cbSize; 1314 1314 uint64_t cTransfers; 1315 int offIncrement; 1315 1316 1316 1317 /* Don't support any but these three prefix bytes. */ … … 1354 1355 } 1355 1356 1356 LogFlow(("emInterpretStosWD dest=%VGv cbSize=%d\n", GCDest, cbSize));1357 offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cbSize : (signed)cbSize; 1357 1358 1358 1359 if (!(pCpu->prefix & PREFIX_REP)) 1359 1360 { 1361 LogFlow(("emInterpretStosWD dest=%04X:%VGv (%VGv) cbSize=%d\n", pRegFrame->es, GCOffset, GCDest, cbSize)); 1362 1360 1363 rc = PGMPhysWriteGCPtrSafe(pVM, GCDest, &pRegFrame->rax, cbSize); 1361 1364 if (VBOX_FAILURE(rc)) 1362 1365 return VERR_EM_INTERPRETER; 1363 1366 Assert(rc == VINF_SUCCESS); 1367 1368 /* Update (e/r)di. */ 1369 switch (pCpu->addrmode) 1370 { 1371 case CPUMODE_16BIT: 1372 pRegFrame->di += offIncrement; 1373 break; 1374 case CPUMODE_32BIT: 1375 pRegFrame->edi += offIncrement; 1376 break; 1377 case CPUMODE_64BIT: 1378 pRegFrame->rdi += offIncrement; 1379 break; 1380 } 1381 1364 1382 } 1365 1383 else 1366 1384 { 1367 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cbSize : (signed)cbSize;1368 1369 1385 if (!cTransfers) 1370 1386 return VINF_SUCCESS; 1387 1388 LogFlow(("emInterpretStosWD dest=%04X:%VGv (%VGv) cbSize=%d cTransfers=%x DF=%d\n", pRegFrame->es, GCOffset, GCDest, cbSize, cTransfers, pRegFrame->eflags.Bits.u1DF)); 1371 1389 1372 1390 /* Access verification first; we currently can't recover properly from traps inside this instruction */
Note:
See TracChangeset
for help on using the changeset viewer.