diff --git a/Makefile b/Makefile index 02d3625..d5e10c8 100644 --- a/Makefile +++ b/Makefile @@ -164,6 +164,12 @@ x86_64-win32_FILES = $(x86_64_FILES) tccpe.c x86_64-osx_FILES = $(x86_64_FILES) arm_FILES = $(CORE_FILES) arm-gen.c arm-link.c arm-asm.c arm-wince_FILES = $(arm_FILES) tccpe.c +arm-eabihf_FILES = $(arm_FILES) +arm-fpa_FILES = $(arm_FILES) +arm-fpa-ld_FILES = $(arm_FILES) +arm-vfp_FILES = $(arm_FILES) +arm-eabi_FILES = $(arm_FILES) +arm-eabihf_FILES = $(arm_FILES) arm64_FILES = $(CORE_FILES) arm64-gen.c arm64-link.c c67_FILES = $(CORE_FILES) c67-gen.c c67-link.c tcccoff.c diff --git a/arm-gen.c b/arm-gen.c index c5de065..e766ce4 100644 --- a/arm-gen.c +++ b/arm-gen.c @@ -1141,7 +1141,7 @@ again: /* XXX: implicit cast ? */ size=4; if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) { - lexpand_nr(); + lexpand(); size = 8; r = gv(RC_INT); o(0xE52D0004|(intr(r)<<12)); /* push r */ @@ -1165,7 +1165,7 @@ again: case CORE_CLASS: if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) { - lexpand_nr(); + lexpand(); gv(regmask(pplan->end)); pplan->sval->r2 = vtop->r; vtop--; diff --git a/tcc.h b/tcc.h index cc85291..165249f 100644 --- a/tcc.h +++ b/tcc.h @@ -1321,9 +1321,11 @@ ST_FUNC void vpush_global_sym(CType *type, int v); ST_FUNC void vrote(SValue *e, int n); ST_FUNC void vrott(int n); ST_FUNC void vrotb(int n); +#if PTR_SIZE == 4 +ST_FUNC void lexpand(void); +#endif #ifdef TCC_TARGET_ARM ST_FUNC int get_reg_ex(int rc, int rc2); -ST_FUNC void lexpand_nr(void); #endif ST_FUNC void vpushv(SValue *v); ST_FUNC void save_reg(int r); diff --git a/tccgen.c b/tccgen.c index 9f671e0..9b3749d 100644 --- a/tccgen.c +++ b/tccgen.c @@ -1521,7 +1521,7 @@ static int reg_fret(int t) #if PTR_SIZE == 4 /* expand 64bit on stack in two ints */ -static void lexpand(void) +ST_FUNC void lexpand(void) { int u, v; u = vtop->type.t & (VT_DEFSIGN | VT_UNSIGNED); @@ -1542,34 +1542,6 @@ static void lexpand(void) } #endif -#ifdef TCC_TARGET_ARM -/* expand long long on stack */ -ST_FUNC void lexpand_nr(void) -{ - int u,v; - - u = vtop->type.t & (VT_DEFSIGN | VT_UNSIGNED); - vdup(); - vtop->r2 = VT_CONST; - vtop->type.t = VT_INT | u; - v=vtop[-1].r & (VT_VALMASK | VT_LVAL); - if (v == VT_CONST) { - vtop[-1].c.i = vtop->c.i; - vtop->c.i = vtop->c.i >> 32; - vtop->r = VT_CONST; - } else if (v == (VT_LVAL|VT_CONST) || v == (VT_LVAL|VT_LOCAL)) { - vtop->c.i += 4; - vtop->r = vtop[-1].r; - } else if (v > VT_CONST) { - vtop--; - lexpand(); - } else - vtop->r = vtop[-1].r2; - vtop[-1].r2 = VT_CONST; - vtop[-1].type.t = VT_INT | u; -} -#endif - #if PTR_SIZE == 4 /* build a long long from two ints */ static void lbuild(int t)