1 2010-03-23 Mischa Jonker <mischa.jonker@viragelogic.com>
4 * sysdeps/mips/bits/atomic.h
5 (__arch_compare_and_exchange_xxx_32_int,
6 __arch_compare_and_exchange_xxx_64_int,
7 __arch_exchange_xxx_32_int, __arch_exchange_xxx_64_int,
8 __arch_exchange_and_add_32_int, __arch_exchange_and_add_64_int):
9 Specify *mem as asm output as well as input.
11 diff --git a/sysdeps/mips/bits/atomic.h b/sysdeps/mips/bits/atomic.h
12 index 167d9a5..11b3467 100644
13 --- a/ports/sysdeps/mips/bits/atomic.h
14 +++ b/ports/sysdeps/mips/bits/atomic.h
15 @@ -69,16 +69,16 @@ typedef uintmax_t uatomic_max_t;
22 - "bne %0,%2,2f\n\t" \
25 + "bne %0,%3,2f\n\t" \
32 - : "=&r" (__prev), "=&r" (__cmp) \
33 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
34 : "r" (oldval), "r" (newval), "m" (*mem) \
37 @@ -93,16 +93,16 @@ typedef uintmax_t uatomic_max_t;
44 - "bne %0,%2,2f\n\t" \
47 + "bne %0,%3,2f\n\t" \
54 - : "=&r" (__prev), "=&r" (__cmp) \
55 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
56 : "r" (oldval), "r" (newval), "m" (*mem) \
59 @@ -189,14 +189,14 @@ typedef uintmax_t uatomic_max_t;
73 - : "=&r" (__prev), "=&r" (__cmp) \
74 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
75 : "r" (newval), "m" (*mem) \
78 @@ -213,14 +213,14 @@ typedef uintmax_t uatomic_max_t;
92 - : "=&r" (__prev), "=&r" (__cmp) \
93 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
94 : "r" (newval), "m" (*mem) \
97 @@ -248,14 +248,14 @@ typedef uintmax_t uatomic_max_t;
102 - "addu %1,%0,%2\n\t" \
105 + "addu %1,%0,%3\n\t" \
111 - : "=&r" (__prev), "=&r" (__cmp) \
112 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
113 : "r" (value), "m" (*mem) \
116 @@ -272,14 +272,14 @@ typedef uintmax_t uatomic_max_t;
121 - "daddu %1,%0,%2\n\t" \
124 + "daddu %1,%0,%3\n\t" \
130 - : "=&r" (__prev), "=&r" (__cmp) \
131 + : "=&r" (__prev), "=&r" (__cmp), "=m" (*mem) \
132 : "r" (value), "m" (*mem) \