VirtualBox

Ignore:
Timestamp:
Jan 24, 2007 1:59:46 PM (18 years ago)
Author:
vboxsync
Message:

Update

File:
1 edited

Legend:

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

    r268 r274  
    566566
    567567            case PATM_ACTION_PENDING_IRQ_AFTER_IRET:
    568                 Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX));
     568                /* Parameters:
     569                 *  edi = GC address to jump to
     570                 */
     571                Log(("PATMGC: Dispatch pending interrupt (iret); eip=%VGv->%VGv\n", pRegFrame->eip, pRegFrame->edi));
     572                Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX|PATM_RESTORE_EDI));
    569573                Assert(pVM->patm.s.CTXSUFF(pGCState)->fPIF == 0);
     574
     575                /* Change EIP to the guest address of the iret. */
     576                pRegFrame->eip = pRegFrame->edi;
    570577
    571578                pRegFrame->eax = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEAX;
    572579                pRegFrame->ecx = pVM->patm.s.CTXSUFF(pGCState)->Restore.uECX;
     580                pRegFrame->edi = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEDI;
    573581                pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags = 0;
    574582                return VINF_PATM_PENDING_IRQ_AFTER_IRET;
Note: See TracChangeset for help on using the changeset viewer.

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