mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 20:49:49 +02:00
* fixed compilation after addition of support for weak symbols
git-svn-id: trunk@12716 -
This commit is contained in:
parent
9b790edd4f
commit
a4cc881693
@ -48,7 +48,7 @@ unit cgcpu;
|
||||
procedure a_param_ref(list : TAsmList;size : tcgsize;const r : treference;const cgpara : tcgpara);override;
|
||||
procedure a_paramaddr_ref(list : TAsmList;const r : treference;const cgpara : tcgpara);override;
|
||||
|
||||
procedure a_call_name(list : TAsmList;const s : string);override;
|
||||
procedure a_call_name(list : TAsmList;const s : string; weak: boolean);override;
|
||||
procedure a_call_reg(list : TAsmList;reg : tregister);override;
|
||||
|
||||
procedure a_load_const_reg(list : TAsmList;size : tcgsize;a : aint;register : tregister);override;
|
||||
@ -451,9 +451,15 @@ unit cgcpu;
|
||||
|
||||
|
||||
|
||||
procedure tcg68k.a_call_name(list : TAsmList;const s : string);
|
||||
|
||||
procedure tcg68k.a_call_name(list : TAsmList;const s : string; weak: boolean);
|
||||
var
|
||||
sym: tasmsymbol;
|
||||
begin
|
||||
if not(weak) then
|
||||
sym:=current_asmdata.RefAsmSymbol(s)
|
||||
else
|
||||
sym:=current_asmdata.WeakRefAsmSymbol(s);
|
||||
|
||||
list.concat(taicpu.op_sym(A_JSR,S_NO,current_asmdata.RefAsmSymbol(s)));
|
||||
end;
|
||||
|
||||
@ -709,7 +715,7 @@ unit cgcpu;
|
||||
cg.getcpuregister(list,NR_D1);
|
||||
list.concat(taicpu.op_const_reg(A_MOVE,S_L,a, r));
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg, r2));
|
||||
cg.a_call_name(list,'FPC_MUL_LONGINT');
|
||||
cg.a_call_name(list,'FPC_MUL_LONGINT',false);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,r, reg));
|
||||
cg.ungetcpuregister(list,r);
|
||||
cg.ungetcpuregister(list,r2);
|
||||
@ -738,7 +744,7 @@ unit cgcpu;
|
||||
cg.getcpuregister(list,NR_D1);
|
||||
list.concat(taicpu.op_const_reg(A_MOVE,S_L,a, r));
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg, r2));
|
||||
cg.a_call_name(list,'FPC_MUL_LONGWORD');
|
||||
cg.a_call_name(list,'FPC_MUL_LONGWORD',false);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,r, reg));
|
||||
cg.ungetcpuregister(list,r);
|
||||
cg.ungetcpuregister(list,r2);
|
||||
@ -921,7 +927,7 @@ unit cgcpu;
|
||||
cg.getcpuregister(list,NR_D1);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg1, r));
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg2, r2));
|
||||
cg.a_call_name(list,'FPC_MUL_LONGINT');
|
||||
cg.a_call_name(list,'FPC_MUL_LONGINT',false);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,r, reg2));
|
||||
cg.ungetcpuregister(list,r);
|
||||
cg.ungetcpuregister(list,r2);
|
||||
@ -964,7 +970,7 @@ unit cgcpu;
|
||||
cg.getcpuregister(list,NR_D1);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg1, r));
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,reg2, r2));
|
||||
cg.a_call_name(list,'FPC_MUL_LONGWORD');
|
||||
cg.a_call_name(list,'FPC_MUL_LONGWORD',false);
|
||||
list.concat(taicpu.op_reg_reg(A_MOVE,S_L,r, reg2));
|
||||
cg.ungetcpuregister(list,r);
|
||||
cg.ungetcpuregister(list,r2);
|
||||
@ -1217,10 +1223,10 @@ unit cgcpu;
|
||||
iregister:=getaddressregister(list);
|
||||
jregister:=getaddressregister(list);
|
||||
{ reference for move (An)+,(An)+ }
|
||||
reference_reset(hp1);
|
||||
reference_reset(hp1,source.alignment);
|
||||
hp1.base := iregister; { source register }
|
||||
hp1.direction := dir_inc;
|
||||
reference_reset(hp2);
|
||||
reference_reset(hp2,dest.alignment);
|
||||
hp2.base := jregister;
|
||||
hp2.direction := dir_inc;
|
||||
{ iregister = source }
|
||||
@ -1300,7 +1306,7 @@ unit cgcpu;
|
||||
{$ifdef DEBUG_CHARLIE}
|
||||
// writeln('proc entry, localsize:',localsize);
|
||||
{$endif DEBUG_CHARLIE}
|
||||
|
||||
|
||||
if not nostackframe then
|
||||
begin
|
||||
if localsize<>0 then
|
||||
@ -1308,7 +1314,7 @@ unit cgcpu;
|
||||
{ size can't be negative }
|
||||
if (localsize < 0) then
|
||||
internalerror(2006122601);
|
||||
|
||||
|
||||
{ Not to complicate the code generator too much, and since some }
|
||||
{ of the systems only support this format, the localsize cannot }
|
||||
{ exceed 32K in size. }
|
||||
@ -1320,17 +1326,17 @@ unit cgcpu;
|
||||
else
|
||||
begin
|
||||
list.concat(taicpu.op_reg_const(A_LINK,S_W,NR_FRAME_POINTER_REG,0));
|
||||
(*
|
||||
(*
|
||||
{ FIXME! - Carl's original code uses this method. However,
|
||||
according to the 68060 users manual, a LINK is faster than
|
||||
two moves. So, use a link in #0 case too, for now. I'm not
|
||||
really sure tho', that LINK supports #0 disposition, but i
|
||||
see no reason why it shouldn't support it. (KB) }
|
||||
|
||||
|
||||
{ when localsize = 0, use two moves, instead of link }
|
||||
r:=NR_FRAME_POINTER_REG;
|
||||
rsp:=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));
|
||||
|
@ -154,7 +154,7 @@ implementation
|
||||
// paraloc1.init;
|
||||
// cg.a_param_const(current_asmdata.CurrAsmList,OS_S32,200,paramanager.getintparaloc(pocall_default,1,paraloc1));
|
||||
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR');
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
|
||||
cg.a_label(current_asmdata.CurrAsmList, continuelabel);
|
||||
if signed then
|
||||
current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg(A_DIVS,S_L,denum,num))
|
||||
@ -175,9 +175,9 @@ implementation
|
||||
{ put denum in D1 }
|
||||
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,denum,reg_d1);
|
||||
if signed then
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_DIV_LONGINT')
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_DIV_LONGINT',false)
|
||||
else
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_DIV_CARDINAL');
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_DIV_CARDINAL',false);
|
||||
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,reg_d0,denum);
|
||||
cg.ungetcpuregister(current_asmdata.CurrAsmList,reg_d0);
|
||||
cg.ungetcpuregister(current_asmdata.CurrAsmList,reg_d1);
|
||||
@ -200,7 +200,7 @@ implementation
|
||||
{ compare against zero, if not zero continue }
|
||||
cg.a_cmp_const_reg_label(current_asmdata.CurrAsmList,OS_S32,OC_NE,0,denum,continuelabel);
|
||||
// cg.a_param_const(current_asmdata.CurrAsmList, OS_S32,200,paramanager.getintparaloc(pocall_default,1));
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR');
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_HANDLEERROR',false);
|
||||
cg.a_label(current_asmdata.CurrAsmList, continuelabel);
|
||||
|
||||
tmpreg:=cg.getintregister(current_asmdata.CurrAsmList,OS_INT);
|
||||
@ -238,9 +238,9 @@ implementation
|
||||
{ put denum in D1 }
|
||||
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,denum,Reg_D1);
|
||||
if signed then
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_MOD_LONGINT')
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_MOD_LONGINT',false)
|
||||
else
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_MOD_CARDINAL');
|
||||
cg.a_call_name(current_asmdata.CurrAsmList,'FPC_MOD_CARDINAL',false);
|
||||
cg.a_load_reg_reg(current_asmdata.CurrAsmList,OS_INT,OS_INT,Reg_D0,denum);
|
||||
cg.ungetcpuregister(current_asmdata.CurrAsmList,Reg_D0);
|
||||
cg.ungetcpuregister(current_asmdata.CurrAsmList,Reg_D1);
|
||||
|
Loading…
Reference in New Issue
Block a user