[FAST486]

Properly check the limit for "expand down" segments.


svn path=/trunk/; revision=67528
This commit is contained in:
Aleksandar Andrejevic 2015-05-03 03:37:06 +00:00
parent 3da5321a16
commit 923efbbc4e

View file

@ -47,11 +47,23 @@ Fast486ReadMemory(PFAST486_STATE State,
/* Get the cached descriptor */
CachedDescriptor = &State->SegmentRegs[SegmentReg];
if ((Offset + Size - 1) > CachedDescriptor->Limit)
if (InstFetch || !CachedDescriptor->DirConf)
{
/* Read beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
if ((Offset + Size - 1) > CachedDescriptor->Limit)
{
/* Read beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
}
}
else
{
if (Offset < CachedDescriptor->Limit)
{
/* Read beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
}
}
/* Check for protected mode */
@ -157,11 +169,23 @@ Fast486WriteMemory(PFAST486_STATE State,
/* Get the cached descriptor */
CachedDescriptor = &State->SegmentRegs[SegmentReg];
if ((Offset + Size - 1) > CachedDescriptor->Limit)
if (!CachedDescriptor->DirConf)
{
/* Write beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
if ((Offset + Size - 1) > CachedDescriptor->Limit)
{
/* Write beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
}
}
else
{
if (Offset < CachedDescriptor->Limit)
{
/* Read beyond limit */
Fast486Exception(State, FAST486_EXCEPTION_GP);
return FALSE;
}
}
/* Check for protected mode */