VirtualBox

Changeset 11488 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Aug 19, 2008 2:24:46 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34985
Message:

stoswd emulation fix (DF).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/EMAll.cpp

    r11453 r11488  
    13651365    else
    13661366    {   
     1367        int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cbSize : (signed)cbSize;
     1368
     1369        if (!cTransfers)
     1370            return VINF_SUCCESS;
     1371
    13671372        /* Access verification first; we currently can't recover properly from traps inside this instruction */
    1368         rc = PGMVerifyAccess(pVM, GCDest, cTransfers * cbSize, X86_PTE_RW | X86_PTE_US);
     1373        rc = PGMVerifyAccess(pVM, GCDest - (offIncrement > 0) ? 0 : ((cTransfers-1) * cbSize), cTransfers * cbSize, X86_PTE_RW | X86_PTE_US);
    13691374        if (rc != VINF_SUCCESS)
    13701375        {
     
    13841389
    13851390            Assert(rc == VINF_SUCCESS);
    1386             GCOffset += cbSize;
    1387             GCDest   += cbSize;
     1391            GCOffset += offIncrement;
     1392            GCDest   += offIncrement;
    13881393            cTransfers--;
    13891394        }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette