mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 10:39:39 +02:00
* revert last commit
This commit is contained in:
parent
ecfbbdfc00
commit
46dbff9c93
@ -350,51 +350,43 @@ unit cpupara;
|
|||||||
hp.paraloc[side].size:=paracgsize;
|
hp.paraloc[side].size:=paracgsize;
|
||||||
hp.paraloc[side].intsize:=paralen;
|
hp.paraloc[side].intsize:=paralen;
|
||||||
hp.paraloc[side].Alignment:=paraalign;
|
hp.paraloc[side].Alignment:=paraalign;
|
||||||
if paralen>0 then
|
{ Copy to stack? }
|
||||||
|
if paracgsize=OS_NO then
|
||||||
begin
|
begin
|
||||||
{ Copy to stack? }
|
paraloc:=hp.paraloc[side].add_location;
|
||||||
if paracgsize=OS_NO then
|
paraloc^.loc:=LOC_REFERENCE;
|
||||||
|
paraloc^.size:=paracgsize;
|
||||||
|
if side=callerside then
|
||||||
|
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
||||||
|
else
|
||||||
|
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
||||||
|
varalign:=used_align(size_2_align(paralen),paraalign,paraalign);
|
||||||
|
paraloc^.reference.offset:=parasize;
|
||||||
|
parasize:=align(parasize+paralen,varalign);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if paralen=0 then
|
||||||
|
internalerror(200501163);
|
||||||
|
while (paralen>0) do
|
||||||
begin
|
begin
|
||||||
|
{ We can allocate at maximum 32 bits per location }
|
||||||
|
if paralen>sizeof(aint) then
|
||||||
|
l:=sizeof(aint)
|
||||||
|
else
|
||||||
|
l:=paralen;
|
||||||
paraloc:=hp.paraloc[side].add_location;
|
paraloc:=hp.paraloc[side].add_location;
|
||||||
paraloc^.loc:=LOC_REFERENCE;
|
paraloc^.loc:=LOC_REFERENCE;
|
||||||
paraloc^.size:=paracgsize;
|
paraloc^.size:=int_cgsize(l);
|
||||||
if side=callerside then
|
if side=callerside then
|
||||||
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
||||||
else
|
else
|
||||||
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
||||||
varalign:=used_align(size_2_align(paralen),paraalign,paraalign);
|
varalign:=used_align(size_2_align(l),paraalign,paraalign);
|
||||||
paraloc^.reference.offset:=parasize;
|
paraloc^.reference.offset:=parasize;
|
||||||
parasize:=align(parasize+paralen,varalign);
|
parasize:=align(parasize+l,varalign);
|
||||||
end
|
dec(paralen,l);
|
||||||
else
|
|
||||||
begin
|
|
||||||
if paralen=0 then
|
|
||||||
internalerror(200501163);
|
|
||||||
while (paralen>0) do
|
|
||||||
begin
|
|
||||||
{ We can allocate at maximum 32 bits per location }
|
|
||||||
if paralen>sizeof(aint) then
|
|
||||||
l:=sizeof(aint)
|
|
||||||
else
|
|
||||||
l:=paralen;
|
|
||||||
paraloc:=hp.paraloc[side].add_location;
|
|
||||||
paraloc^.loc:=LOC_REFERENCE;
|
|
||||||
paraloc^.size:=int_cgsize(l);
|
|
||||||
if side=callerside then
|
|
||||||
paraloc^.reference.index:=NR_STACK_POINTER_REG
|
|
||||||
else
|
|
||||||
paraloc^.reference.index:=NR_FRAME_POINTER_REG;
|
|
||||||
varalign:=used_align(size_2_align(l),paraalign,paraalign);
|
|
||||||
paraloc^.reference.offset:=parasize;
|
|
||||||
parasize:=align(parasize+l,varalign);
|
|
||||||
dec(paralen,l);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
paraloc:=hp.paraloc[side].add_location;
|
|
||||||
paraloc^.loc:=LOC_VOID;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{ Adapt offsets for left-to-right calling }
|
{ Adapt offsets for left-to-right calling }
|
||||||
@ -610,8 +602,8 @@ begin
|
|||||||
end.
|
end.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.63 2005-01-29 11:36:52 peter
|
Revision 1.64 2005-01-30 11:03:22 peter
|
||||||
* update x86_64 with new cpupara
|
* revert last commit
|
||||||
|
|
||||||
Revision 1.62 2005/01/18 22:19:20 peter
|
Revision 1.62 2005/01/18 22:19:20 peter
|
||||||
* multiple location support for i386 a_param_ref
|
* multiple location support for i386 a_param_ref
|
||||||
|
Loading…
Reference in New Issue
Block a user