mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 20:59:42 +02:00
+ added a Z80-specific override for tcgz80.a_loadfpu_ref_cgpara, to support returning single results
in registers git-svn-id: branches/z80@45024 -
This commit is contained in:
parent
5c6fadada8
commit
89b8bd3848
@ -58,6 +58,8 @@ unit cgcpu;
|
||||
procedure a_loadaddr_ref_cgpara(list : TAsmList;const r : treference;const paraloc : TCGPara);override;
|
||||
procedure a_load_reg_cgpara(list : TAsmList; size : tcgsize;r : tregister; const cgpara : tcgpara);override;
|
||||
|
||||
procedure a_loadfpu_ref_cgpara(list : TAsmList;size : tcgsize;const ref : treference;const cgpara : TCGPara);override;
|
||||
|
||||
procedure a_call_name(list : TAsmList;const s : string; weak: boolean);override;
|
||||
procedure a_call_reg(list : TAsmList;reg: tregister);override;
|
||||
|
||||
@ -364,6 +366,42 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgz80.a_loadfpu_ref_cgpara(list: TAsmList; size: tcgsize; const ref: treference; const cgpara: TCGPara);
|
||||
var
|
||||
href: treference;
|
||||
curloc: PCGParaLocation;
|
||||
i: Integer;
|
||||
begin
|
||||
case cgpara.location^.loc of
|
||||
LOC_REGISTER,LOC_CREGISTER:
|
||||
begin
|
||||
case size of
|
||||
OS_F32:
|
||||
begin
|
||||
curloc:=cgpara.location;
|
||||
href:=ref;
|
||||
for i:=1 to 4 do
|
||||
begin
|
||||
if not assigned(curloc) then
|
||||
internalerror(2020042303);
|
||||
if not (curloc^.Loc in [LOC_REGISTER,LOC_CREGISTER]) then
|
||||
internalerror(2020042304);
|
||||
a_load_ref_reg(list,OS_8,OS_8,href,curloc^.register);
|
||||
curloc:=curloc^.Next;
|
||||
end;
|
||||
if assigned(curloc) then
|
||||
internalerror(2020042305);
|
||||
end;
|
||||
else
|
||||
internalerror(2020042302);
|
||||
end;
|
||||
end;
|
||||
else
|
||||
inherited;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure tcgz80.a_load_const_cgpara(list : TAsmList;size : tcgsize;a : tcgint;const paraloc : TCGPara);
|
||||
var
|
||||
i : longint;
|
||||
|
Loading…
Reference in New Issue
Block a user