#ifndef _INCLUDE_API_H
+#define atomic_set(addr, v) \
+do { \
+ ACCESS_ONCE(*(addr)) = (v); \
+} while (0)
+
+#define atomic_read(addr) ACCESS_ONCE(*(addr))
+
/*
* Using a isync as second barrier for exchange to provide acquire semantic.
* According to atomic_ops/sysdeps/gcc/powerpc.h, the documentation is "fairly
/* xchg */
static __attribute__((always_inline))
-unsigned long _atomic_exchange(volatile void *addr, unsigned long val, int len)
+unsigned long _atomic_exchange(void *addr, unsigned long val, int len)
{
switch (len) {
case 4:
/* cmpxchg */
static __attribute__((always_inline))
-unsigned long _atomic_cmpxchg(volatile void *addr, unsigned long old,
+unsigned long _atomic_cmpxchg(void *addr, unsigned long old,
unsigned long _new, int len)
{
switch (len) {
/* atomic_add_return */
static __attribute__((always_inline))
-unsigned long _atomic_add_return(volatile void *addr, unsigned long val,
+unsigned long _atomic_add_return(void *addr, unsigned long val,
int len)
{
switch (len) {