-/* MEMORY BARRIERS */
-
-#define smp_rmb() do {} while(0)
-#define smp_wmb() do {} while(0)
-#define smp_mb() do {} while(0)
-#define smp_mb__after_atomic_inc() do {} while(0)
-
-#define read_barrier_depends() do {} while(0)
-#define smp_read_barrier_depends() do {} while(0)
-
-/* RCU */
-
-#define rcu_assign_pointer(a, b) do {} while(0)
-#define call_rcu_sched(a,b) do {} while(0)
-#define rcu_barrier_sched() do {} while(0)
-#define rcu_read_lock_sched_notrace() do{} while (0)
-#define rcu_read_unlock_sched_notrace() do{} while (0)
-
-/* ATOMICITY */
-
-#include <signal.h>
-
-typedef struct { sig_atomic_t counter; } atomic_t;
-
-static inline int atomic_dec_and_test(atomic_t *p)
-{
- (p->counter)--;
- return !p->counter;
-}
-
-static inline void atomic_set(atomic_t *p, int v)
-{
- p->counter=v;
-}
-
-static inline void atomic_inc(atomic_t *p)
-{
- p->counter++;
-}
-
-static int atomic_read(atomic_t *p)
-{
- return p->counter;
-}
-
-#define atomic_long_t atomic_t
-#define atomic_long_set atomic_set
-#define atomic_long_read atomic_read
-
-#include "asm.h"
-
-#define __xg(x) ((volatile long *)(x))
-
-#define cmpxchg(ptr, o, n) \
- ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \
- (unsigned long)(n), sizeof(*(ptr))))
-
-static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
- unsigned long new, int size)
-{
- unsigned long prev;
- switch (size) {
- case 1:
- asm volatile("lock cmpxchgb %b1,%2"
- : "=a"(prev)
- : "q"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- case 2:
- asm volatile("lock cmpxchgw %w1,%2"
- : "=a"(prev)
- : "r"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- case 4:
- asm volatile("lock cmpxchgl %k1,%2"
- : "=a"(prev)
- : "r"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- case 8:
- asm volatile("lock cmpxchgq %1,%2"
- : "=a"(prev)
- : "r"(new), "m"(*__xg(ptr)), "0"(old)
- : "memory");
- return prev;
- }
- return old;
-}
-
-#define local_cmpxchg cmpxchg
-#define atomic_long_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
-
-
-/* LOCAL OPS */
-
-typedef int local_t;
-
-static inline void local_inc(local_t *a)
-{
- (*a)++;
-}
-
-static inline void local_set(local_t *a, int v)
-{
- *a = v;
-}
-
-static inline void local_add(int v, local_t *a)
-{
- *a += v;
-}
-
-static int local_add_return(int v, local_t *a)
-{
- return *a += v;
-}
-
-static inline int local_read(local_t *a)
-{
- return *a;
-}
-