diff --git a/libatomic/ChangeLog b/libatomic/ChangeLog
index 609779f9845a7600cb1b136fc0470ef304f6ccb0..21f4856998b59ccdb9842d3bf261d9366c1192d8 100644
--- a/libatomic/ChangeLog
+++ b/libatomic/ChangeLog
@@ -1,3 +1,7 @@
+2014-11-13  Andrew Waterman <waterman@cs.berkeley.edu>
+
+	* cas_n.c (libat_compare_exchange): Add missing cast.
+
 2014-11-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
 	PR target/63610
diff --git a/libatomic/cas_n.c b/libatomic/cas_n.c
index 801262d551c4bbf5079a8b3a58977f230a03d653..a885afab7a50303be1b782bb8b92ba0e12651ba7 100644
--- a/libatomic/cas_n.c
+++ b/libatomic/cas_n.c
@@ -70,7 +70,7 @@ SIZE(libat_compare_exchange) (UTYPE *mptr, UTYPE *eptr, UTYPE newval,
       mask = -1;
     }
 
-  weval = *eptr << shift;
+  weval = (UWORD)*eptr << shift;
   wnewval = (UWORD)newval << shift;
   woldval = __atomic_load_n (wptr, __ATOMIC_RELAXED);
   do