Skip to content

Commit

Permalink
m68k: fix 64-bit arithmetic in atomic operations (bug 18128)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andreas Schwab committed Mar 14, 2015
1 parent 2ecccae commit a3905fd
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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):
Expand Down
2 changes: 1 addition & 1 deletion NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
16 changes: 8 additions & 8 deletions sysdeps/m68k/m680x0/m68020/bits/atomic.h
Original file line number Diff line number Diff line change
Expand Up @@ -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) \
Expand Down Expand Up @@ -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) \
Expand Down Expand Up @@ -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" \
Expand Down Expand Up @@ -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" \
Expand Down

0 comments on commit a3905fd

Please sign in to comment.