aboutsummaryrefslogtreecommitdiff
path: root/pk/atomic.h
diff options
context:
space:
mode:
Diffstat (limited to 'pk/atomic.h')
-rw-r--r--pk/atomic.h45
1 files changed, 0 insertions, 45 deletions
diff --git a/pk/atomic.h b/pk/atomic.h
deleted file mode 100644
index 88bb239..0000000
--- a/pk/atomic.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef _RISCV_ATOMIC_H
-#define _RISCV_ATOMIC_H
-
-typedef struct { long val; } atomic_t;
-typedef struct { atomic_t lock; } spinlock_t;
-#define SPINLOCK_INIT {{0}}
-
-static inline long atomic_add(atomic_t* a, long inc)
-{
- //return __sync_fetch_and_add(&a->val, inc);
- long ret = a->val;
- a->val++;
- return ret;
-}
-
-static inline long atomic_swap(atomic_t* a, long val)
-{
- //return __sync_lock_test_and_set(&a->val, val);
- long reg = a->val;
- a->val = val;
- return reg;
-}
-
-static inline void atomic_set(atomic_t* a, long val)
-{
- a->val = val;
-}
-
-static inline long atomic_read(atomic_t* a)
-{
- return a->val;
-}
-
-static inline void spinlock_lock(spinlock_t* lock)
-{
- while(atomic_read(&lock->lock))
- while(atomic_swap(&lock->lock,-1));
-}
-
-static inline void spinlock_unlock(spinlock_t* lock)
-{
- atomic_set(&lock->lock,0);
-}
-
-#endif