On Thu, 2010-07-08 at 16:08 +1000, Benjamin Herrenschmidt wrote:
On Fri, 2010-06-25 at 11:56 +0200, Jakub Jelinek wrote:
static inline void sync(void)
diff --git a/arch/powerpc/include/asm/atomic.h
b/arch/powerpc/include/asm/atomic.h
index b8f152e..288d8b2 100644
---
On Fri, Jul 30, 2010 at 05:04:46PM +1000, Benjamin Herrenschmidt wrote:
On Thu, 2010-07-08 at 16:08 +1000, Benjamin Herrenschmidt wrote:
On Fri, 2010-06-25 at 11:56 +0200, Jakub Jelinek wrote:
static inline void sync(void)
diff --git a/arch/powerpc/include/asm/atomic.h
On Fri, 2010-07-30 at 09:19 +0200, Jakub Jelinek wrote:
So, in short, I'm afraid m needs to be used only for GCC 4.6+
(and, vendors which backported the inline-asm handling changes
to their older gcc would need to adjust for their gccs too).
When m isn't used, it just leads to potential code
On Fri, 2010-06-25 at 11:56 +0200, Jakub Jelinek wrote:
static inline void sync(void)
diff --git a/arch/powerpc/include/asm/atomic.h
b/arch/powerpc/include/asm/atomic.h
index b8f152e..288d8b2 100644
--- a/arch/powerpc/include/asm/atomic.h
+++ b/arch/powerpc/include/asm/atomic.h
@@ -19,14
On Fri, 2010-06-25 at 13:18 +0200, Jakub Jelinek wrote:
On Fri, Jun 25, 2010 at 01:08:23PM +0200, Segher Boessenkool wrote:
- stw%U0%X0 %L2,%1
- : =m (*ptep), =m (*((unsigned char *)ptep+4))
+ stw%U1%X1 %L2,%1
+ : =m (*ptep), =m (*((unsigned char *)ptep+4))
: r
- stw%U0%X0 %L2,%1
- : =m (*ptep), =m (*((unsigned char *)ptep+4))
+ stw%U1%X1 %L2,%1
+ : =m (*ptep), =m (*((unsigned char *)ptep+4))
: r (pte) : memory);
This still isn't correct -- the constraint says that a byte
is written, but the insn changes
Hi!
I've recently changed gcc handling of inline-asm, such that it by default
disallows side-effects on memory operands of inline-asm and only allows
them if or constraint is present for the operand.
See http://gcc.gnu.org/PR44492 and http://bugzilla.redhat.com/602359
for details. The change
- stw%U0%X0 %L2,%1
- : =m (*ptep), =m (*((unsigned char *)ptep+4))
+ stw%U1%X1 %L2,%1
+ : =m (*ptep), =m (*((unsigned char *)ptep+4))
: r (pte) : memory);
This still isn't correct -- the constraint says that a byte
is written, but the insn changes a
On Fri, Jun 25, 2010 at 01:08:23PM +0200, Segher Boessenkool wrote:
- stw%U0%X0 %L2,%1
- : =m (*ptep), =m (*((unsigned char *)ptep+4))
+ stw%U1%X1 %L2,%1
+ : =m (*ptep), =m (*((unsigned char *)ptep+4))
: r (pte) : memory);
This still isn't correct -- the