Got the File IO tests up and running over ethernet.
[akaros.git] / include / atomic.h
index bc250b1..c845f48 100644 (file)
@@ -4,10 +4,7 @@
 #include <arch/types.h>
 #include <arch/mmu.h>
 #include <arch/x86.h>
-
-#define mb() {rmb(); wmb();}
-#define rmb() ({ asm volatile("lfence"); })
-#define wmb() 
+#include <arch/atomic.h>
 
 /* //linux style atomic ops
 typedef struct {uint32_t real_num;} atomic_t;
@@ -21,9 +18,6 @@ static inline void spin_lock(volatile uint32_t* lock);
 static inline void spin_unlock(volatile uint32_t* lock);
 static inline void spin_lock_irqsave(volatile uint32_t* lock);
 static inline void spin_unlock_irqsave(volatile uint32_t* lock);
-static inline void atomic_inc(volatile uint32_t* number);
-static inline void atomic_dec(volatile uint32_t* number);
-static inline void atomic_andb(volatile uint8_t* number, uint8_t mask);
 
 /*********************** Checklist stuff **********************/
 typedef struct checklist_mask {
@@ -122,19 +116,4 @@ static inline void spin_unlock_irqsave(volatile uint32_t* lock)
                *lock = 0;
 }
 
-// need to do this with pointers and deref.  %0 needs to be the memory address
-static inline void atomic_inc(volatile uint32_t* number)
-{
-       asm volatile("lock incl %0" : "=m"(*number) : : "cc");
-}
-
-static inline void atomic_dec(volatile uint32_t* number)
-{
-       asm volatile("lock decl %0" : "=m"(*number) : : "cc");
-}
-
-static inline void atomic_andb(volatile uint8_t* number, uint8_t mask)
-{
-       asm volatile("lock andb %1,%0" : "=m"(*number) : "r"(mask) : "cc");
-}
 #endif /* !ROS_KERN_ATOMIC_H */