- Timestamp:
- Oct 20, 2008 1:26:44 PM (16 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r13392 r13393 1762 1762 AssertRCReturn(rc, rc); 1763 1763 1764 /* Prefetch it as it's now marked as not present and our trap handler will 1765 * still call the access handler. 1766 */ 1767 rc = PGMPrefetchPage(pVM, (RTGCPTR)GCPhys); 1768 AssertRC(rc); 1769 1764 1770 /* Mark it as writable and present so reads and writes no longer fault. */ 1765 rc = PGMShw SetPage(pVM, (RTGCPTR)GCPhys, PAGE_SIZE,fPageFlags);1771 rc = PGMShwModifyPage(pVM, (RTGCPTR)GCPhys, 1, fPageFlags, ~fPageFlags); 1766 1772 AssertRC(rc); 1767 1773 … … 1806 1812 1807 1813 /* Mark it as not present again to intercept all read and write access. */ 1808 rc = PGMShw SetPage(pVM, (RTGCPTR)GCPhys, PAGE_SIZE, 0);1814 rc = PGMShwModifyPage(pVM, (RTGCPTR)GCPhys, 1, 0, ~(uint64_t)(X86_PTE_RW|X86_PTE_P)); 1809 1815 AssertRC(rc); 1810 1816 -
trunk/src/VBox/VMM/VMMAll/PGMAllHandler.cpp
r13387 r13393 947 947 pPage->HCPhys = pPageRemap->HCPhys; 948 948 949 LogFlow(("PGMHandlerPhysicalPageAlias %VGp -> %VGp - %VHp\n", GCPhysPage, GCPhysPageRemap, pPageRemap->HCPhys)); 949 950 PGM_PAGE_SET_HNDL_PHYS_STATE(pPage, PGM_PAGE_HNDL_PHYS_STATE_DISABLED); 950 951 #ifndef IN_GC -
trunk/src/VBox/VMM/VMMAll/PGMAllShw.h
r13232 r13393 359 359 { 360 360 pPT->a[iPTE].u = (pPT->a[iPTE].u & (fMask | SHW_PTE_PG_MASK)) | (fFlags & ~SHW_PTE_PG_MASK); 361 Assert(pPT->a[iPTE].n.u1Present );361 Assert(pPT->a[iPTE].n.u1Present || !(fMask & X86_PTE_P)); 362 362 # if PGM_SHW_TYPE == PGM_TYPE_EPT 363 363 HWACCMInvalidatePhysPage(pVM, (RTGCPHYS)GCPtr);
Note:
See TracChangeset
for help on using the changeset viewer.