PERFORCE change 80465 for review
John Baldwin
jhb at FreeBSD.org
Mon Jul 18 17:21:24 GMT 2005
http://perforce.freebsd.org/chv.cgi?CH=80465
Change 80465 by jhb at jhb_slimer on 2005/07/18 17:20:49
Merge in some fixes made possible by atomic_foo_ptr().
Affected files ...
.. //depot/projects/smpng/sys/arm/include/atomic.h#16 edit
.. //depot/projects/smpng/sys/arm/include/endian.h#12 edit
.. //depot/projects/smpng/sys/sparc64/include/cpufunc.h#25 edit
Differences ...
==== //depot/projects/smpng/sys/arm/include/atomic.h#16 (text+ko) ====
@@ -77,8 +77,10 @@
static __inline uint32_t
__swp(uint32_t val, volatile uint32_t *ptr)
{
- __asm __volatile("swp %0, %1, [%2]"
- : "=&r" (val) : "r" (val) , "r" (ptr) : "memory");
+ __asm __volatile("swp %0, %2, [%3]"
+ : "=&r" (val), "=m" (*ptr)
+ : "r" (val) , "r" (ptr), "m" (*ptr)
+ : "memory");
return (val);
}
==== //depot/projects/smpng/sys/arm/include/endian.h#12 (text+ko) ====
@@ -100,11 +100,10 @@
__bswap16_var(__uint16_t v)
{
__asm __volatile(
- "mov %0, %1, ror #8\n"
+ "mov %0, %0, ror #8\n"
"orr %0, %0, %0, lsr #16\n"
"bic %0, %0, %0, lsl #16"
- : "=r" (v)
- : "0" (v));
+ : "+r" (v));
return (v);
}
==== //depot/projects/smpng/sys/sparc64/include/cpufunc.h#25 (text+ko) ====
@@ -62,15 +62,17 @@
#define casa(rs1, rs2, rd, asi) ({ \
u_int __rd = (uint32_t)(rd); \
- __asm __volatile("casa [%1] %2, %3, %0" \
- : "+r" (__rd) : "r" (rs1), "n" (asi), "r" (rs2)); \
+ __asm __volatile("casa [%2] %3, %4, %0" \
+ : "+r" (__rd), "=m" (*rs1) \
+ : "r" (rs1), "n" (asi), "r" (rs2), "m" (*rs1)); \
__rd; \
})
#define casxa(rs1, rs2, rd, asi) ({ \
u_long __rd = (uint64_t)(rd); \
- __asm __volatile("casxa [%1] %2, %3, %0" \
- : "+r" (__rd) : "r" (rs1), "n" (asi), "r" (rs2)); \
+ __asm __volatile("casxa [%2] %3, %4, %0" \
+ : "+r" (__rd), "=m" (*rs1) \
+ : "r" (rs1), "n" (asi), "r" (rs2), "m" (*rs1)); \
__rd; \
})
More information about the p4-projects
mailing list