atomic.h 658 B

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