mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 17:49:27 +02:00
* fixed compilation
This commit is contained in:
parent
fd8f76519f
commit
e750e24f3b
@ -66,6 +66,7 @@ unit cgcpu;
|
||||
procedure g_restore_frame_pointer(list : taasmoutput);override;
|
||||
procedure g_return_from_proc(list : taasmoutput;parasize : aword);override;
|
||||
procedure g_restore_standard_registers(list:Taasmoutput);override;
|
||||
procedure g_save_standard_registers(list:Taasmoutput);override;
|
||||
procedure g_save_all_registers(list : taasmoutput);override;
|
||||
procedure g_restore_all_registers(list : taasmoutput;const funcretparaloc:tparalocation);override;
|
||||
protected
|
||||
@ -105,7 +106,7 @@ unit cgcpu;
|
||||
|
||||
uses
|
||||
globtype,globals,verbose,systems,cutils,
|
||||
symdef,symsym,defutil,paramgr,
|
||||
symdef,symsym,defutil,paramgr,procinfo,
|
||||
rgobj,tgobj,rgcpu,
|
||||
cgutils;
|
||||
|
||||
@ -986,7 +987,7 @@ unit cgcpu;
|
||||
end { endif localsize <> 0 }
|
||||
else
|
||||
begin
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG,0);
|
||||
ref.direction:=dir_dec;
|
||||
list.concat(taicpu.op_reg_ref(A_MOVE,S_L,r,ref));
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,rsp,r));
|
||||
@ -1038,7 +1039,7 @@ unit cgcpu;
|
||||
|
||||
{ save the PC counter (pop it from the stack) }
|
||||
hregister := getaddressregister(list);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG,0);
|
||||
ref.direction:=dir_inc;
|
||||
list.concat(taicpu.op_ref_reg(A_MOVE,S_L,ref,hregister));
|
||||
{ can we do a quick addition ... }
|
||||
@ -1049,7 +1050,7 @@ unit cgcpu;
|
||||
list.concat(taicpu.op_const_reg(A_ADD,S_L,parasize,r));
|
||||
|
||||
{ restore the PC counter (push it on the stack) }
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG,0);
|
||||
ref.direction:=dir_dec;
|
||||
list.concat(taicpu.op_reg_ref(A_MOVE,S_L,hregister,ref));
|
||||
list.concat(taicpu.op_none(A_RTS,S_NO));
|
||||
@ -1060,41 +1061,43 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure Tcg68k.g_save_standard_registers(list:Taasmoutput;usedinproc:Tsupregset);
|
||||
procedure Tcg68k.g_save_standard_registers(list:Taasmoutput);
|
||||
var
|
||||
tosave:Tsupregset;
|
||||
tosave : tcpuregisterset;
|
||||
ref : treference;
|
||||
begin
|
||||
|
||||
tosave:=std_saved_registers;
|
||||
{ only save the registers which are not used and must be saved }
|
||||
tosave:=tosave*usedinproc;
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG);
|
||||
tosave:=tosave*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG,0);
|
||||
ref.direction:=dir_dec;
|
||||
if tosave<>[] then
|
||||
list.concat(taicpu.op_reglist_reg(A_MOVEM,S_L,tosave,r));
|
||||
list.concat(taicpu.op_regset_ref(A_MOVEM,S_L,tosave,ref));
|
||||
end;
|
||||
|
||||
|
||||
procedure Tcg68k.g_restore_standard_registers(list:Taasmoutput;usedinproc:Tsupregset);
|
||||
procedure Tcg68k.g_restore_standard_registers(list:Taasmoutput);
|
||||
var
|
||||
torestore:Tsupregset;
|
||||
torestore : tcpuregisterset;
|
||||
r:Tregister;
|
||||
ref : treference;
|
||||
begin
|
||||
torestore:=std_saved_registers;
|
||||
{ should be intersected with used regs, no ? }
|
||||
torestore:=torestore*usedinproc;
|
||||
reference_reset_base(ref,NR_STACKPOINTER_REG);
|
||||
torestore:=torestore*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
|
||||
reference_reset_base(ref,NR_STACK_POINTER_REG,0);
|
||||
ref.direction:=dir_inc;
|
||||
if torestore<>[] then
|
||||
list.concat(taicpu.op_ref_reglist(A_MOVEM,S_L,ref,torestore));
|
||||
list.concat(taicpu.op_ref_regset(A_MOVEM,S_L,ref,torestore));
|
||||
end;
|
||||
|
||||
|
||||
procedure tcg68k.g_save_all_registers(list : taasmoutput);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure tcg68k.g_restore_all_registers(list : taasmoutput;accused,acchiused:boolean);
|
||||
procedure tcg68k.g_restore_all_registers(list : taasmoutput;const funcretparaloc:tparalocation);
|
||||
begin
|
||||
end;
|
||||
|
||||
@ -1273,7 +1276,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.23 2004-04-18 21:13:59 florian
|
||||
Revision 1.24 2004-04-19 21:15:12 florian
|
||||
* fixed compilation
|
||||
|
||||
Revision 1.23 2004/04/18 21:13:59 florian
|
||||
* more adaptions for m68k
|
||||
|
||||
Revision 1.22 2004/03/02 00:36:33 olle
|
||||
|
Loading…
Reference in New Issue
Block a user