VirtualBox

Changeset 273 in vbox for trunk/src/VBox/VMM


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

Update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/EM.cpp

    r270 r273  
    8181static int emR3RawForcedActions(PVM pVM, PCPUMCTX pCtx);
    8282static int emR3RawExecute(PVM pVM, bool *pfFFDone);
    83 DECLINLINE(int) emR3RawExecuteInstruction(PVM pVM, const char *pszPrefix);
     83DECLINLINE(int) emR3RawExecuteInstruction(PVM pVM, const char *pszPrefix, int gcret = VINF_SUCCESS);
    8484static int emR3HighPriorityPostForcedActions(PVM pVM, int rc);
    8585static int emR3ForcedActions(PVM pVM, int rc);
     
    950950 *
    951951 * @param   pVM         VM handle.
     952 * @param   gcret       GC return code
    952953 * @param   pszPrefix   Disassembly prefix. If not NULL we'll disassemble the
    953954 *                      instruction and prefix the log output with this text.
    954955 */
    955956#ifdef LOG_ENABLED
    956 static int emR3RawExecuteInstructionWorker(PVM pVM, const char *pszPrefix)
     957static int emR3RawExecuteInstructionWorker(PVM pVM, int gcret, const char *pszPrefix)
    957958#else
    958 static int emR3RawExecuteInstructionWorker(PVM pVM)
     959static int emR3RawExecuteInstructionWorker(PVM pVM, int gcret)
    959960#endif
    960961{
     
    10151016                    Log(("PATCH: IF=1 -> emulate last instruction as it can't be interrupted!!\n"));
    10161017                    return emR3RawExecuteInstruction(pVM, "PATCHIR");
     1018                }
     1019                else
     1020                if (gcret == VINF_PATM_PENDING_IRQ_AFTER_IRET)
     1021                {
     1022                    /* special case: iret, that sets IF,  detected a pending irq/event */
     1023                    return emR3RawExecuteInstruction(pVM, "PATCHIRET");
    10171024                }
    10181025                return VINF_EM_RESCHEDULE_REM;
     
    11021109 * @param   pszPrefix   Disassembly prefix. If not NULL we'll disassemble the
    11031110 *                      instruction and prefix the log output with this text.
     1111 * @param   gcret       GC return code
    11041112 */
    1105 DECLINLINE(int) emR3RawExecuteInstruction(PVM pVM, const char *pszPrefix)
     1113DECLINLINE(int) emR3RawExecuteInstruction(PVM pVM, const char *pszPrefix, int gcret)
    11061114{
    11071115#ifdef LOG_ENABLED
    1108     return emR3RawExecuteInstructionWorker(pVM, pszPrefix);
     1116    return emR3RawExecuteInstructionWorker(pVM, gcret, pszPrefix);
    11091117#else
    1110     return emR3RawExecuteInstructionWorker(pVM);
     1118    return emR3RawExecuteInstructionWorker(pVM, gcret);
    11111119#endif
    11121120}
     
    17091717                    return VINF_SUCCESS; */
    17101718                }
    1711                 else
    1712                 if (gcret == VINF_PATM_PENDING_IRQ_AFTER_IRET)
    1713                 {
    1714                     /* special case: iret, that sets IF,  detected a pending irq/event */
    1715                     return emR3RawExecuteInstruction(pVM, "PATCHIRET");
    1716                 }
    17171719                return VINF_EM_RESCHEDULE_REM;
    17181720            }
     
    20632065        case VINF_PATM_PATCH_TRAP_PF:
    20642066        case VINF_PATM_PATCH_INT3:
    2065         case VINF_PATM_PENDING_IRQ_AFTER_IRET:
    20662067            rc = emR3PatchTrap(pVM, pCtx, rc);
    20672068            break;
     
    22152216            /** @todo skip instruction and go directly to the halt state. (see REM for implementation details) */
    22162217            rc = emR3RawPrivileged(pVM);
     2218            break;
     2219
     2220        case VINF_PATM_PENDING_IRQ_AFTER_IRET:
     2221            rc = emR3RawExecuteInstruction(pVM, "EMUL: ", VINF_PATM_PENDING_IRQ_AFTER_IRET);
    22172222            break;
    22182223
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