Commit e799bef0 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

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: default avatarPaul E. McKenney <paulmck@kernel.org>
Tested-by: default avatarYujie 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>
parent c81a748e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ config XTENSA
	select ARCH_HAS_DMA_SET_UNCACHED if MMU
	select ARCH_HAS_STRNCPY_FROM_USER if !KASAN
	select ARCH_HAS_STRNLEN_USER
	select ARCH_NEED_CMPXCHG_1_EMU
	select ARCH_USE_MEMTEST
	select ARCH_USE_QUEUED_RWLOCKS
	select ARCH_USE_QUEUED_SPINLOCKS
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@

#include <linux/bits.h>
#include <linux/stringify.h>
#include <linux/cmpxchg-emu.h>

/*
 * cmpxchg
@@ -74,6 +75,7 @@ static __inline__ unsigned long
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
{
	switch (size) {
	case 1:  return cmpxchg_emu_u8(ptr, old, new);
	case 4:  return __cmpxchg_u32(ptr, old, new);
	default: __cmpxchg_called_with_bad_pointer();
		 return old;