Author: aandrejevic Date: Wed Nov 5 20:21:32 2014 New Revision: 65272 URL: http://svn.reactos.org/svn/reactos?rev=65272&view=rev Log: [FAST486] Make sure the corrected prefetch address contains the block we're trying to read.
Modified: trunk/reactos/lib/fast486/common.c Modified: trunk/reactos/lib/fast486/common.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/fast486/common.c?rev=65272&r1=65271&r2=65272&view=diff ============================================================================== --- trunk/reactos/lib/fast486/common.c [iso-8859-1] (original) +++ trunk/reactos/lib/fast486/common.c [iso-8859-1] Wed Nov 5 20:21:32 2014 @@ -106,6 +106,13 @@ /* We mustn't prefetch across a page boundary */ State->PrefetchAddress = PAGE_ALIGN(State->PrefetchAddress) | (FAST486_PAGE_SIZE - FAST486_CACHE_SIZE); + + if ((LinearAddress - State->PrefetchAddress + Size) >= FAST486_CACHE_SIZE) + { + /* We can't prefetch without possibly violating page permissions */ + State->PrefetchValid = FALSE; + return Fast486ReadLinearMemory(State, LinearAddress, Buffer, Size); + } } /* Prefetch */