VirtualBox

Changeset 3184 in vbox for trunk/include/VBox


Ignore:
Timestamp:
Jun 20, 2007 1:40:16 PM (18 years ago)
Author:
vboxsync
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/iom.h

    r3145 r3184  
    4343/**
    4444 * Macro for checking if an I/O or MMIO emulation call succeeded.
    45  * 
    46  * This macro shall only be used with the IOM APIs where it's mentioned 
     45 *
     46 * This macro shall only be used with the IOM APIs where it's mentioned
    4747 * in the return value description. And there is must be used to correctly
    4848 * determin if the call succeeded and things like the EIP needs updating.
    49  * 
    50  * 
     49 *
     50 *
    5151 * @returns Success indicator (true/false).
    52  * 
     52 *
    5353 * @param   rc          The status code. This may be evaluated
    5454 *                      more than once!
    55  * 
     55 *
    5656 * @remark  To avoid making assumptions about the layout of the
    5757 *          VINF_EM_FIRST...VINF_EM_LAST range we're checking
     
    6262 *          VINF_EM_RESCHEDULE_REM status code is the most
    6363 *          frequent status code we'll enounter in this range.
    64  * 
     64 *
    6565 * @todo    Will have to add VINF_EM_DBG_HYPER_BREAKPOINT if the
    6666 *          I/O port and MMIO breakpoints should trigger before
     
    298298 * Reads an I/O port register.
    299299 *
    300  * @returns Strict VBox status code. Informational status codes other than the one documented 
    301  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    302  * @retval  VINF_SUCCESS                Success.
    303  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     300 * @returns Strict VBox status code. Informational status codes other than the one documented
     301 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     302 * @retval  VINF_SUCCESS                Success.
     303 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    304304 *                                      status code must be passed on to EM.
    305305 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     
    315315 * Writes to an I/O port register.
    316316 *
    317  * @returns Strict VBox status code. Informational status codes other than the one documented 
    318  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    319  * @retval  VINF_SUCCESS                Success.
    320  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     317 * @returns Strict VBox status code. Informational status codes other than the one documented
     318 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     319 * @retval  VINF_SUCCESS                Success.
     320 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    321321 *                                      status code must be passed on to EM.
    322322 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     
    332332 * OUT <DX|imm16>, <AL|AX|EAX>
    333333 *
    334  * @returns Strict VBox status code. Informational status codes other than the one documented 
    335  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    336  * @retval  VINF_SUCCESS                Success.
    337  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     334 * @returns Strict VBox status code. Informational status codes other than the one documented
     335 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     336 * @retval  VINF_SUCCESS                Success.
     337 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    338338 *                                      status code must be passed on to EM.
    339339 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     
    351351 * IN <AL|AX|EAX>, <DX|imm16>
    352352 *
    353  * @returns Strict VBox status code. Informational status codes other than the one documented 
    354  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    355  * @retval  VINF_SUCCESS                Success.
    356  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     353 * @returns Strict VBox status code. Informational status codes other than the one documented
     354 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     355 * @retval  VINF_SUCCESS                Success.
     356 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    357357 *                                      status code must be passed on to EM.
    358358 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     
    371371 * Reads the string buffer of an I/O port register.
    372372 *
    373  * @returns Strict VBox status code. Informational status codes other than the one documented 
    374  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    375  * @retval  VINF_SUCCESS                Success.
    376  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     373 * @returns Strict VBox status code. Informational status codes other than the one documented
     374 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     375 * @retval  VINF_SUCCESS                Success.
     376 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    377377 *                                      status code must be passed on to EM.
    378378 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     
    389389 * Writes the string buffer of an I/O port register.
    390390 *
    391  * @returns Strict VBox status code. Informational status codes other than the one documented 
     391 * @returns Strict VBox status code. Informational status codes other than the one documented
    392392 *          here are to be treated as internal failure.
    393393 * @retval  VINF_SUCCESS                Success.
    394394 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM.
    395395 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
    396  * 
     396 *
    397397 * @param   pVM         VM handle.
    398398 * @param   Port        The port to write.
     
    407407 * ES:EDI,DX[,ECX]
    408408 *
    409  * @returns Strict VBox status code. Informational status codes other than the one documented 
    410  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    411  * @retval  VINF_SUCCESS                Success.
    412  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     409 * @returns Strict VBox status code. Informational status codes other than the one documented
     410 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     411 * @retval  VINF_SUCCESS                Success.
     412 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    413413 *                                      status code must be passed on to EM.
    414414 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     415 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the read to the REM.
    415416 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    416417 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    429430 * @remark Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess)
    430431 *
    431  * @returns Strict VBox status code. Informational status codes other than the one documented
    432  *          here are to be treated as internal failure.
    433  * @retval  VINF_SUCCESS                Success.
    434  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM.
     432 * @returns Strict VBox status code. Informational status codes other than the one documented
     433 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     434 * @retval  VINF_SUCCESS                Success.
     435 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
     436 *                                      status code must be passed on to EM.
    435437 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
     438 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the read to the REM.
    436439 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    437440 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    450453 * DS:ESI,DX[,ECX]
    451454 *
    452  * @returns Strict VBox status code. Informational status codes other than the one documented 
    453  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    454  * @retval  VINF_SUCCESS                Success.
    455  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     455 * @returns Strict VBox status code. Informational status codes other than the one documented
     456 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     457 * @retval  VINF_SUCCESS                Success.
     458 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    456459 *                                      status code must be passed on to EM.
    457460 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     461 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the write to the REM.
    458462 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    459463 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    472476 * @remark  Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess)
    473477 *
    474  * @returns Strict VBox status code. Informational status codes other than the one documented 
    475  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    476  * @retval  VINF_SUCCESS                Success.
    477  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     478 * @returns Strict VBox status code. Informational status codes other than the one documented
     479 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     480 * @retval  VINF_SUCCESS                Success.
     481 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    478482 *                                      status code must be passed on to EM.
    479483 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only)
     484 * @retval  VINF_EM_RAW_EMULATE_INSTR   Defer the write to the REM.
    480485 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr)
    481486 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr)
     
    526531 * level and I/O bitmap.
    527532 *
    528  * @returns Strict VBox status code. Informational status codes other than the one documented 
     533 * @returns Strict VBox status code. Informational status codes other than the one documented
    529534 *          here are to be treated as internal failure.
    530535 * @retval  VINF_SUCCESS                Success.
     
    553558 * trap is a in or out type instruction. (Call it indirectly via EM that is.)
    554559 *
    555  * @returns Strict VBox status code. Informational status codes other than the one documented 
    556  *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
    557  * @retval  VINF_SUCCESS                Success.
    558  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the 
     560 * @returns Strict VBox status code. Informational status codes other than the one documented
     561 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success.
     562 * @retval  VINF_SUCCESS                Success.
     563 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the
    559564 *                                      status code must be passed on to EM.
    560565 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only)
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