From feb41aa7a8cc033128814c3f98dd2a070e6a29c5 Mon Sep 17 00:00:00 2001 From: twisti Date: Tue, 13 Feb 2007 23:14:35 +0000 Subject: [PATCH] * src/vm/jit/arm/codegen.c (createnativestub) [!__ARM_EABI__]: #ifdef'ed split-stuff. * src/vm/jit/arm/md-abi.c (md_param_alloc_native) [!__ARM_EABI__]: Added GNU EABI stuff. --- src/vm/jit/arm/codegen.c | 10 +++++++++- src/vm/jit/arm/md-abi.c | 11 +++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/vm/jit/arm/codegen.c b/src/vm/jit/arm/codegen.c index 7e7d72cda..3e803686a 100644 --- a/src/vm/jit/arm/codegen.c +++ b/src/vm/jit/arm/codegen.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: codegen.c 7276 2007-02-02 11:58:18Z michi $ + $Id: codegen.c 7353 2007-02-13 23:14:35Z twisti $ */ @@ -2963,21 +2963,29 @@ u1 *createnativestub(functionptr f, jitdata *jd, methoddesc *nmd) if (!nmd->params[j].inmemory) { s2 = ARGUMENT_REGS(t, nmd->params[j].regoff); + +#if !defined(__ARM_EABI__) SPLIT_OPEN(t, s1, REG_ITMP1); SPLIT_LOAD(t, s1, cd->stackframesize); SPLIT_OPEN(t, s2, REG_ITMP1); +#endif if (IS_2_WORD_TYPE(t)) M_LNGMOVE(s1, s2); else M_INTMOVE(s1, s2); +#if !defined(__ARM_EABI__) SPLIT_STORE_AND_CLOSE(t, s2, 0); +#endif } else { s2 = nmd->params[j].regoff; + +#if !defined(__ARM_EABI__) SPLIT_OPEN(t, s1, REG_ITMP1); SPLIT_LOAD(t, s1, cd->stackframesize); +#endif if (IS_2_WORD_TYPE(t)) M_LST(s1, REG_SP, s2 * 4); diff --git a/src/vm/jit/arm/md-abi.c b/src/vm/jit/arm/md-abi.c index 091f0b02e..49d6dc906 100644 --- a/src/vm/jit/arm/md-abi.c +++ b/src/vm/jit/arm/md-abi.c @@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - $Id: md-abi.c 7333 2007-02-11 22:17:27Z twisti $ + $Id: md-abi.c 7353 2007-02-13 23:14:35Z twisti $ */ @@ -224,22 +224,25 @@ void md_param_alloc_native(methoddesc *md) #endif reguse += 2; } +#if !defined(__ARM_EABI__) else if (reguse < INT_ARG_CNT) { pd->inmemory = false; -#if defined(__ARMEL__) +# if defined(__ARMEL__) pd->regoff = PACK_REGS(reguse, INT_ARG_CNT); -#else +# else pd->regoff = PACK_REGS(INT_ARG_CNT, reguse); -#endif +# endif reguse++; stacksize++; } +#endif else { #if defined(__ARM_EABI__) ALIGN_2(stacksize); #endif pd->inmemory = true; pd->regoff = stacksize; + reguse = INT_ARG_CNT; stacksize += 2; } break; -- 2.25.1