diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 540aa986ffd2bb7409f91c40f073141115b109cc..22535bd2223bb368b43ae69f528d1649fe0cb720 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-01-10  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* config/m68k/sync.md ("atomic_compare_and_swap<mode>_1"): Fix
+	operand number.
+
 2012-01-10  Jason Merrill  <jason@redhat.com>
 
 	* doc/invoke.texi (C++ Dialect Options): Update -fabi-version=6
diff --git a/gcc/config/m68k/sync.md b/gcc/config/m68k/sync.md
index 13e29ec3d1d335cce49162dc6a23a1f4b0b04605..a40a5bfe5577f949fec3bca53e520b5a1876e1c0 100644
--- a/gcc/config/m68k/sync.md
+++ b/gcc/config/m68k/sync.md
@@ -1,5 +1,5 @@
 ;; GCC machine description for m68k synchronization instructions.
-;; Copyright (C) 2011
+;; Copyright (C) 2011, 2012
 ;; Free Software Foundation, Inc.
 ;;
 ;; This file is part of GCC.
@@ -41,7 +41,7 @@
   [(set (match_operand:I 1 "register_operand" "=d")
 	(unspec_volatile:I
 	  [(match_operand:I 2 "memory_operand" "+m")
-	   (match_operand:I 3 "register_operand" "0")
+	   (match_operand:I 3 "register_operand" "1")
 	   (match_operand:I 4 "register_operand" "d")]
 	  UNSPECV_CAS_1))
    (set (match_dup 2)