diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b8511a1adc6906546b1480403205a212367bd7ce..3bbb6c0dffa5fff56347d04c2c8c6eaf6ecc1f83 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-07-03  Maciej W. Rozycki  <macro@codesourcery.com>
+
+	* config/rs6000/rs6000.c (rs6000_adjust_atomic_subword): Use
+	BYTES_BIG_ENDIAN rather than WORDS_BIG_ENDIAN to check for byte
+	endianness.
+
 2014-07-03  Zhenqiang Chen  <zhenqiang.chen@linaro.org>
 
 	* loop-invariant.c (struct invariant): Add a new member: eqno;
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 67690d98b132fad0a5f03500d72ffc344b0d6e02..215e65b70e59025a53469490e0f268ef8ac01b62 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -19897,7 +19897,7 @@ rs6000_adjust_atomic_subword (rtx orig_mem, rtx *pshift, rtx *pmask)
   shift = gen_reg_rtx (SImode);
   addr = gen_lowpart (SImode, addr);
   emit_insn (gen_rlwinm (shift, addr, GEN_INT (3), GEN_INT (shift_mask)));
-  if (WORDS_BIG_ENDIAN)
+  if (BYTES_BIG_ENDIAN)
     shift = expand_simple_binop (SImode, XOR, shift, GEN_INT (shift_mask),
 			         shift, 1, OPTAB_LIB_WIDEN);
   *pshift = shift;