cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

atomic.h (1153B)


      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#define arch_atomic_cmpxchg(v, o, n)					\
     26({									\
     27	arch_cmpxchg(&((v)->counter), (o), (n));			\
     28})
     29
     30#ifdef arch_cmpxchg_relaxed
     31#define arch_atomic_cmpxchg_relaxed(v, o, n)				\
     32({									\
     33	arch_cmpxchg_relaxed(&((v)->counter), (o), (n));		\
     34})
     35#endif
     36
     37#define arch_atomic_xchg(v, n)						\
     38({									\
     39	arch_xchg(&((v)->counter), (n));				\
     40})
     41
     42#ifdef arch_xchg_relaxed
     43#define arch_atomic_xchg_relaxed(v, n)					\
     44({									\
     45	arch_xchg_relaxed(&((v)->counter), (n));			\
     46})
     47#endif
     48
     49/*
     50 * 64-bit atomics
     51 */
     52#ifdef CONFIG_GENERIC_ATOMIC64
     53#include <asm-generic/atomic64.h>
     54#else
     55#include <asm/atomic64-arcv2.h>
     56#endif
     57
     58#endif	/* !__ASSEMBLY__ */
     59
     60#endif