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