diff --git a/compiler/nativeGen/PPC/CodeGen.hs b/compiler/nativeGen/PPC/CodeGen.hs
index 422e1bbf8926654d810c710077cc1e7b8d6b8a00..7815551996c6b623cacbf5ac1e45a325dcea7847 100644
--- a/compiler/nativeGen/PPC/CodeGen.hs
+++ b/compiler/nativeGen/PPC/CodeGen.hs
@@ -320,15 +320,15 @@ iselExpr64 (CmmLit (CmmInt i _)) = do
   (rlo,rhi) <- getNewRegPairNat II32
   let
         half0 = fromIntegral (fromIntegral i :: Word16)
-        half1 = fromIntegral ((fromIntegral i `shiftR` 16) :: Word16)
-        half2 = fromIntegral ((fromIntegral i `shiftR` 32) :: Word16)
-        half3 = fromIntegral ((fromIntegral i `shiftR` 48) :: Word16)
+        half1 = fromIntegral (fromIntegral (i `shiftR` 16) :: Word16)
+        half2 = fromIntegral (fromIntegral (i `shiftR` 32) :: Word16)
+        half3 = fromIntegral (fromIntegral (i `shiftR` 48) :: Word16)
 
         code = toOL [
                 LIS rlo (ImmInt half1),
                 OR rlo rlo (RIImm $ ImmInt half0),
                 LIS rhi (ImmInt half3),
-                OR rlo rlo (RIImm $ ImmInt half2)
+                OR rhi rhi (RIImm $ ImmInt half2)
                 ]
   return (ChildCode64 code rlo)