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