* fixed compilation after addition of support for weak symbols

git-svn-id: trunk@12716 -
This commit is contained in:
Jonas Maebe 2009-02-08 10:21:17 +00:00
parent 9b790edd4f
commit a4cc881693
2 changed files with 26 additions and 20 deletions

View File

@ -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 }

View File

@ -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);