mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
840 B
38 lines
840 B
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef __ASM_SH_ATOMIC_H |
|
#define __ASM_SH_ATOMIC_H |
|
|
|
#if defined(CONFIG_CPU_J2) |
|
|
|
#include <asm-generic/atomic.h> |
|
|
|
#else |
|
|
|
/* |
|
* Atomic operations that C can't guarantee us. Useful for |
|
* resource counting etc.. |
|
* |
|
*/ |
|
|
|
#include <linux/compiler.h> |
|
#include <linux/types.h> |
|
#include <asm/cmpxchg.h> |
|
#include <asm/barrier.h> |
|
|
|
#define arch_atomic_read(v) READ_ONCE((v)->counter) |
|
#define arch_atomic_set(v,i) WRITE_ONCE((v)->counter, (i)) |
|
|
|
#if defined(CONFIG_GUSA_RB) |
|
#include <asm/atomic-grb.h> |
|
#elif defined(CONFIG_CPU_SH4A) |
|
#include <asm/atomic-llsc.h> |
|
#else |
|
#include <asm/atomic-irq.h> |
|
#endif |
|
|
|
#define arch_atomic_xchg(v, new) (arch_xchg(&((v)->counter), new)) |
|
#define arch_atomic_cmpxchg(v, o, n) (arch_cmpxchg(&((v)->counter), (o), (n))) |
|
|
|
#endif /* CONFIG_CPU_J2 */ |
|
|
|
#endif /* __ASM_SH_ATOMIC_H */
|
|
|