Re: [PATCH 11/31] nds32: Atomic operations
From: Arnd Bergmann <arnd@arndb.de>
Date: 2017-11-08 08:54:31
Also in:
linux-arch, lkml
On Wed, Nov 8, 2017 at 6:54 AM, Greentime Hu [off-list ref] wrote:
From: Greentime Hu <redacted> Signed-off-by: Vincent Chen <redacted> Signed-off-by: Greentime Hu <redacted> --- arch/nds32/include/asm/futex.h | 116 ++++++++++++++++++++++++ arch/nds32/include/asm/spinlock.h | 178 +++++++++++++++++++++++++++++++++++++ 2 files changed, 294 insertions(+) create mode 100644 arch/nds32/include/asm/futex.h create mode 100644 arch/nds32/include/asm/spinlock.h
quoted hunk ↗ jump to hunk
diff --git a/arch/nds32/include/asm/spinlock.h b/arch/nds32/include/asm/spinlock.h new file mode 100644 index 0000000..dd5fc71 --- /dev/null +++ b/arch/nds32/include/asm/spinlock.h@@ -0,0 +1,178 @@ + +#define arch_spin_unlock_wait(lock) \ + do { while (arch_spin_is_locked(lock)) cpu_relax(); } while (0)
This was removed from the other architectures in commit
952111d7db02 ("arch: Remove spin_unlock_wait() arch-specific definitions")
Please remove this as well.
Palmer, I see riscv has the same thing, please also add a patch to your
tree to remove it.
+#define arch_spin_lock_flags(lock, flags) arch_spin_lock(lock)
+
+static inline void arch_spin_lock(arch_spinlock_t * lock)
+{
+ unsigned long tmp;
+
+ __asm__ __volatile__("1:\n"
+ "\tllw\t%0, [%1]\n"
+ "\tbnez\t%0, 1b\n"
+ "\tmovi\t%0, #0x1\n"
+ "\tscw\t%0, [%1]\n"
+ "\tbeqz\t%0, 1b\n"
+ :"=&r"(tmp)
+ :"r"(&lock->lock)
+ :"memory");
The coding style seems inconsistent here, the other inline asm uses real tabs
instead of \t, and 'asm volatile' is generally preferred over '__asm__
__volatile__'.
Arnd