aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog1
-rw-r--r--arm-gen.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/Changelog b/Changelog
index 9a497cf..20814c1 100644
--- a/Changelog
+++ b/Changelog
@@ -65,6 +65,7 @@ Bug fixes:
- fix NaN comparison (Thomas Preud'homme)
- use libtcc for static linking with runtime library (Thomas Preud'homme)
- fix negation of 0.0 and -0.0 values (Thomas Preud'homme)
+- fix integer to double conversion on ARM (Thomas Preud'homme)
version 0.9.26:
diff --git a/arm-gen.c b/arm-gen.c
index 9611dca..c746e91 100644
--- a/arm-gen.c
+++ b/arm-gen.c
@@ -1979,8 +1979,17 @@ ST_FUNC void gen_cvt_itof1(int t)
vpush_global_sym(func_type, func);
vswap();
gfunc_call(1);
+#if defined(TCC_ARM_VFP) && defined(TCC_ARM_EABI)
+ r=get_reg(RC_FLOAT);
+ r2=vfpr(r);
+ o(0xEE000B10|(r2<<16)); /* vmov.32 dr2[0], r0 */
+ o(0xEE201B10|(r2<<16)); /* vmov.32 dr2[1], r1 */
+ vpushi(0);
+ vtop->r=r;
+#else
vpushi(0);
vtop->r=TREG_F0;
+#endif
return;
}
}