diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index 5204ed87ca..9ec548cc02 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -267,12 +267,12 @@ target_ulong helper_mulshiu(CPUMIPSState *env, target_ulong arg1,
 
 static inline target_ulong bitswap(target_ulong v)
 {
-    v = ((v >> 1) & (target_ulong)0x5555555555555555) |
-              ((v & (target_ulong)0x5555555555555555) << 1);
-    v = ((v >> 2) & (target_ulong)0x3333333333333333) |
-              ((v & (target_ulong)0x3333333333333333) << 2);
-    v = ((v >> 4) & (target_ulong)0x0F0F0F0F0F0F0F0F) |
-              ((v & (target_ulong)0x0F0F0F0F0F0F0F0F) << 4);
+    v = ((v >> 1) & (target_ulong)0x5555555555555555ULL) |
+              ((v & (target_ulong)0x5555555555555555ULL) << 1);
+    v = ((v >> 2) & (target_ulong)0x3333333333333333ULL) |
+              ((v & (target_ulong)0x3333333333333333ULL) << 2);
+    v = ((v >> 4) & (target_ulong)0x0F0F0F0F0F0F0F0FULL) |
+              ((v & (target_ulong)0x0F0F0F0F0F0F0F0FULL) << 4);
     return v;
 }