xref: /linux/arch/arc/include/asm/atomic.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
4  */
5 
6 #ifndef _ASM_ARC_ATOMIC_H
7 #define _ASM_ARC_ATOMIC_H
8 
9 #ifndef __ASSEMBLY__
10 
11 #include <linux/types.h>
12 #include <linux/compiler.h>
13 #include <asm/cmpxchg.h>
14 #include <asm/barrier.h>
15 #include <asm/smp.h>
16 
17 #define arch_atomic_read(v)  READ_ONCE((v)->counter)
18 
19 #ifdef CONFIG_ARC_HAS_LLSC
20 #include <asm/atomic-llsc.h>
21 #else
22 #include <asm/atomic-spinlock.h>
23 #endif
24 
25 /*
26  * 64-bit atomics
27  */
28 #ifdef CONFIG_GENERIC_ATOMIC64
29 #include <asm-generic/atomic64.h>
30 #else
31 #include <asm/atomic64-arcv2.h>
32 #endif
33 
34 #endif	/* !__ASSEMBLY__ */
35 
36 #endif
37