summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@kernel.org>2020-01-21 20:56:33 +0300
committerVineet Gupta <vgupta@kernel.org>2021-08-25 00:25:46 +0300
commitb1040148b2ea4ecbdb60c0d20393f4d15eee13ac (patch)
tree50e9135027cc6c6a28a13b8d915f624f77d15bbb /arch/arc/include/asm
parentb0f839b4b91588c24bac8d320f7fc9fe2dea4517 (diff)
downloadlinux-b1040148b2ea4ecbdb60c0d20393f4d15eee13ac.tar.xz
ARC: atomic: !LLSC: remove hack in atomic_set() for for UP
!LLSC atomics use spinlock (SMP) or irq-disable (UP) to implement criticla regions. UP atomic_set() however was "cheating" by not doing any of that so and still being functional. Remove this anomaly (primarily as cleanup for future code improvements) given that this config is not worth hassle of special case code. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Vineet Gupta <vgupta@kernel.org>
Diffstat (limited to 'arch/arc/include/asm')
-rw-r--r--arch/arc/include/asm/atomic-spinlock.h17
1 files changed, 4 insertions, 13 deletions
diff --git a/arch/arc/include/asm/atomic-spinlock.h b/arch/arc/include/asm/atomic-spinlock.h
index bdf87610b2d7..8c6fd0e651e5 100644
--- a/arch/arc/include/asm/atomic-spinlock.h
+++ b/arch/arc/include/asm/atomic-spinlock.h
@@ -3,12 +3,10 @@
#ifndef _ASM_ARC_ATOMIC_SPLOCK_H
#define _ASM_ARC_ATOMIC_SPLOCK_H
-#ifndef CONFIG_SMP
-
- /* violating atomic_xxx API locking protocol in UP for optimization sake */
-#define arch_atomic_set(v, i) WRITE_ONCE(((v)->counter), (i))
-
-#else
+/*
+ * Non hardware assisted Atomic-R-M-W
+ * Locking would change to irq-disabling only (UP) and spinlocks (SMP)
+ */
static inline void arch_atomic_set(atomic_t *v, int i)
{
@@ -30,13 +28,6 @@ static inline void arch_atomic_set(atomic_t *v, int i)
#define arch_atomic_set_release(v, i) arch_atomic_set((v), (i))
-#endif
-
-/*
- * Non hardware assisted Atomic-R-M-W
- * Locking would change to irq-disabling only (UP) and spinlocks (SMP)
- */
-
#define ATOMIC_OP(op, c_op, asm_op) \
static inline void arch_atomic_##op(int i, atomic_t *v) \
{ \