locking/atomic: microblaze: use asm-generic exclusively
Microblaze provides its own implementation of atomic_dec_if_positive(), but nothing else. For a while now, the conditional inc/dec ops have been optional, and the core code will provide generic implementations using the code templates in scripts/atomic/fallbacks/. For simplicity, and for consistency with the other conditional atomic ops, let's drop the microblaze implementation of atomic_dec_if_positive(), and use the generic implementation. With that, we can also drop the local asm/atomic.h and asm/cmpxchg.h headers, as asm-generic/atomic.h is mandatory-y, and we can pull in asm-generic/cmpxchg.h via generic-y. This matches what nios2 and nds32 do today. There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Michal Simek <monstr@monstr.eu> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20210525140232.53872-5-mark.rutland@arm.com
This commit is contained in:
parent
c7178cdecd
commit
b68622a86c
|
@ -1,5 +1,6 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
generated-y += syscall_table.h
|
generated-y += syscall_table.h
|
||||||
|
generic-y += cmpxchg.h
|
||||||
generic-y += extable.h
|
generic-y += extable.h
|
||||||
generic-y += kvm_para.h
|
generic-y += kvm_para.h
|
||||||
generic-y += mcs_spinlock.h
|
generic-y += mcs_spinlock.h
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
#ifndef _ASM_MICROBLAZE_ATOMIC_H
|
|
||||||
#define _ASM_MICROBLAZE_ATOMIC_H
|
|
||||||
|
|
||||||
#include <asm/cmpxchg.h>
|
|
||||||
#include <asm-generic/atomic.h>
|
|
||||||
#include <asm-generic/atomic64.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Atomically test *v and decrement if it is greater than 0.
|
|
||||||
* The function returns the old value of *v minus 1.
|
|
||||||
*/
|
|
||||||
static inline int atomic_dec_if_positive(atomic_t *v)
|
|
||||||
{
|
|
||||||
unsigned long flags;
|
|
||||||
int res;
|
|
||||||
|
|
||||||
local_irq_save(flags);
|
|
||||||
res = v->counter - 1;
|
|
||||||
if (res >= 0)
|
|
||||||
v->counter = res;
|
|
||||||
local_irq_restore(flags);
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
#define atomic_dec_if_positive atomic_dec_if_positive
|
|
||||||
|
|
||||||
#endif /* _ASM_MICROBLAZE_ATOMIC_H */
|
|
|
@ -1,9 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
#ifndef _ASM_MICROBLAZE_CMPXCHG_H
|
|
||||||
#define _ASM_MICROBLAZE_CMPXCHG_H
|
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
|
||||||
# include <asm-generic/cmpxchg.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _ASM_MICROBLAZE_CMPXCHG_H */
|
|
Loading…
Reference in New Issue