about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--NEWS2
-rw-r--r--sysdeps/m68k/m680x0/m68020/bits/atomic.h16
3 files changed, 16 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b12552275..9b3426b220 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2015-03-14  Andreas Schwab  <schwab@linux-m68k.org>
+
+	[BZ #18128]
+	* sysdeps/m68k/m680x0/m68020/bits/atomic.h (atomic_exchange_and_add)
+	(atomic_add, atomic_increment_and_test)
+	(atomic_decrement_and_test): Fix 64-bit arithmetic.
+
 2015-03-13  Paul Eggert  <eggert@cs.ucla.edu>
 
 	* stdlib/setenv.c (__add_to_environ):
diff --git a/NEWS b/NEWS
index 4e0024bd1a..4ef81d3a16 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Version 2.22
   17779, 17792, 17836, 17912, 17916, 17932, 17944, 17949, 17964, 17965,
   17967, 17969, 17978, 17987, 17991, 17996, 17998, 17999, 18019, 18020,
   18029, 18030, 18032, 18036, 18038, 18039, 18042, 18043, 18046, 18047,
-  18068, 18080, 18093, 18104, 18110, 18111.
+  18068, 18080, 18093, 18104, 18110, 18111, 18128.
 
 * Character encoding and ctype tables were updated to Unicode 7.0.0, using
   new generator scripts contributed by Pravin Satpute and Mike FABIAN (Red
diff --git a/sysdeps/m68k/m680x0/m68020/bits/atomic.h b/sysdeps/m68k/m680x0/m68020/bits/atomic.h
index 2038037ee4..9a29022af9 100644
--- a/sysdeps/m68k/m680x0/m68020/bits/atomic.h
+++ b/sysdeps/m68k/m680x0/m68020/bits/atomic.h
@@ -139,8 +139,8 @@ typedef uintmax_t uatomic_max_t;
 	 __typeof (mem) __memp = (mem);					      \
 	 __asm __volatile ("1: move%.l %0,%1;"				      \
 			   "   move%.l %R0,%R1;"			      \
-			   "   add%.l %2,%1;"				      \
-			   "   addx%.l %R2,%R1;"			      \
+			   "   add%.l %R2,%R1;"				      \
+			   "   addx%.l %2,%1;"				      \
 			   "   cas2%.l %0:%R0,%1:%R1,(%3):(%4);"	      \
 			   "   jbne 1b"					      \
 			   : "=d" (__result), "=&d" (__temp)		      \
@@ -170,8 +170,8 @@ typedef uintmax_t uatomic_max_t;
 		__typeof (*(mem)) __temp;				      \
 		__asm __volatile ("1: move%.l %0,%1;"			      \
 				  "   move%.l %R0,%R1;"			      \
-				  "   add%.l %2,%1;"			      \
-				  "   addx%.l %R2,%R1;"			      \
+				  "   add%.l %R2,%R1;"			      \
+				  "   addx%.l %2,%1;"			      \
 				  "   cas2%.l %0:%R0,%1:%R1,(%3):(%4);"	      \
 				  "   jbne 1b"				      \
 				  : "=d" (__oldval), "=&d" (__temp)	      \
@@ -199,8 +199,8 @@ typedef uintmax_t uatomic_max_t;
 	 __typeof (*(mem)) __temp;					      \
 	 __asm __volatile ("1: move%.l %1,%2;"				      \
 			   "   move%.l %R1,%R2;"			      \
-			   "   addq%.l %#1,%2;"				      \
-			   "   addx%.l %5,%R2;"				      \
+			   "   addq%.l %#1,%R2;"			      \
+			   "   addx%.l %5,%2;"				      \
 			   "   seq %0;"					      \
 			   "   cas2%.l %1:%R1,%2:%R2,(%3):(%4);"	      \
 			   "   jbne 1b"					      \
@@ -230,8 +230,8 @@ typedef uintmax_t uatomic_max_t;
 	 __typeof (*(mem)) __temp;					      \
 	 __asm __volatile ("1: move%.l %1,%2;"				      \
 			   "   move%.l %R1,%R2;"			      \
-			   "   subq%.l %#1,%2;"				      \
-			   "   subx%.l %5,%R2;"				      \
+			   "   subq%.l %#1,%R2;"			      \
+			   "   subx%.l %5,%2;"				      \
 			   "   seq %0;"					      \
 			   "   cas2%.l %1:%R1,%2:%R2,(%3):(%4);"	      \
 			   "   jbne 1b"					      \