aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-03-15 21:05:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-03-15 21:05:37 -0400
commit236595879b5f838e907d33456b12f3cc23d559bf (patch)
tree5cba90ef4622ed676cb52610dbe6cf8da732e0ac /include
parent9e1a0aab60b3d4a6650690862153f11fceddb80d (diff)
parent6af609515d788bd4c94116344f00601b058f75a6 (diff)
Merge tag 'for-3.9-rc3' of git://openrisc.net/jonas/linux
Pull OpenRISC bug fixes from Jonas Bonn: - The GPIO descriptor work has exposed how broken the non-GPIOLIB bits for OpenRISC were. We now require GPIOLIB as this is the preferred way forward. - The system.h split introduced a bug in llist.h for arches using asm-generic/cmpxchg.h directly, which is currently only OpenRISC. The patch here moves two defines from asm-generic/atomic.h to asm-generic/cmpxchg.h to make things work as they should. - The VIRT_TO_BUS selector was added for OpenRISC, but OpenRISC does not have the virt_to_bus methods, so there's a patch to remove it again. * tag 'for-3.9-rc3' of git://openrisc.net/jonas/linux: openrisc: remove HAVE_VIRT_TO_BUS asm-generic: move cmpxchg*_local defs to cmpxchg.h openrisc: require gpiolib
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/atomic.h6
-rw-r--r--include/asm-generic/cmpxchg.h10
2 files changed, 10 insertions, 6 deletions
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
index 1ced6413ea03..33bd2de3bc1e 100644
--- a/include/asm-generic/atomic.h
+++ b/include/asm-generic/atomic.h
@@ -136,12 +136,6 @@ static inline void atomic_dec(atomic_t *v)
136#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v))) 136#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
137#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) 137#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
138 138
139#define cmpxchg_local(ptr, o, n) \
140 ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
141 (unsigned long)(n), sizeof(*(ptr))))
142
143#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
144
145static inline int __atomic_add_unless(atomic_t *v, int a, int u) 139static inline int __atomic_add_unless(atomic_t *v, int a, int u)
146{ 140{
147 int c, old; 141 int c, old;
diff --git a/include/asm-generic/cmpxchg.h b/include/asm-generic/cmpxchg.h
index 14883026015d..811fb1e9b061 100644
--- a/include/asm-generic/cmpxchg.h
+++ b/include/asm-generic/cmpxchg.h
@@ -92,6 +92,16 @@ unsigned long __xchg(unsigned long x, volatile void *ptr, int size)
92 */ 92 */
93#include <asm-generic/cmpxchg-local.h> 93#include <asm-generic/cmpxchg-local.h>
94 94
95#ifndef cmpxchg_local
96#define cmpxchg_local(ptr, o, n) \
97 ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
98 (unsigned long)(n), sizeof(*(ptr))))
99#endif
100
101#ifndef cmpxchg64_local
102#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
103#endif
104
95#define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n)) 105#define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n))
96#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n)) 106#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n))
97 107