mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
xtensa: Emulate one-byte cmpxchg
Use the new cmpxchg_emu_u8() to emulate one-byte cmpxchg() on xtensa. [ paulmck: Apply kernel test robot feedback. ] [ paulmck: Drop two-byte support per Arnd Bergmann feedback. ] [ Apply Geert Uytterhoeven feedback. ] Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Tested-by: Yujie Liu <yujie.liu@intel.com> Cc: Andi Shyti <andi.shyti@linux.intel.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Arnd Bergmann <arnd@arndb.de> Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
This commit is contained in:
parent
c81a748ede
commit
e799bef0d9
@ -14,6 +14,7 @@ config XTENSA
|
|||||||
select ARCH_HAS_DMA_SET_UNCACHED if MMU
|
select ARCH_HAS_DMA_SET_UNCACHED if MMU
|
||||||
select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
|
select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
|
||||||
select ARCH_HAS_STRNLEN_USER
|
select ARCH_HAS_STRNLEN_USER
|
||||||
|
select ARCH_NEED_CMPXCHG_1_EMU
|
||||||
select ARCH_USE_MEMTEST
|
select ARCH_USE_MEMTEST
|
||||||
select ARCH_USE_QUEUED_RWLOCKS
|
select ARCH_USE_QUEUED_RWLOCKS
|
||||||
select ARCH_USE_QUEUED_SPINLOCKS
|
select ARCH_USE_QUEUED_SPINLOCKS
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include <linux/bits.h>
|
#include <linux/bits.h>
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
|
#include <linux/cmpxchg-emu.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cmpxchg
|
* cmpxchg
|
||||||
@ -74,6 +75,7 @@ static __inline__ unsigned long
|
|||||||
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
||||||
{
|
{
|
||||||
switch (size) {
|
switch (size) {
|
||||||
|
case 1: return cmpxchg_emu_u8(ptr, old, new);
|
||||||
case 4: return __cmpxchg_u32(ptr, old, new);
|
case 4: return __cmpxchg_u32(ptr, old, new);
|
||||||
default: __cmpxchg_called_with_bad_pointer();
|
default: __cmpxchg_called_with_bad_pointer();
|
||||||
return old;
|
return old;
|
||||||
|
Loading…
Reference in New Issue
Block a user