VirtualBox

Ignore:
Timestamp:
May 21, 2015 5:04:14 PM (10 years ago)
Author:
vboxsync
Message:

PGM: Made the virtual handler callbacks return VBOXSTRICTRC and prepared for RC execution.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r55988 r56013  
    719719                    &&  uErr & X86_TRAP_PF_RW)
    720720                {
     721                    VBOXSTRICTRC rcStrict;
    721722#   ifdef IN_RC
    722723                    STAM_PROFILE_START(&pCur->Stat, h);
     
    724725                    void *pvUser = pCur->CTX_SUFF(pvUser);
    725726                    pgmUnlock(pVM);
    726                     rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key,
    727                                                           pvFault - pCur->Core.Key, pvUser);
     727                    rcStrict = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key,
     728                                                                pvFault - pCur->Core.Key, pvUser);
    728729                    pgmLock(pVM);
    729730                    STAM_PROFILE_STOP(&pCur->Stat, h);
    730731#   else
    731732                    AssertFailed();
    732                     rc = VINF_EM_RAW_EMULATE_INSTR; /* can't happen with VMX */
     733                    rcStrict = VINF_EM_RAW_EMULATE_INSTR; /* can't happen with VMX */
    733734#   endif
    734735                    STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZTrap0eHandlersMapping);
    735736                    STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZTrap0eTime2Mapping; });
    736                     return rc;
     737                    return VBOXSTRICTRC_TODO(rcStrict);
    737738                }
    738739
     
    816817                     ||  pCurType->enmKind != PGMVIRTHANDLERKIND_WRITE ) )
    817818            {
     819                VBOXSTRICTRC rcStrict;
    818820#   ifdef IN_RC
    819821                STAM_PROFILE_START(&pCur->Stat, h);
    820822                void *pvUser = pCur->CTX_SUFF(pvUser);
    821823                pgmUnlock(pVM);
    822                 rc = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key,
    823                                                       pvFault - pCur->Core.Key, pvUser);
     824                rcStrict = pCurType->CTX_SUFF(pfnPfHandler)(pVM, pVCpu, uErr, pRegFrame, pvFault, pCur->Core.Key,
     825                                                            pvFault - pCur->Core.Key, pvUser);
    824826                pgmLock(pVM);
    825827                STAM_PROFILE_STOP(&pCur->Stat, h);
    826828#   else
    827                 rc = VINF_EM_RAW_EMULATE_INSTR; /** @todo for VMX */
     829                rcStrict = VINF_EM_RAW_EMULATE_INSTR; /** @todo for VMX */
    828830#   endif
    829831                STAM_STATS({ pVCpu->pgm.s.CTX_SUFF(pStatTrap0eAttribution) = &pVCpu->pgm.s.CTX_SUFF(pStats)->StatRZTrap0eTime2HndVirt; });
    830                 return rc;
     832                return VBOXSTRICTRC_TODO(rcStrict);
    831833            }
    832834        }
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