PERFORCE change 96810 for review
Kip Macy
kmacy at FreeBSD.org
Mon May 8 00:36:08 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=96810
Change 96810 by kmacy at kmacy_storage:sun4v_rwbuf on 2006/05/08 00:35:29
don't use lduw to avoid stomping on bit 31
use membars when setting active
Affected files ...
.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/swtch.S#21 edit
Differences ...
==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/swtch.S#21 (text+ko) ====
@@ -40,22 +40,28 @@
#define PCB_REG %g6
+#define MEMBAR_PRE membar #LoadStore|#StoreStore
+#define MEMBAR_POST membar #LoadLoad
+
#define ATOMIC_CLEAR_INT_BIT(addr, old, bit, new, label) \
- lduw [addr], old ; \
+ MEMBAR_PRE ; \
+ ld [addr], old ; \
label: andn old, bit, new ; \
cas [addr], old, new ; \
cmp old, new ; \
- bne,pn %icc, label ## b ; \
- mov new, old
-
+ bne,a,pn %icc, label ## b ; \
+ ld [addr], old ; \
+ MEMBAR_POST
+
#define ATOMIC_SET_INT_BIT(addr, old, bit, new, label) \
- lduw [addr], old ; \
+ MEMBAR_PRE ; \
+ ld [addr], old ; \
label: or old, bit, new ; \
cas [addr], old, new ; \
cmp old, new ; \
- bne,pn %icc, label ## b ; \
- mov new, old
-
+ bne,a,pn %icc, label ## b ; \
+ ld [addr], old ; \
+ MEMBAR_POST
/*
* void cpu_throw(struct thread *old, struct thread *new)
*/
More information about the p4-projects
mailing list