mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 20:29:18 +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;
|
function get_darwin_call_stub(const s: string; weak: boolean): tasmsymbol;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ tarmcgarm is shared between normal arm and thumb-2 }
|
{ tcgarm is shared between normal arm and thumb-2 }
|
||||||
tarmcgarm = class(tbasecgarm)
|
tcgarm = class(tbasecgarm)
|
||||||
procedure init_register_allocators;override;
|
|
||||||
procedure done_register_allocators;override;
|
|
||||||
|
|
||||||
procedure a_op_const_reg(list : TAsmList; Op: TOpCG; size: TCGSize; a: tcgint; reg: TRegister); override;
|
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;
|
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;
|
procedure a_load_ref_reg(list : TAsmList; fromsize, tosize : tcgsize;const Ref : treference;reg : tregister);override;
|
||||||
end;
|
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)
|
tbasecg64farm = class(tcg64f32)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -149,6 +153,9 @@ unit cgcpu;
|
|||||||
procedure a_loadmm_reg_intreg64(list: TAsmList; mmsize: tcgsize; mmreg: tregister; intreg: tregister64);override;
|
procedure a_loadmm_reg_intreg64(list: TAsmList; mmsize: tcgsize; mmreg: tregister; intreg: tregister64);override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
tarmcg64farm = class(tcg64farm)
|
||||||
|
end;
|
||||||
|
|
||||||
tthumbcgarm = class(tbasecgarm)
|
tthumbcgarm = class(tbasecgarm)
|
||||||
procedure init_register_allocators;override;
|
procedure init_register_allocators;override;
|
||||||
procedure done_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;
|
procedure a_op64_const_reg(list : TAsmList;op:TOpCG;size : tcgsize;value : int64;reg : tregister64);override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
tthumb2cgarm = class(tarmcgarm)
|
tthumb2cgarm = class(tcgarm)
|
||||||
procedure init_register_allocators;override;
|
procedure init_register_allocators;override;
|
||||||
procedure done_register_allocators;override;
|
procedure done_register_allocators;override;
|
||||||
|
|
||||||
@ -291,7 +298,7 @@ unit cgcpu;
|
|||||||
end;
|
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
|
var
|
||||||
imm_shift : byte;
|
imm_shift : byte;
|
||||||
l : tasmlabel;
|
l : tasmlabel;
|
||||||
@ -332,7 +339,7 @@ unit cgcpu;
|
|||||||
end;
|
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
|
var
|
||||||
oppostfix:toppostfix;
|
oppostfix:toppostfix;
|
||||||
usedtmpref: treference;
|
usedtmpref: treference;
|
||||||
@ -616,13 +623,13 @@ unit cgcpu;
|
|||||||
end;
|
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
|
begin
|
||||||
a_op_const_reg_reg(list,op,size,a,reg,reg);
|
a_op_const_reg_reg(list,op,size,a,reg,reg);
|
||||||
end;
|
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
|
var
|
||||||
so : tshifterop;
|
so : tshifterop;
|
||||||
begin
|
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,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);
|
size: tcgsize; a: tcgint; src, dst: tregister);
|
||||||
var
|
var
|
||||||
ovloc : tlocation;
|
ovloc : tlocation;
|
||||||
@ -676,7 +683,7 @@ unit cgcpu;
|
|||||||
end;
|
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);
|
size: tcgsize; src1, src2, dst: tregister);
|
||||||
var
|
var
|
||||||
ovloc : tlocation;
|
ovloc : tlocation;
|
||||||
@ -814,7 +821,7 @@ unit cgcpu;
|
|||||||
end;
|
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
|
var
|
||||||
shift : byte;
|
shift : byte;
|
||||||
tmpreg : tregister;
|
tmpreg : tregister;
|
||||||
@ -962,7 +969,7 @@ unit cgcpu;
|
|||||||
end;
|
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
|
var
|
||||||
so : tshifterop;
|
so : tshifterop;
|
||||||
tmpreg,overflowreg : tregister;
|
tmpreg,overflowreg : tregister;
|
||||||
@ -4923,7 +4930,7 @@ unit cgcpu;
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
cg:=tarmcgarm.create;
|
cg:=tarmcgarm.create;
|
||||||
cg64:=tcg64farm.create;
|
cg64:=tarmcg64farm.create;
|
||||||
|
|
||||||
casmoptimizer:=TCpuAsmOptimizer;
|
casmoptimizer:=TCpuAsmOptimizer;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user