VirtualBox

Changeset 1125 in vbox for trunk/src/VBox/VMM/PATM/VMMAll


Ignore:
Timestamp:
Mar 1, 2007 12:30:38 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
19022
Message:

Forward iret to V86 code to our trap handler for emulation.

File:
1 edited

Legend:

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

    r1110 r1125  
    586586                return VINF_PATM_PENDING_IRQ_AFTER_IRET;
    587587
     588            case PATM_ACTION_DO_V86_IRET:
     589            {
     590                Log(("PATMGC: Do iret to V86 code; eip=%VGv\n", pRegFrame->eip));
     591                Assert(pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags == (PATM_RESTORE_EAX|PATM_RESTORE_ECX));
     592                Assert(pVM->patm.s.CTXSUFF(pGCState)->fPIF == 0);
     593
     594                pRegFrame->eax = pVM->patm.s.CTXSUFF(pGCState)->Restore.uEAX;
     595                pRegFrame->ecx = pVM->patm.s.CTXSUFF(pGCState)->Restore.uECX;
     596                pVM->patm.s.CTXSUFF(pGCState)->Restore.uFlags = 0;
     597
     598                /* We are no longer executing PATM code; set PIF again. */
     599                pVM->patm.s.CTXSUFF(pGCState)->fPIF = 1;
     600                rc = EMInterpretIret(pVM, pRegFrame);
     601                if (VBOX_SUCCESS(rc))
     602                    STAM_COUNTER_INC(&pVM->patm.s.StatEmulIret);
     603                else
     604                    STAM_COUNTER_INC(&pVM->patm.s.StatEmulIretFailed);
     605                return rc;
     606            }
     607
    588608#ifdef DEBUG
    589609            case PATM_ACTION_LOG_CLI:
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