xref: /openbmc/linux/arch/arc/include/asm/atomic.h (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
214e968baSVineet Gupta /*
314e968baSVineet Gupta  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
414e968baSVineet Gupta  */
514e968baSVineet Gupta 
614e968baSVineet Gupta #ifndef _ASM_ARC_ATOMIC_H
714e968baSVineet Gupta #define _ASM_ARC_ATOMIC_H
814e968baSVineet Gupta 
914e968baSVineet Gupta #ifndef __ASSEMBLY__
1014e968baSVineet Gupta 
1114e968baSVineet Gupta #include <linux/types.h>
1214e968baSVineet Gupta #include <linux/compiler.h>
1314e968baSVineet Gupta #include <asm/cmpxchg.h>
1414e968baSVineet Gupta #include <asm/barrier.h>
1514e968baSVineet Gupta #include <asm/smp.h>
1614e968baSVineet Gupta 
176db5d993SMark Rutland #define arch_atomic_read(v)  READ_ONCE((v)->counter)
1814e968baSVineet Gupta 
1914e968baSVineet Gupta #ifdef CONFIG_ARC_HAS_LLSC
20b0f839b4SVineet Gupta #include <asm/atomic-llsc.h>
2114e968baSVineet Gupta #else
22b0f839b4SVineet Gupta #include <asm/atomic-spinlock.h>
2314e968baSVineet Gupta #endif
2414e968baSVineet Gupta 
25*301014cfSVineet Gupta /*
26*301014cfSVineet Gupta  * 64-bit atomics
27*301014cfSVineet Gupta  */
28ce636527SVineet Gupta #ifdef CONFIG_GENERIC_ATOMIC64
2914e968baSVineet Gupta #include <asm-generic/atomic64.h>
30b0f839b4SVineet Gupta #else
31b0f839b4SVineet Gupta #include <asm/atomic64-arcv2.h>
32b0f839b4SVineet Gupta #endif
33ce636527SVineet Gupta 
34ce636527SVineet Gupta #endif	/* !__ASSEMBLY__ */
3514e968baSVineet Gupta 
3614e968baSVineet Gupta #endif
37