Module Name:    src
Committed By:   sborrill
Date:           Thu Jan  5 11:54:05 UTC 2012

Modified Files:
        src/sys/dev/pci [netbsd-5]: if_wmreg.h

Log Message:
Pull up the following revisions(s) (requested by dyoung in ticket #1703):
        sys/dev/pci/if_wmreg.h: revision 1.46

Mark all of the wm(4) Rx descriptor fields 'volatile' so that the compiler
will not re-order accesses.  Some versions of GCC (such as one in NetBSD
5.x) definitely do re-order reads from these fields if they're not
marked volatile.


To generate a diff of this commit:
cvs rdiff -u -r1.24.20.5 -r1.24.20.6 src/sys/dev/pci/if_wmreg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/if_wmreg.h
diff -u src/sys/dev/pci/if_wmreg.h:1.24.20.5 src/sys/dev/pci/if_wmreg.h:1.24.20.6
--- src/sys/dev/pci/if_wmreg.h:1.24.20.5	Fri Nov 19 23:40:28 2010
+++ src/sys/dev/pci/if_wmreg.h	Thu Jan  5 11:54:05 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_wmreg.h,v 1.24.20.5 2010/11/19 23:40:28 riz Exp $	*/
+/*	$NetBSD: if_wmreg.h,v 1.24.20.6 2012/01/05 11:54:05 sborrill Exp $	*/
 
 /*
  * Copyright (c) 2001 Wasabi Systems, Inc.
@@ -57,14 +57,14 @@ typedef struct wiseman_addr {
  * and there must be an even multiple of 8 descriptors in the ring.
  */
 typedef struct wiseman_rxdesc {
-	wiseman_addr_t	wrx_addr;	/* buffer address */
+	volatile wiseman_addr_t	wrx_addr;	/* buffer address */
 
-	uint16_t	wrx_len;	/* buffer length */
-	uint16_t	wrx_cksum;	/* checksum (starting at PCSS) */
+	volatile uint16_t	wrx_len;	/* buffer length */
+	volatile uint16_t	wrx_cksum;	/* checksum (starting at PCSS)*/
 
-	uint8_t		wrx_status;	/* Rx status */
-	uint8_t		wrx_errors;	/* Rx errors */
-	uint16_t	wrx_special;	/* special field (VLAN, etc.) */
+	volatile uint8_t	wrx_status;	/* Rx status */
+	volatile uint8_t	wrx_errors;	/* Rx errors */
+	volatile uint16_t	wrx_special;	/* special field (VLAN, etc.) */
 } __packed wiseman_rxdesc_t;
 
 /* wrx_status bits */

Reply via email to