From f5182dd71d6a08547a57a0d3b4faf6ff6c751617 Mon Sep 17 00:00:00 2001 From: hboehm Date: Tue, 19 Aug 2008 19:37:13 +0000 Subject: [PATCH] 2008-08-19 Hans Boehm (really Thiemo Seufer) * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz instruction. 2008-08-19 Hans Boehm (really Sebastian Siewior) * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__. --- ChangeLog | 7 +++++++ src/atomic_ops/sysdeps/gcc/powerpc.h | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 98b47c3..058dfbb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-08-18 Hans Boehm (really Thiemo Seufer) + * src/atomic_ops/sysdeps/gcc/powerpc.h: Add %U1 (update) to lwz + instruction. + +2008-08-18 Hans Boehm (really Sebastian Siewior) + * src/atomic_ops/sysdeps/gcc/powerpc.h: Consider __NO_LWSYNC__. + 2008-07-24 Hans Boehm (really Ivan Maidanski) * src/atomic_ops/sysdeps/ao_t_is_int.h, src/atomic_ops.h: Add parentheses around addr arg for various functions. diff --git a/src/atomic_ops/sysdeps/gcc/powerpc.h b/src/atomic_ops/sysdeps/gcc/powerpc.h index e9dcf78..db63c7a 100644 --- a/src/atomic_ops/sysdeps/gcc/powerpc.h +++ b/src/atomic_ops/sysdeps/gcc/powerpc.h @@ -48,7 +48,11 @@ AO_nop_full() AO_INLINE void AO_lwsync() { +#ifdef __NO_LWSYNC__ + __asm__ __volatile__("sync" : : : "memory"); +#else __asm__ __volatile__("lwsync" : : : "memory"); +#endif } #define AO_nop_write() AO_lwsync() @@ -92,7 +96,7 @@ AO_load_acquire(const volatile AO_t *addr) /* registers. I always got "impossible constraint" when I */ /* tried the "y" constraint. */ __asm__ __volatile__ ( - "lwz%X1 %0,%1\n" + "lwz%U1%X1 %0,%1\n" "cmpw cr7,%0,%0\n" "bne- cr7,1f\n" "1: isync\n" -- 2.49.0