diff options
author | Ben Elliston <bje@au.ibm.com> | 2007-09-05 01:22:05 +0000 |
---|---|---|
committer | Ben Elliston <bje@gcc.gnu.org> | 2007-09-05 11:22:05 +1000 |
commit | ff90b22062c5a6f313aac95196323f14f1c2afbc (patch) | |
tree | 39b00ba25b3f6d817c9f75f0e5b4aeb99b742951 /gcc | |
parent | c1bb7f86700413fe89cb96f5c4121fd5010c0094 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/ppu_intrinsics.h | 8 |
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__ \ |