forked from Mirror/Ryujinx
CPU fix for the cases using a Mask with shift = 0
This commit is contained in:
parent
d067b4d5e0
commit
b50bc46888
2 changed files with 9 additions and 2 deletions
|
@ -88,7 +88,14 @@ namespace ChocolArm64.Decoder
|
|||
|
||||
private static long ShlOnes(long Value, int Shift)
|
||||
{
|
||||
return Value << Shift | (long)(ulong.MaxValue >> (64 - Shift));
|
||||
if (Shift != 0)
|
||||
{
|
||||
return Value << Shift | (long)(ulong.MaxValue >> (64 - Shift));
|
||||
}
|
||||
else
|
||||
{
|
||||
return Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -58,7 +58,7 @@ namespace ChocolArm64.Instruction
|
|||
|
||||
int Shift = Op.Imm - (8 << Op.Size);
|
||||
|
||||
ulong Mask = ulong.MaxValue >> (64 - Shift);
|
||||
ulong Mask = Shift != 0 ? ulong.MaxValue >> (64 - Shift) : 0;
|
||||
|
||||
for (int Index = 0; Index < (Bytes >> Op.Size); Index++)
|
||||
{
|
||||
|
|
Reference in a new issue