Moved memory-barrier macros out of arch/atomic.h
authorAndrew Waterman <waterman@parcad.millennium.berkeley.edu>
Wed, 27 Jan 2010 21:44:15 +0000 (13:44 -0800)
committerAndrew Waterman <waterman@parcad.millennium.berkeley.edu>
Wed, 27 Jan 2010 21:44:15 +0000 (13:44 -0800)
...just so the Xen ring buffer header doesn't have to suck in
the entire arch/atomic.h.  (The real reason is that glibc chokes
on atomic_add, so don't want it polluting the namespace...)

kern/arch/i386/atomic.h
kern/arch/i386/membar.h [new file with mode: 0644]
kern/arch/sparc/atomic.h
kern/arch/sparc/membar.h [new file with mode: 0644]

index 7e2e5cf..a88ef24 100644 (file)
@@ -7,13 +7,7 @@
 #include <ros/common.h>
 #include <arch/x86.h>
 #include <arch/arch.h>
-
-#define mb() {rmb(); wmb();}
-#define rmb() ({ asm volatile("lfence"); })
-#define wmb() 
-/* Force a wmb, used in cases where an IPI could beat a write, even though
- * write-orderings are respected. */
-#define wmb_f() ({ asm volatile("sfence"); })
+#include <arch/membar.h>
 
 typedef void * RACY atomic_t;
 struct spinlock {
diff --git a/kern/arch/i386/membar.h b/kern/arch/i386/membar.h
new file mode 100644 (file)
index 0000000..1fa5df9
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _ARCH_MEMBAR_H
+#define _ARCH_MEMBAR_H
+
+#define mb() {rmb(); wmb();}
+#define rmb() ({ asm volatile("lfence"); })
+#define wmb() 
+/* Force a wmb, used in cases where an IPI could beat a write, even though
+ *  * write-orderings are respected. */
+#define wmb_f() ({ asm volatile("sfence"); })
+
+#endif
index 84a5f57..9e56927 100644 (file)
@@ -2,13 +2,7 @@
 #define ROS_INCLUDE_ATOMIC_H
 
 #include <ros/common.h>
-
-#define mb() {rmb(); wmb();}
-#define rmb()
-#define wmb() ({ __asm__ __volatile__ ("stbar"); })
-/* Force a wmb, used in cases where an IPI could beat a write, even though
- * write-orderings are respected.  (Used by x86) */
-#define wmb_f() wmb()
+#include <arch/membar.h>
 
 typedef struct
 {
diff --git a/kern/arch/sparc/membar.h b/kern/arch/sparc/membar.h
new file mode 100644 (file)
index 0000000..2e8cc34
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _ARCH_MEMBAR_H
+#define _ARCH_MEMBAR_H
+
+#define mb() {rmb(); wmb();}
+#define rmb()
+#define wmb() ({ __asm__ __volatile__ ("stbar"); })
+/* Force a wmb, used in cases where an IPI could beat a write, even though
+ *  * write-orderings are respected.  (Used by x86) */
+#define wmb_f() wmb()
+
+#endif