* fixed a_param64_reg

This commit is contained in:
Jonas Maebe 2003-05-14 19:31:37 +00:00
parent 18ed72101a
commit 6ecd566473

View File

@ -479,16 +479,36 @@ unit cg64f32;
end; end;
procedure tcg64f32.a_param64_reg(list : taasmoutput;reg : tregister64;const locpara : tparalocation); procedure tcg64f32.a_param64_reg(list : taasmoutput;reg : tregister64;const locpara : tparalocation);
var
tmplochi,tmploclo: tparalocation;
begin begin
{$ifdef FPC} tmplochi:=locpara;
{$warning FIX ME} tmploclo:=locpara;
{$endif} if locpara.size=OS_S64 then
cg.a_param_reg(list,OS_32,reg.reghi,locpara); tmplochi.size:=OS_S32
{ the nr+1 needs definitivly a fix FK } else
{ maybe the parameter numbering needs } tmplochi.size:=OS_32;
{ to take care of this on 32 Bit } tmploclo.size:=OS_32;
{ systems FK } case locpara.loc of
cg.a_param_reg(list,OS_32,reg.reglo,locpara); LOC_REGISTER:
tmplochi.register:=tmplochi.registerhigh;
{ !!! i386 doesn't pass proper locations here
so always take a loc_reference, since that's what it uses (JM)
LOC_REFERENCE:
}
else
if target_info.endian=endian_big then
inc(tmploclo.reference.offset,4)
else
inc(tmplochi.reference.offset,4);
{
else
internalerror(2003042702);
}
end;
cg.a_param_reg(list,OS_32,reg.reghi,tmplochi);
cg.a_param_reg(list,OS_32,reg.reglo,tmploclo);
end; end;
@ -577,9 +597,6 @@ unit cg64f32;
procedure tcg64f32.a_param64_loc(list : taasmoutput;const l:tlocation;const locpara : tparalocation); procedure tcg64f32.a_param64_loc(list : taasmoutput;const l:tlocation;const locpara : tparalocation);
begin begin
{$ifdef fpc}
{$warning FIX ME}
{$endif}
case l.loc of case l.loc of
LOC_REGISTER, LOC_REGISTER,
LOC_CREGISTER : LOC_CREGISTER :
@ -881,7 +898,10 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.43 2003-04-27 14:48:09 jonas Revision 1.44 2003-05-14 19:31:37 jonas
* fixed a_param64_reg
Revision 1.43 2003/04/27 14:48:09 jonas
* fixed Florian's quick hack :) * fixed Florian's quick hack :)
* fixed small bug 64bit range checking code * fixed small bug 64bit range checking code