aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBen Elliston <bje@au.ibm.com>2007-09-05 01:22:05 +0000
committerBen Elliston <bje@gcc.gnu.org>2007-09-05 11:22:05 +1000
commitff90b22062c5a6f313aac95196323f14f1c2afbc (patch)
tree39b00ba25b3f6d817c9f75f0e5b4aeb99b742951 /gcc
parentc1bb7f86700413fe89cb96f5c4121fd5010c0094 (diff)
downloadgcc-ff90b22062c5a6f313aac95196323f14f1c2afbc.zip
gcc-ff90b22062c5a6f313aac95196323f14f1c2afbc.tar.gz
gcc-ff90b22062c5a6f313aac95196323f14f1c2afbc.tar.bz2
ppu_intrinsics.h (__ldarx): Use `Z' constraint, not `m' for *ptrp.
* config/rs6000/ppu_intrinsics.h (__ldarx): Use `Z' constraint, not `m' for *ptrp. (__stdcx): Make asm volatile. (__stwcx, __stdcx): Return only 0 or 1. From-SVN: r128116
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/rs6000/ppu_intrinsics.h8
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 59fbd34..acede3b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+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:
diff --git a/gcc/config/rs6000/ppu_intrinsics.h b/gcc/config/rs6000/ppu_intrinsics.h
index 7a7551e..2bfe463 100644
--- a/gcc/config/rs6000/ppu_intrinsics.h
+++ b/gcc/config/rs6000/ppu_intrinsics.h
@@ -356,7 +356,7 @@ typedef int __V4SI __attribute__((vector_size(16)));
doublewordsize *ptrp = (doublewordsize*)(void*)(base); \
__asm__ volatile ("ldarx %0,%y1" \
: "=r" (result) \
- : "m" (*ptrp)); \
+ : "Z" (*ptrp)); \
result; })
#endif /* __powerpc64__ */
@@ -369,7 +369,7 @@ typedef int __V4SI __attribute__((vector_size(16)));
: "=r" (result), \
"=Z" (*ptrp) \
: "r" (value) : "cr0"); \
- (result & 0x20000000); })
+ ((result & 0x20000000) >> 29); })
#ifdef __powerpc64__
@@ -377,12 +377,12 @@ typedef int __V4SI __attribute__((vector_size(16)));
({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__ \