mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 10:45:08 +02:00
* correctly implement assembly routines for non-i386 (x86_64 did not work correctly either)
git-svn-id: trunk@44954 -
This commit is contained in:
parent
6dc7e28604
commit
aa1c1174e6
@ -1713,6 +1713,7 @@ begin
|
||||
end;
|
||||
|
||||
function Int64ShllMod32(Value: ULONGLONG; ShiftCount: DWORD): ULONGLONG;
|
||||
{$ifdef Win32}
|
||||
asm
|
||||
MOV ECX, ShiftCount
|
||||
MOV EAX, DWORD PTR [Value]
|
||||
@ -1720,8 +1721,14 @@ asm
|
||||
SHLD EDX, EAX, CL
|
||||
SHL EAX, CL
|
||||
end;
|
||||
{$else}
|
||||
begin
|
||||
Result := Value shl ShiftCount;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
function Int64ShraMod32(Value: LONGLONG; ShiftCount: DWORD): LONGLONG;
|
||||
{$ifdef Win32}
|
||||
asm
|
||||
MOV ECX, ShiftCount
|
||||
MOV EAX, DWORD PTR [Value]
|
||||
@ -1729,8 +1736,14 @@ asm
|
||||
SHRD EAX, EDX, CL
|
||||
SAR EDX, CL
|
||||
end;
|
||||
{$else}
|
||||
begin
|
||||
Result := SarInt64(Value, ShiftCount);
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
function Int64ShrlMod32(Value: ULONGLONG; ShiftCount: DWORD): ULONGLONG;
|
||||
{$ifdef Win32}
|
||||
asm
|
||||
MOV ECX, ShiftCount
|
||||
MOV EAX, DWORD PTR [Value]
|
||||
@ -1738,6 +1751,11 @@ asm
|
||||
SHRD EAX, EDX, CL
|
||||
SHR EDX, CL
|
||||
end;
|
||||
{$else}
|
||||
begin
|
||||
Result := Value shr ShiftCount;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
procedure ListEntry32To64(l32: PLIST_ENTRY32; l64: PLIST_ENTRY64);
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user