PERFORCE change 74188 for review
John Baldwin
jhb at FreeBSD.org
Thu Mar 31 08:26:48 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=74188
Change 74188 by jhb at jhb_slimer on 2005/03/31 16:26:25
Put back some memory clobbers to narrow down why I now get panics.
Still have a few more archs to go.
Affected files ...
.. //depot/projects/smpng/sys/alpha/include/atomic.h#19 edit
.. //depot/projects/smpng/sys/amd64/include/atomic.h#13 edit
.. //depot/projects/smpng/sys/arm/include/atomic.h#8 edit
.. //depot/projects/smpng/sys/i386/include/atomic.h#29 edit
Differences ...
==== //depot/projects/smpng/sys/alpha/include/atomic.h#19 (text+ko) ====
@@ -61,7 +61,8 @@
"stl_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -76,7 +77,8 @@
"stl_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -91,7 +93,8 @@
"stl_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -106,7 +109,8 @@
"stl_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -122,7 +126,8 @@
"stl_c %1,%2\n\t" /* attempt to store */
"beq %1,1b\n" /* if the store failed, spin */
: "=&r"(result), "=&r"(temp), "=m" (*addr)
- : "m" (*addr));
+ : "m" (*addr)
+ : "memory");
#endif
return result;
@@ -139,7 +144,8 @@
"stq_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -154,7 +160,8 @@
"stq_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -169,7 +176,8 @@
"stq_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -184,7 +192,8 @@
"stq_c %0, %1\n\t" /* attempt to store */
"beq %0, 1b\n" /* spin if failed */
: "=&r" (temp), "=m" (*p)
- : "r" (v), "m" (*p));
+ : "r" (v), "m" (*p)
+ : "memory");
#endif
}
@@ -200,7 +209,8 @@
"stq_c %1,%2\n\t" /* attempt to store */
"beq %1,1b\n" /* if the store failed, spin */
: "=&r"(result), "=&r"(temp), "+m" (*addr)
- : "m" (*addr));
+ : "m" (*addr)
+ : "memory");
#endif
return result;
@@ -264,8 +274,6 @@
*p = v; \
}
-ATOMIC_STORE_LOAD(8)
-ATOMIC_STORE_LOAD(16)
ATOMIC_STORE_LOAD(32)
ATOMIC_STORE_LOAD(64)
@@ -291,7 +299,8 @@
"beq %0, 1b\n\t" /* if it failed, spin */
"2:\n"
: "=&r" (ret), "=m" (*p)
- : "r" ((long)(int)cmpval), "r" (newval), "m" (*p));
+ : "r" ((long)(int)cmpval), "r" (newval), "m" (*p)
+ : "memory");
#endif
return ret;
@@ -317,7 +326,8 @@
"beq %0, 1b\n\t" /* if it failed, spin */
"2:\n"
: "=&r" (ret), "=m" (*p)
- : "r" (cmpval), "r" (newval), "m" (*p));
+ : "r" (cmpval), "r" (newval), "m" (*p)
+ : "memory");
#endif
return ret;
@@ -372,8 +382,6 @@
#define atomic_subtract_char atomic_subtract_8
#define atomic_subtract_acq_char atomic_subtract_acq_8
#define atomic_subtract_rel_char atomic_subtract_rel_8
-#define atomic_load_acq_char atomic_load_acq_8
-#define atomic_store_rel_char atomic_store_rel_8
/* Operations on shorts. */
#define atomic_set_short atomic_set_16
@@ -388,8 +396,6 @@
#define atomic_subtract_short atomic_subtract_16
#define atomic_subtract_acq_short atomic_subtract_acq_16
#define atomic_subtract_rel_short atomic_subtract_rel_16
-#define atomic_load_acq_short atomic_load_acq_16
-#define atomic_store_rel_short atomic_store_rel_16
/* Operations on ints. */
#define atomic_set_int atomic_set_32
==== //depot/projects/smpng/sys/amd64/include/atomic.h#13 (text+ko) ====
@@ -160,7 +160,8 @@
: "+a" (res), /* 0 (result) */
"=m" (*dst) /* 1 */
: "r" (src), /* 2 */
- "m" (*dst)); /* 3 */
+ "m" (*dst) /* 3 */
+ : "memory");
return (res);
}
@@ -180,7 +181,8 @@
: "+a" (res), /* 0 (result) */
"=m" (*dst) /* 1 */
: "r" (src), /* 2 */
- "m" (*dst)); /* 3 */
+ "m" (*dst) /* 3 */
+ : "memory");
return (res);
}
==== //depot/projects/smpng/sys/arm/include/atomic.h#8 (text+ko) ====
@@ -75,7 +75,9 @@
__swp(uint32_t val, volatile uint32_t *ptr)
{
__asm __volatile("swp %0, %2, [%3]"
- : "=&r" (val), "=m" (*ptr) : "r" (val) , "r" (ptr), "m" (*ptr));
+ : "=&r" (val), "=m" (*ptr)
+ : "r" (val) , "r" (ptr), "m" (*ptr)
+ : "memory");
return (val);
}
==== //depot/projects/smpng/sys/i386/include/atomic.h#29 (text+ko) ====
@@ -143,7 +143,8 @@
: "+a" (res), /* 0 (result) */
"=m" (*dst) /* 1 */
: "r" (src), /* 2 */
- "m" (*dst)); /* 3 */
+ "m" (*dst) /* 3 */
+ : "memory");
return (res);
}
@@ -165,7 +166,8 @@
: "+a" (res), /* 0 (result) */
"=m" (*dst) /* 1 */
: "r" (src), /* 2 */
- "m" (*dst)); /* 3 */
+ "m" (*dst) /* 3 */
+ : "memory");
return (res);
}
@@ -294,15 +296,7 @@
ATOMIC_ACQ(add, int);
ATOMIC_ACQ(subtract, int);
-static __inline int
-atomic_cmpset_acq_int(volatile u_int *dst, u_int exp, u_int src)
-{
- int retval;
-
- retval = atomic_cmpset_int(dst, exp, src);
- __asm __volatile("" ::: "memory");
- return (retval);
-}
+#define atomic_cmpset_acq_int atomic_cmpset_int
/* Release variants are identical to the normal ones. */
#define atomic_set_rel_char atomic_set_char
More information about the p4-projects
mailing list