Changeset 6927 in vbox for trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
- Timestamp:
- Feb 12, 2008 8:44:35 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r6913 r6927 93 93 94 94 # if PGM_WITH_PAGING(PGM_GST_TYPE) 95 /* Determine current privilege level */96 uint32_t cpl = CPUMGetGuestCPL(pVM, pRegFrame);97 98 95 # ifdef PGM_SYNC_DIRTY_BIT 99 96 /* … … 345 342 * In case of write access continue to the GC write handler. 346 343 */ 347 if ( (pPage->HCPhys & (MM_RAM_FLAGS_VIRTUAL_WRITE | MM_RAM_FLAGS_VIRTUAL_ALL)) == MM_RAM_FLAGS_VIRTUAL_WRITE /** @todo PAGE FLAGS */344 if ( PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) < PGM_PAGE_HNDL_PHYS_STATE_ALL 348 345 && !(uErr & X86_TRAP_PF_P)) 349 346 { … … 439 436 STAM_COUNTER_INC(&pVM->pgm.s.StatHandlersUnhandled); 440 437 441 if ( !(pPage->HCPhys & (MM_RAM_FLAGS_VIRTUAL_ALL)) /** @todo PAGE FLAGS */ 442 && PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) < PGM_PAGE_HNDL_PHYS_STATE_ALL 438 if ( !PGM_PAGE_HAVE_ACTIVE_ALL_HANDLERS(pPage) 443 439 && !(uErr & X86_TRAP_PF_P)) 444 440 { … … 539 535 540 536 # if PGM_WITH_PAGING(PGM_GST_TYPE) && !defined(IN_RING0) 541 if ( cpl== 0)537 if (CPUMGetGuestCPL(pVM, pRegFrame) == 0) 542 538 { 543 539 uint64_t fPageGst; … … 1128 1124 const RTHCPHYS HCPhys = pPage->HCPhys; /** @todo FLAGS */ 1129 1125 SHWPTE PteDst; 1130 if ( PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) >= PGM_PAGE_HNDL_PHYS_STATE_WRITE 1131 || (HCPhys & (MM_RAM_FLAGS_VIRTUAL_ALL | MM_RAM_FLAGS_VIRTUAL_WRITE))) 1126 if (PGM_PAGE_HAVE_ACTIVE_HANDLERS(pPage)) 1132 1127 { 1133 1128 /** @todo r=bird: Are we actually handling dirty and access bits for pages with access handlers correctly? No. */ 1134 if ( PGM_PAGE_GET_HNDL_PHYS_STATE(pPage) <= PGM_PAGE_HNDL_PHYS_STATE_WRITE 1135 && !(HCPhys & MM_RAM_FLAGS_VIRTUAL_ALL)) 1129 if (!PGM_PAGE_HAVE_ACTIVE_ALL_HANDLERS(pPage)) 1136 1130 PteDst.u = (PteSrc.u & ~(X86_PTE_PAE_PG_MASK | X86_PTE_AVL_MASK | X86_PTE_PAT | X86_PTE_PCD | X86_PTE_PWT | X86_PTE_RW)) 1137 1131 | (HCPhys & X86_PTE_PAE_PG_MASK);
Note:
See TracChangeset
for help on using the changeset viewer.