diff --git a/ghc/compiler/nativeGen/MachMisc.lhs b/ghc/compiler/nativeGen/MachMisc.lhs
index 838c33568a7da3058f5b01c7b6bf2bb13d771b29..7debcc1d9c8dadc6f6b6cd62a7c3e870a569b273 100644
--- a/ghc/compiler/nativeGen/MachMisc.lhs
+++ b/ghc/compiler/nativeGen/MachMisc.lhs
@@ -59,7 +59,7 @@ import Stix		( StixTree(..), StixReg(..), sStLitLbl,
 			)
 import Util		( panic )
 import Char		( isDigit )
-import GlaExts		( word2Int#, int2Word#, shiftRA#, and#, (/=#) )
+import GlaExts		( word2Int#, int2Word#, shiftRL#, and#, (/=#) )
 \end{code}
 
 \begin{code}
@@ -294,7 +294,6 @@ extensions.  Tough.
 \begin{code}
 w2i x = word2Int# x
 i2w x = int2Word# x
-i2w_s x = (x::Int#)
 
 exactLog2 :: Integer -> Maybe Integer
 exactLog2 x
@@ -308,10 +307,10 @@ exactLog2 x
 	  Just (toInteger (I# (pow2 x#)))
        }
   where
-    shiftr x y = shiftRA# x y
+    shiftr x y = shiftRL# x y
 
     pow2 x# | x# ==# 1# = 0#
-            | otherwise = 1# +# pow2 (w2i (i2w x# `shiftr` i2w_s 1#))
+            | otherwise = 1# +# pow2 (w2i (i2w x# `shiftr` 1#))
 \end{code}
 
 % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -