diff --git a/lib/armeabi.c b/lib/armeabi.c
index 616b9b53..bf5e07a8 100644
--- a/lib/armeabi.c
+++ b/lib/armeabi.c
@@ -175,7 +175,7 @@ unsigned __aeabi_ ## name(unsigned long long v)                         \
     double_unsigned_struct val;                                         \
                                                                         \
     /* fraction in negative float is encoded in 1's complement */       \
-    if (with_sign && (v & (1 << 63))) {                                 \
+    if (with_sign && (v & (1ULL << 63))) {                              \
         sign = 1;                                                       \
         v = ~v + 1;                                                     \
     }                                                                   \
@@ -216,7 +216,7 @@ unsigned __aeabi_ ## name(unsigned long long v)                         \
 DEFINE__AEABI_XL2F(ul2f, 0)
 
 /* long long to float conversion */
-DEFINE__AEABI_XL2F(l2f, 0)
+DEFINE__AEABI_XL2F(l2f, 1)
 
 /* long long to double conversion */
 #define __AEABI_XL2D(name, with_sign)                                   \