mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-19 13:59:29 +02:00
* fix armv7m compiler
git-svn-id: trunk@23686 -
This commit is contained in:
parent
90f4d8ddcd
commit
9198630ce3
@ -115,11 +115,8 @@ unit cgcpu;
|
||||
function get_darwin_call_stub(const s: string; weak: boolean): tasmsymbol;
|
||||
end;
|
||||
|
||||
{ tarmcgarm is shared between normal arm and thumb-2 }
|
||||
tarmcgarm = class(tbasecgarm)
|
||||
procedure init_register_allocators;override;
|
||||
procedure done_register_allocators;override;
|
||||
|
||||
{ tcgarm is shared between normal arm and thumb-2 }
|
||||
tcgarm = class(tbasecgarm)
|
||||
procedure a_op_const_reg(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; reg: TRegister); override;
|
||||
procedure a_op_reg_reg(list : TAsmList; Op: TOpCG; size: TCGSize; src, dst: TRegister); override;
|
||||
|
||||
@ -134,6 +131,13 @@ unit cgcpu;
|
||||
procedure a_load_ref_reg(list : TAsmList; fromsize, tosize : tcgsize;const Ref : treference;reg : tregister);override;
|
||||
end;
|
||||
|
||||
{ normal arm cg }
|
||||
tarmcgarm = class(tcgarm)
|
||||
procedure init_register_allocators;override;
|
||||
procedure done_register_allocators;override;
|
||||
end;
|
||||
|
||||
{ 64 bit cg for all arm flavours }
|
||||
tbasecg64farm = class(tcg64f32)
|
||||
end;
|
||||
|
||||
@ -149,6 +153,9 @@ unit cgcpu;
|
||||
procedure a_loadmm_reg_intreg64(list: TAsmList; mmsize: tcgsize; mmreg: tregister; intreg: tregister64);override;
|
||||
end;
|
||||
|
||||
tarmcg64farm = class(tcg64farm)
|
||||
end;
|
||||
|
||||
tthumbcgarm = class(tbasecgarm)
|
||||
procedure init_register_allocators;override;
|
||||
procedure done_register_allocators;override;
|
||||
@ -170,7 +177,7 @@ unit cgcpu;
|
||||
procedure a_op64_const_reg(list : TAsmList;op:TOpCG;size : tcgsize;value : int64;reg : tregister64);override;
|
||||
end;
|
||||
|
||||
tthumb2cgarm = class(tarmcgarm)
|
||||
tthumb2cgarm = class(tcgarm)
|
||||
procedure init_register_allocators;override;
|
||||
procedure done_register_allocators;override;
|
||||
|
||||
@ -291,7 +298,7 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_load_const_reg(list : TAsmList; size: tcgsize; a : tcgint;reg : tregister);
|
||||
procedure tcgarm.a_load_const_reg(list : TAsmList; size: tcgsize; a : tcgint;reg : tregister);
|
||||
var
|
||||
imm_shift : byte;
|
||||
l : tasmlabel;
|
||||
@ -332,7 +339,7 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_load_ref_reg(list : TAsmList; fromsize, tosize : tcgsize;const Ref : treference;reg : tregister);
|
||||
procedure tcgarm.a_load_ref_reg(list : TAsmList; fromsize, tosize : tcgsize;const Ref : treference;reg : tregister);
|
||||
var
|
||||
oppostfix:toppostfix;
|
||||
usedtmpref: treference;
|
||||
@ -616,13 +623,13 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_op_const_reg(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; reg: TRegister);
|
||||
procedure tcgarm.a_op_const_reg(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; reg: TRegister);
|
||||
begin
|
||||
a_op_const_reg_reg(list,op,size,a,reg,reg);
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_op_reg_reg(list : TAsmList; Op: TOpCG; size: TCGSize; src, dst: TRegister);
|
||||
procedure tcgarm.a_op_reg_reg(list : TAsmList; Op: TOpCG; size: TCGSize; src, dst: TRegister);
|
||||
var
|
||||
so : tshifterop;
|
||||
begin
|
||||
@ -667,7 +674,7 @@ unit cgcpu;
|
||||
(PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,
|
||||
PF_None,PF_None,PF_None,PF_None,PF_None,PF_None,PF_None);
|
||||
|
||||
procedure tarmcgarm.a_op_const_reg_reg(list: TAsmList; op: TOpCg;
|
||||
procedure tcgarm.a_op_const_reg_reg(list: TAsmList; op: TOpCg;
|
||||
size: tcgsize; a: tcgint; src, dst: tregister);
|
||||
var
|
||||
ovloc : tlocation;
|
||||
@ -676,7 +683,7 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_op_reg_reg_reg(list: TAsmList; op: TOpCg;
|
||||
procedure tcgarm.a_op_reg_reg_reg(list: TAsmList; op: TOpCg;
|
||||
size: tcgsize; src1, src2, dst: tregister);
|
||||
var
|
||||
ovloc : tlocation;
|
||||
@ -814,7 +821,7 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tcgsize; a: tcgint; src, dst: tregister;setflags : boolean;var ovloc : tlocation);
|
||||
procedure tcgarm.a_op_const_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tcgsize; a: tcgint; src, dst: tregister;setflags : boolean;var ovloc : tlocation);
|
||||
var
|
||||
shift : byte;
|
||||
tmpreg : tregister;
|
||||
@ -962,7 +969,7 @@ unit cgcpu;
|
||||
end;
|
||||
|
||||
|
||||
procedure tarmcgarm.a_op_reg_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tcgsize; src1, src2, dst: tregister;setflags : boolean;var ovloc : tlocation);
|
||||
procedure tcgarm.a_op_reg_reg_reg_checkoverflow(list: TAsmList; op: TOpCg; size: tcgsize; src1, src2, dst: tregister;setflags : boolean;var ovloc : tlocation);
|
||||
var
|
||||
so : tshifterop;
|
||||
tmpreg,overflowreg : tregister;
|
||||
@ -4923,7 +4930,7 @@ unit cgcpu;
|
||||
else
|
||||
begin
|
||||
cg:=tarmcgarm.create;
|
||||
cg64:=tcg64farm.create;
|
||||
cg64:=tarmcg64farm.create;
|
||||
|
||||
casmoptimizer:=TCpuAsmOptimizer;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user