* fixed passing of float in softfloat mode on the stack

git-svn-id: trunk@978 -
This commit is contained in:
florian 2005-08-29 20:39:35 +00:00
parent d9f6a5a374
commit fea7d1df10

View File

@ -289,7 +289,14 @@ unit cpupara;
else if paracgsize in [OS_64,OS_S64] then
paraloc^.size:=OS_32
else if (loc=LOC_REGISTER) and (paracgsize in [OS_F32,OS_F64,OS_F80]) then
paraloc^.size:=OS_32
case paracgsize of
OS_F32:
paraloc^.size:=OS_32;
OS_F64:
paraloc^.size:=OS_64;
else
internalerror(2005082901);
end
else
paraloc^.size:=paracgsize;
case loc of
@ -304,10 +311,13 @@ unit cpupara;
end
else
begin
{ LOC_REFERENCE covers always the overleft }
paraloc^.loc:=LOC_REFERENCE;
paraloc^.reference.index:=NR_STACK_POINTER_REG;
paraloc^.reference.offset:=stack_offset;
inc(stack_offset,4);
paraloc^.size:=int_cgsize(paralen);
if (side=callerside) then
paraloc^.reference.index:=NR_STACK_POINTER_REG;
inc(stack_offset,align(paralen,4));
paralen:=0;
end;
end;
LOC_FPUREGISTER: