mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 12:23:29 +00:00
[FAST486]
In rotate operations, the count is always masked with 0x1F, regardless of the operand size. svn path=/branches/ntvdm/; revision=60966
This commit is contained in:
@@ -637,8 +637,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeShld)
|
||||
}
|
||||
|
||||
/* Normalize the count */
|
||||
if (OperandSize) Count &= 0x1F;
|
||||
else Count &= 0x0F;
|
||||
Count &= 0x1F;
|
||||
|
||||
/* Do nothing if the count is zero */
|
||||
if (Count == 0) return TRUE;
|
||||
@@ -840,8 +839,7 @@ FAST486_OPCODE_HANDLER(Fast486ExtOpcodeShrd)
|
||||
}
|
||||
|
||||
/* Normalize the count */
|
||||
if (OperandSize) Count &= 0x1F;
|
||||
else Count &= 0x0F;
|
||||
Count &= 0x1F;
|
||||
|
||||
/* Do nothing if the count is zero */
|
||||
if (Count == 0) return TRUE;
|
||||
|
||||
+6
-10
@@ -163,16 +163,11 @@ Fast486RotateOperation(PFAST486_STATE State,
|
||||
ULONG HighestBit = 1 << (Bits - 1);
|
||||
ULONG Result;
|
||||
|
||||
if ((Operation != 2) && (Operation != 3))
|
||||
{
|
||||
/* Mask the count */
|
||||
Count &= Bits - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* For RCL and RCR, the CF is included in the value */
|
||||
Count %= Bits + 1;
|
||||
}
|
||||
/* Normalize the count */
|
||||
Count &= 0x1F;
|
||||
|
||||
/* If the count is zero, do nothing */
|
||||
if (Count == 0) goto SetFlags;
|
||||
|
||||
/* Check which operation is this */
|
||||
switch (Operation)
|
||||
@@ -275,6 +270,7 @@ Fast486RotateOperation(PFAST486_STATE State,
|
||||
}
|
||||
}
|
||||
|
||||
SetFlags:
|
||||
if (Operation >= 4)
|
||||
{
|
||||
/* Update ZF, SF and PF */
|
||||
|
||||
Reference in New Issue
Block a user