VirtualBox

忽略:
時間撮記:
2007-6-20 下午01:40:16 (17 年 以前)
作者:
vboxsync
訊息:

return VINF_EM_RAW_EMULATE_INSTR instead of VINF_EM_RESCHEDULE_REM when the emulation of string I/O encounters difficult bits.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp

    r3180 r3184  
    15971597 * @remark Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess)
    15981598 *
    1599  * @returns Strict VBox status code. Informational status codes other than the one documented 
     1599 * @returns Strict VBox status code. Informational status codes other than the one documented
    16001600 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    16011601 * @retval  VINF_SUCCESS                Success.
    1602  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     1602 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    16031603 *                                      status code must be passed on to EM.
    16041604 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     1605 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the read to the REM.
    16051606 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    16061607 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    16251626    if (   (uPrefix & PREFIX_REPNE)
    16261627        || pRegFrame->eflags.Bits.u1DF)
    1627         return VINF_EM_RESCHEDULE_REM;
     1628        return VINF_EM_RAW_EMULATE_INSTR;
    16281629
    16291630    /*
     
    16441645    /* Convert destination address es:edi. */
    16451646    RTGCPTR GCPtrDst;
    1646     int rc = SELMToFlatEx(pVM, pRegFrame->eflags, pRegFrame->es, (RTGCPTR)pRegFrame->edi, &pRegFrame->esHid, 
     1647    int rc = SELMToFlatEx(pVM, pRegFrame->eflags, pRegFrame->es, (RTGCPTR)pRegFrame->edi, &pRegFrame->esHid,
    16471648                          SELMTOFLAT_FLAGS_HYPER | SELMTOFLAT_FLAGS_NO_PL,
    16481649                          &GCPtrDst, NULL);
     
    16501651    {
    16511652        Log(("INS destination address conversion failed -> fallback, rc=%d\n", rc));
    1652         return VINF_EM_RESCHEDULE_REM;
     1653        return VINF_EM_RAW_EMULATE_INSTR;
    16531654    }
    16541655
     
    16611662    {
    16621663        Log(("INS will generate a trap -> fallback, rc=%d\n", rc));
    1663         return VINF_EM_RESCHEDULE_REM;
     1664        return VINF_EM_RAW_EMULATE_INSTR;
    16641665    }
    16651666
     
    17081709 * ES:EDI,DX[,ECX]
    17091710 *
    1710  * @returns Strict VBox status code. Informational status codes other than the one documented 
     1711 * @returns Strict VBox status code. Informational status codes other than the one documented
    17111712 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    17121713 * @retval  VINF_SUCCESS                Success.
    1713  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     1714 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    17141715 *                                      status code must be passed on to EM.
    17151716 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     1717 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the read to the REM.
    17161718 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    17171719 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    17521754 * @remark  Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess)
    17531755 *
    1754  * @returns Strict VBox status code. Informational status codes other than the one documented 
     1756 * @returns Strict VBox status code. Informational status codes other than the one documented
    17551757 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    17561758 * @retval  VINF_SUCCESS                Success.
    1757  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     1759 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    17581760 *                                      status code must be passed on to EM.
    17591761 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     
    17801782    if (   (uPrefix & (PREFIX_SEG | PREFIX_REPNE))
    17811783        || pRegFrame->eflags.Bits.u1DF)
    1782         return VINF_EM_RESCHEDULE_REM;
     1784        return VINF_EM_RAW_EMULATE_INSTR;
    17831785
    17841786    /*
     
    18041806    {
    18051807        Log(("OUTS source address conversion failed -> fallback, rc=%Vrc\n", rc));
    1806         return VINF_EM_RESCHEDULE_REM;
     1808        return VINF_EM_RAW_EMULATE_INSTR;
    18071809    }
    18081810
     
    18141816    {
    18151817        Log(("OUTS will generate a trap -> fallback, rc=%Vrc\n", rc));
    1816         return VINF_EM_RESCHEDULE_REM;
     1818        return VINF_EM_RAW_EMULATE_INSTR;
    18171819    }
    18181820
     
    18651867 * DS:ESI,DX[,ECX]
    18661868 *
    1867  * @returns Strict VBox status code. Informational status codes other than the one documented 
     1869 * @returns Strict VBox status code. Informational status codes other than the one documented
    18681870 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    18691871 * @retval  VINF_SUCCESS                Success.
    1870  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     1872 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    18711873 *                                      status code must be passed on to EM.
    18721874 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     1875 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the write to the REM.
    18731876 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    18741877 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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