OpenRISC bug fixes for 3.9
* 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. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEABECAAYFAlFCu28ACgkQ70gcjN2673OzpwCfdv7JYVybaCXWHhmcvGIpyrjU ed0AnAuz0rGFqyN7vSAxmHtusUnJVEsT =Lddj -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
236595879b
|
@ -9,10 +9,9 @@ config OPENRISC
|
||||||
select OF_EARLY_FLATTREE
|
select OF_EARLY_FLATTREE
|
||||||
select IRQ_DOMAIN
|
select IRQ_DOMAIN
|
||||||
select HAVE_MEMBLOCK
|
select HAVE_MEMBLOCK
|
||||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
select HAVE_GENERIC_HARDIRQS
|
select HAVE_GENERIC_HARDIRQS
|
||||||
select VIRT_TO_BUS
|
|
||||||
select GENERIC_IRQ_CHIP
|
select GENERIC_IRQ_CHIP
|
||||||
select GENERIC_IRQ_PROBE
|
select GENERIC_IRQ_PROBE
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
|
|
|
@ -136,12 +136,6 @@ static inline void atomic_dec(atomic_t *v)
|
||||||
#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
|
#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
|
||||||
#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
|
#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
|
||||||
|
|
||||||
#define cmpxchg_local(ptr, o, n) \
|
|
||||||
((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
|
|
||||||
(unsigned long)(n), sizeof(*(ptr))))
|
|
||||||
|
|
||||||
#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
|
|
||||||
|
|
||||||
static inline int __atomic_add_unless(atomic_t *v, int a, int u)
|
static inline int __atomic_add_unless(atomic_t *v, int a, int u)
|
||||||
{
|
{
|
||||||
int c, old;
|
int c, old;
|
||||||
|
|
|
@ -92,6 +92,16 @@ unsigned long __xchg(unsigned long x, volatile void *ptr, int size)
|
||||||
*/
|
*/
|
||||||
#include <asm-generic/cmpxchg-local.h>
|
#include <asm-generic/cmpxchg-local.h>
|
||||||
|
|
||||||
|
#ifndef cmpxchg_local
|
||||||
|
#define cmpxchg_local(ptr, o, n) \
|
||||||
|
((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\
|
||||||
|
(unsigned long)(n), sizeof(*(ptr))))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef cmpxchg64_local
|
||||||
|
#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n))
|
#define cmpxchg(ptr, o, n) cmpxchg_local((ptr), (o), (n))
|
||||||
#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n))
|
#define cmpxchg64(ptr, o, n) cmpxchg64_local((ptr), (o), (n))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue