From 9198630ce3a3960fe0e0eb3cd5ef8943e71533ab Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 3 Mar 2013 21:59:34 +0000 Subject: [PATCH] * fix armv7m compiler git-svn-id: trunk@23686 - --- compiler/arm/cgcpu.pas | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas index 9bcd794700..1ee0ce3e2b 100644 --- a/compiler/arm/cgcpu.pas +++ b/compiler/arm/cgcpu.pas @@ -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;