mirror of
https://github.com/mirror/tinycc.git
synced 2024-12-28 04:00:06 +08:00
Insert arm-xxx_FILES into Makefile to suport CROSS_TARGET and Remove duplicate function lexpand_nr
This commit is contained in:
parent
7369cfc490
commit
0c313f491b
6
Makefile
6
Makefile
@ -164,6 +164,12 @@ x86_64-win32_FILES = $(x86_64_FILES) tccpe.c
|
|||||||
x86_64-osx_FILES = $(x86_64_FILES)
|
x86_64-osx_FILES = $(x86_64_FILES)
|
||||||
arm_FILES = $(CORE_FILES) arm-gen.c arm-link.c arm-asm.c
|
arm_FILES = $(CORE_FILES) arm-gen.c arm-link.c arm-asm.c
|
||||||
arm-wince_FILES = $(arm_FILES) tccpe.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
|
arm64_FILES = $(CORE_FILES) arm64-gen.c arm64-link.c
|
||||||
c67_FILES = $(CORE_FILES) c67-gen.c c67-link.c tcccoff.c
|
c67_FILES = $(CORE_FILES) c67-gen.c c67-link.c tcccoff.c
|
||||||
|
|
||||||
|
@ -1141,7 +1141,7 @@ again:
|
|||||||
/* XXX: implicit cast ? */
|
/* XXX: implicit cast ? */
|
||||||
size=4;
|
size=4;
|
||||||
if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) {
|
if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) {
|
||||||
lexpand_nr();
|
lexpand();
|
||||||
size = 8;
|
size = 8;
|
||||||
r = gv(RC_INT);
|
r = gv(RC_INT);
|
||||||
o(0xE52D0004|(intr(r)<<12)); /* push r */
|
o(0xE52D0004|(intr(r)<<12)); /* push r */
|
||||||
@ -1165,7 +1165,7 @@ again:
|
|||||||
|
|
||||||
case CORE_CLASS:
|
case CORE_CLASS:
|
||||||
if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) {
|
if ((pplan->sval->type.t & VT_BTYPE) == VT_LLONG) {
|
||||||
lexpand_nr();
|
lexpand();
|
||||||
gv(regmask(pplan->end));
|
gv(regmask(pplan->end));
|
||||||
pplan->sval->r2 = vtop->r;
|
pplan->sval->r2 = vtop->r;
|
||||||
vtop--;
|
vtop--;
|
||||||
|
4
tcc.h
4
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 vrote(SValue *e, int n);
|
||||||
ST_FUNC void vrott(int n);
|
ST_FUNC void vrott(int n);
|
||||||
ST_FUNC void vrotb(int n);
|
ST_FUNC void vrotb(int n);
|
||||||
|
#if PTR_SIZE == 4
|
||||||
|
ST_FUNC void lexpand(void);
|
||||||
|
#endif
|
||||||
#ifdef TCC_TARGET_ARM
|
#ifdef TCC_TARGET_ARM
|
||||||
ST_FUNC int get_reg_ex(int rc, int rc2);
|
ST_FUNC int get_reg_ex(int rc, int rc2);
|
||||||
ST_FUNC void lexpand_nr(void);
|
|
||||||
#endif
|
#endif
|
||||||
ST_FUNC void vpushv(SValue *v);
|
ST_FUNC void vpushv(SValue *v);
|
||||||
ST_FUNC void save_reg(int r);
|
ST_FUNC void save_reg(int r);
|
||||||
|
30
tccgen.c
30
tccgen.c
@ -1521,7 +1521,7 @@ static int reg_fret(int t)
|
|||||||
|
|
||||||
#if PTR_SIZE == 4
|
#if PTR_SIZE == 4
|
||||||
/* expand 64bit on stack in two ints */
|
/* expand 64bit on stack in two ints */
|
||||||
static void lexpand(void)
|
ST_FUNC void lexpand(void)
|
||||||
{
|
{
|
||||||
int u, v;
|
int u, v;
|
||||||
u = vtop->type.t & (VT_DEFSIGN | VT_UNSIGNED);
|
u = vtop->type.t & (VT_DEFSIGN | VT_UNSIGNED);
|
||||||
@ -1542,34 +1542,6 @@ static void lexpand(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#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
|
#if PTR_SIZE == 4
|
||||||
/* build a long long from two ints */
|
/* build a long long from two ints */
|
||||||
static void lbuild(int t)
|
static void lbuild(int t)
|
||||||
|
Loading…
Reference in New Issue
Block a user