VirtualBox

Changeset 16045 in vbox for trunk/src/VBox/VMM/PGMPhys.cpp


Ignore:
Timestamp:
Jan 19, 2009 4:27:59 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
41737
Message:

PGMR3PhysTlbGCPhys2Ptr: Deal correctly with disabled access handlers. Ref #3399.

File:
1 edited

Legend:

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

    r15885 r16045  
    24632463                /* nothing */;
    24642464#endif
    2465             else if (PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) /* catches MMIO */
    2466                 rc = VERR_PGM_PHYS_TLB_CATCH_ALL;
    2467             else if (fWritable && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
    2468                 rc = VINF_PGM_PHYS_TLB_CATCH_WRITE;
     2465            else if (PGM_PAGE_HAS_ANY_HANDLERS(pPage))
     2466            {
     2467                if (PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage)) /* catches MMIO */
     2468                    rc = VERR_PGM_PHYS_TLB_CATCH_ALL;
     2469                else if (fWritable && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
     2470                    rc = VINF_PGM_PHYS_TLB_CATCH_WRITE;
     2471                else
     2472                {
     2473                    /* Temporariliy disabled phycial handler(s), since the recompiler
     2474                       doesn't get notified when it's reset we'll have to pretend its
     2475                       operating normally. */
     2476                    if (pgmHandlerPhysicalIsAll(pVM, GCPhys))
     2477                        rc = VERR_PGM_PHYS_TLB_CATCH_ALL;
     2478                    else
     2479                        rc = VINF_PGM_PHYS_TLB_CATCH_WRITE;
     2480                }
     2481            }
    24692482            else
    24702483                rc = VINF_SUCCESS;
Note: See TracChangeset for help on using the changeset viewer.

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