From: Christian Thalinger Date: Wed, 11 Jun 2008 09:04:39 +0000 (+0200) Subject: Fixes PR63. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=dbb57419b6c5827897adb64111d9586eef1a8758;p=cacao.git Fixes PR63. * src/vm/jit/arm/emit.c (emit_verbosecall_enter) [ENABLE_SOFTFLOAT]: Save and restore floating point types correctly. --- diff --git a/src/vm/jit/arm/emit.c b/src/vm/jit/arm/emit.c index 4caac6dd7..293731cfc 100644 --- a/src/vm/jit/arm/emit.c +++ b/src/vm/jit/arm/emit.c @@ -634,6 +634,19 @@ void emit_verbosecall_enter(jitdata *jd) if (!md->params[i].inmemory) { s = md->params[i].regoff; +#if defined(ENABLE_SOFTFLOAT) + switch (md->paramtypes[i].type) { + case TYPE_INT: + case TYPE_FLT: + case TYPE_ADR: + M_IST(s, REG_SP, i * 8); + break; + case TYPE_LNG: + case TYPE_DBL: + M_LST(s, REG_SP, i * 8); + break; + } +#else switch (md->paramtypes[i].type) { case TYPE_ADR: case TYPE_INT: @@ -649,6 +662,7 @@ void emit_verbosecall_enter(jitdata *jd) M_DST(s, REG_SP, i * 8); break; } +#endif } } @@ -664,6 +678,19 @@ void emit_verbosecall_enter(jitdata *jd) if (!md->params[i].inmemory) { s = md->params[i].regoff; +#if defined(ENABLE_SOFTFLOAT) + switch (md->paramtypes[i].type) { + case TYPE_INT: + case TYPE_FLT: + case TYPE_ADR: + M_ILD(s, REG_SP, i * 8); + break; + case TYPE_LNG: + case TYPE_DBL: + M_LLD(s, REG_SP, i * 8); + break; + } +#else switch (md->paramtypes[i].type) { case TYPE_ADR: case TYPE_INT: @@ -679,6 +706,7 @@ void emit_verbosecall_enter(jitdata *jd) M_DLD(s, REG_SP, i * 8); break; } +#endif } }