mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2026-01-08 09:21:42 +01:00
word alignement modified in g_stack_frame
This commit is contained in:
parent
34dd718c80
commit
a15b375214
@ -838,9 +838,7 @@ stack frame.}
|
||||
{Althogh the SPARC architecture require only word alignment, software
|
||||
convention and the operating system require every stack frame to be double word
|
||||
aligned}
|
||||
if(LocalSize and $00000003)<>0
|
||||
then
|
||||
LocalSize:=(LocalSize and $FFFFFFFC)+4;
|
||||
LocalSize:=(LocalSize+3)and $FFFFFFFC;
|
||||
{Execute the SAVE instruction to get a new register window and get a new stack
|
||||
frame. In the "SAVE %i6,size,%i6" the first %i6 is related to the state before
|
||||
execution of the SAVE instrucion so it is the caller %i6, when the %i6 after
|
||||
@ -1135,7 +1133,10 @@ BEGIN
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.10 2002-10-04 21:57:42 mazen
|
||||
Revision 1.11 2002-10-07 20:33:04 mazen
|
||||
word alignement modified in g_stack_frame
|
||||
|
||||
Revision 1.10 2002/10/04 21:57:42 mazen
|
||||
* register allocation for parameters now done in cpupara, but InternalError(200109223) in cgcpu.pas:1053 is still not fixed du to location_force problem in ncgutils.pas:419
|
||||
|
||||
Revision 1.9 2002/10/02 22:20:28 mazen
|
||||
|
||||
@ -46,25 +46,26 @@ uses
|
||||
globtype,
|
||||
cpuinfo,cginfo,cgbase,
|
||||
defbase;
|
||||
|
||||
function tSparcparamanager.getintparaloc(nr : longint) : tparalocation;
|
||||
|
||||
begin
|
||||
fillchar(result,sizeof(tparalocation),0);
|
||||
if nr<1 then
|
||||
internalerror(2002070801)
|
||||
else if nr<=8 then
|
||||
begin
|
||||
result.loc:=LOC_REGISTER;
|
||||
result.register:=tregister(longint(R_O0)+nr);
|
||||
end
|
||||
else
|
||||
begin
|
||||
result.loc:=LOC_REFERENCE;
|
||||
result.reference.index:=stack_pointer_reg;
|
||||
result.reference.offset:=(nr-8)*4;
|
||||
end;
|
||||
end;
|
||||
function TSparcParaManager.getintparaloc(nr:longint):TParaLocation;
|
||||
begin
|
||||
FillChar(result,SizeOf(TParaLocation),0);
|
||||
with Result do
|
||||
if nr<1
|
||||
then
|
||||
InternalError(2002070801)
|
||||
else if nr<=8
|
||||
then
|
||||
begin
|
||||
loc:=LOC_REGISTER;
|
||||
register:=tregister(longint(R_O0)+nr);
|
||||
end
|
||||
else
|
||||
begin
|
||||
loc:=LOC_REFERENCE;
|
||||
reference.index:=stack_pointer_reg;
|
||||
reference.offset:=(nr-8)*4;
|
||||
end;
|
||||
end;
|
||||
|
||||
function getparaloc(p : tdef) : tloc;
|
||||
|
||||
@ -295,7 +296,10 @@ BEGIN
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.2 2002-10-04 21:57:42 mazen
|
||||
Revision 1.3 2002-10-07 20:33:05 mazen
|
||||
word alignement modified in g_stack_frame
|
||||
|
||||
Revision 1.2 2002/10/04 21:57:42 mazen
|
||||
* register allocation for parameters now done in cpupara, but InternalError(200109223) in cgcpu.pas:1053 is still not fixed du to location_force problem in ncgutils.pas:419
|
||||
|
||||
Revision 1.1 2002/08/21 13:30:07 mazen
|
||||
|
||||
Loading…
Reference in New Issue
Block a user