diff --git a/src/core/arm/skyeye_common/vfp/vfp_helper.h b/src/core/arm/skyeye_common/vfp/vfp_helper.h
index 75d860e95..5d1b4e53f 100644
--- a/src/core/arm/skyeye_common/vfp/vfp_helper.h
+++ b/src/core/arm/skyeye_common/vfp/vfp_helper.h
@@ -144,8 +144,8 @@ static inline void mul64to128(u64* resh, u64* resl, u64 n, u64 m)
     u32 nh, nl, mh, ml;
     u64 rh, rma, rmb, rl;
 
-    nl = n;
-    ml = m;
+    nl = static_cast<u32>(n);
+    ml = static_cast<u32>(m);
     rl = (u64)nl * ml;
 
     nh = n >> 32;
diff --git a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
index 1a05ef8c1..d76d37fd4 100644
--- a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
+++ b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp
@@ -661,8 +661,8 @@ static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32
 
         if ((rem + incr) < rem && d < 0xffffffff)
             d += 1;
-        if (d > (0x7fffffff + (vdm.sign != 0))) {
-            d = (0x7fffffff + (vdm.sign != 0));
+        if (d > (0x7fffffffU + (vdm.sign != 0))) {
+            d = (0x7fffffffU + (vdm.sign != 0));
             exceptions |= FPSCR_IOC;
         } else if (rem)
             exceptions |= FPSCR_IXC;