+2007-09-05 Ben Elliston <bje@au.ibm.com>
+
+ * config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint,
+ not `m' for *ptrp.
+ (__stdcx): Make asm volatile.
+ (__stwcx, __stdcx): Return only 0 or 1.
+
2007-09-05 Jan Hubicka <jh@suse.cz>
Revert:
doublewordsize *ptrp = (doublewordsize*)(void*)(base); \
__asm__ volatile ("ldarx %0,%y1" \
: "=r" (result) \
- : "m" (*ptrp)); \
+ : "Z" (*ptrp)); \
result; })
#endif /* __powerpc64__ */
: "=r" (result), \
"=Z" (*ptrp) \
: "r" (value) : "cr0"); \
- (result & 0x20000000); })
+ ((result & 0x20000000) >> 29); })
#ifdef __powerpc64__
({unsigned long long result; \
typedef struct {char a[8];} doublewordsize; \
doublewordsize *ptrp = (doublewordsize*)(void*)(base); \
- __asm__ ("stdcx. %2,%y1\n" \
+ __asm__ volatile ("stdcx. %2,%y1\n" \
"\tmfocrf %0,0x80" \
: "=r" (result), \
"=Z" (*ptrp) \
: "r" (value) : "cr0"); \
- (result & 0x20000000); })
+ ((result & 0x20000000) >> 29); })
#endif /* __powerpc64__ */
#define __mffs() __extension__ \