Changeset 61211 in vbox
- Timestamp:
- May 26, 2016 2:12:15 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r61142 r61211 793 793 return false; 794 794 } 795 796 /* 797 * Anything having ESP on the left side means stack writes. 798 */ 795 799 if ( ( (pDis->Param1.fUse & DISUSE_REG_GEN32) 796 800 || (pDis->Param1.fUse & DISUSE_REG_GEN64)) … … 798 802 { 799 803 Log4(("pgmPoolMonitorIsReused: ESP\n")); 804 return true; 805 } 806 807 /* 808 * Page table updates are very very unlikely to be crossing page boundraries, 809 * and we don't want to deal with that in pgmPoolMonitorChainChanging and such. 810 */ 811 uint32_t const cbWrite = DISGetParamSize(pDis, &pDis->Param1); 812 if ( (((uintptr_t)pvFault + cbWrite) >> X86_PAGE_SHIFT) != ((uintptr_t)pvFault >> X86_PAGE_SHIFT) ) 813 { 814 Log4(("pgmPoolMonitorIsReused: cross page write\n")); 815 return true; 816 } 817 818 /* 819 * Nobody does an unaligned 8 byte write to a page table, right. 820 */ 821 if (cbWrite >= 8 && ((uintptr_t)pvFault & 7) != 0) 822 { 823 Log4(("pgmPoolMonitorIsReused: Unaligned 8+ byte write\n")); 800 824 return true; 801 825 }
Note:
See TracChangeset
for help on using the changeset viewer.