mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 18:29:13 +02:00
* fix int64 result passing on armeb
git-svn-id: trunk@10460 -
This commit is contained in:
parent
af8e750f2d
commit
f70c24435d
@ -300,21 +300,9 @@ unit cpubase;
|
|||||||
{ Results are returned in this register (32-bit values) }
|
{ Results are returned in this register (32-bit values) }
|
||||||
NR_FUNCTION_RETURN_REG = NR_R0;
|
NR_FUNCTION_RETURN_REG = NR_R0;
|
||||||
RS_FUNCTION_RETURN_REG = RS_R0;
|
RS_FUNCTION_RETURN_REG = RS_R0;
|
||||||
{ Low part of 64bit return value }
|
|
||||||
NR_FUNCTION_RETURN64_LOW_REG = NR_R0;
|
|
||||||
RS_FUNCTION_RETURN64_LOW_REG = RS_R0;
|
|
||||||
{ High part of 64bit return value }
|
|
||||||
NR_FUNCTION_RETURN64_HIGH_REG = NR_R1;
|
|
||||||
RS_FUNCTION_RETURN64_HIGH_REG = RS_R1;
|
|
||||||
{ The value returned from a function is available in this register }
|
{ The value returned from a function is available in this register }
|
||||||
NR_FUNCTION_RESULT_REG = NR_FUNCTION_RETURN_REG;
|
NR_FUNCTION_RESULT_REG = NR_FUNCTION_RETURN_REG;
|
||||||
RS_FUNCTION_RESULT_REG = RS_FUNCTION_RETURN_REG;
|
RS_FUNCTION_RESULT_REG = RS_FUNCTION_RETURN_REG;
|
||||||
{ The lowh part of 64bit value returned from a function }
|
|
||||||
NR_FUNCTION_RESULT64_LOW_REG = NR_FUNCTION_RETURN64_LOW_REG;
|
|
||||||
RS_FUNCTION_RESULT64_LOW_REG = RS_FUNCTION_RETURN64_LOW_REG;
|
|
||||||
{ The high part of 64bit value returned from a function }
|
|
||||||
NR_FUNCTION_RESULT64_HIGH_REG = NR_FUNCTION_RETURN64_HIGH_REG;
|
|
||||||
RS_FUNCTION_RESULT64_HIGH_REG = RS_FUNCTION_RETURN64_HIGH_REG;
|
|
||||||
|
|
||||||
NR_FPU_RESULT_REG = NR_F0;
|
NR_FPU_RESULT_REG = NR_F0;
|
||||||
|
|
||||||
@ -325,6 +313,13 @@ unit cpubase;
|
|||||||
{ Offset where the parent framepointer is pushed }
|
{ Offset where the parent framepointer is pushed }
|
||||||
PARENT_FRAMEPOINTER_OFFSET = 0;
|
PARENT_FRAMEPOINTER_OFFSET = 0;
|
||||||
|
|
||||||
|
{ Low part of 64bit return value }
|
||||||
|
function NR_FUNCTION_RESULT64_LOW_REG: tregister;
|
||||||
|
function RS_FUNCTION_RESULT64_LOW_REG: shortint;
|
||||||
|
{ High part of 64bit return value }
|
||||||
|
function NR_FUNCTION_RESULT64_HIGH_REG: tregister;
|
||||||
|
function RS_FUNCTION_RESULT64_HIGH_REG: shortint;
|
||||||
|
|
||||||
{*****************************************************************************
|
{*****************************************************************************
|
||||||
GCC /ABI linking information
|
GCC /ABI linking information
|
||||||
*****************************************************************************}
|
*****************************************************************************}
|
||||||
@ -379,7 +374,7 @@ unit cpubase;
|
|||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
rgBase,verbose;
|
systems,rgBase,verbose;
|
||||||
|
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -528,4 +523,38 @@ unit cpubase;
|
|||||||
internalerror(200603251);
|
internalerror(200603251);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ Low part of 64bit return value }
|
||||||
|
function NR_FUNCTION_RESULT64_LOW_REG: tregister;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_little then
|
||||||
|
result:=NR_R0
|
||||||
|
else
|
||||||
|
result:=NR_R1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function RS_FUNCTION_RESULT64_LOW_REG: shortint;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_little then
|
||||||
|
result:=RS_R0
|
||||||
|
else
|
||||||
|
result:=RS_R1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ High part of 64bit return value }
|
||||||
|
function NR_FUNCTION_RESULT64_HIGH_REG: tregister;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_little then
|
||||||
|
result:=NR_R1
|
||||||
|
else
|
||||||
|
result:=NR_R0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function RS_FUNCTION_RESULT64_HIGH_REG: shortint;
|
||||||
|
begin
|
||||||
|
if target_info.endian=endian_little then
|
||||||
|
result:=RS_R1
|
||||||
|
else
|
||||||
|
result:=RS_R1;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user