summaryrefslogtreecommitdiff
path: root/sys/arch/powerpc
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2007-02-06 17:13:34 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2007-02-06 17:13:34 +0000
commitf362ffa3807abff7ddf02a5444837d99e055118c (patch)
treefadacf8a1cfbb96801c55e8d68bb13d221849937 /sys/arch/powerpc
parent7db3ee67d9e72670d704be8f59c2fc3c4fe5684a (diff)
Add machine/atomic.h to all architectures and define two operations
right now that are supposed to be atomic with respect to interrupts and SMP: atomic_setbits_int and atomic_clearbits_int. All architectures other than i386 and amd64 get dummy implementations since at first we'll be replacing operations that are done with "a |= bit" and "a &= ~bit" today. More proper implementations will follow kettenis@, miod@ ok
Diffstat (limited to 'sys/arch/powerpc')
-rw-r--r--sys/arch/powerpc/include/atomic.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/arch/powerpc/include/atomic.h b/sys/arch/powerpc/include/atomic.h
new file mode 100644
index 00000000000..b502bc61d1e
--- /dev/null
+++ b/sys/arch/powerpc/include/atomic.h
@@ -0,0 +1,20 @@
+/* $OpenBSD: atomic.h,v 1.1 2007/02/06 17:13:33 art Exp $ */
+
+/* Public Domain */
+
+#ifndef __POWERPC_ATOMIC_H__
+#define __POWERPC_ATOMIC_H__
+
+static __inline void
+atomic_setbits_int(__volatile unsigned int *uip, unsigned int v)
+{
+ *uip |= v;
+}
+
+static __inline void
+atomic_clearbits_int(__volatile unsigned int *uip, unsigned int v)
+{
+ *uip &= ~v;
+}
+
+#endif