powerpc: Add "memory" attribute for mfmsr()
authorTiejun Chen <tiejun.chen@windriver.com>
Wed, 11 Jul 2012 04:22:46 +0000 (14:22 +1000)
committerWilly Tarreau <w@1wt.eu>
Sun, 7 Oct 2012 21:38:00 +0000 (23:38 +0200)
commit b416c9a10baae6a177b4f9ee858b8d309542fbef upstream.

Add "memory" attribute in inline assembly language as a compiler
barrier to make sure 4.6.x GCC don't reorder mfmsr().

Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
arch/powerpc/include/asm/reg.h

index 32a7c308e47a976a1b160b3d167ec0f7f8b2d8f3..6ce44dd8384136fde33b9627223430f8c54d096e 100644 (file)
 /* Macros for setting and retrieving special purpose registers */
 #ifndef __ASSEMBLY__
 #define mfmsr()                ({unsigned long rval; \
-                       asm volatile("mfmsr %0" : "=r" (rval)); rval;})
+                       asm volatile("mfmsr %0" : "=r" (rval) : \
+                                               : "memory"); rval;})
 #ifdef CONFIG_PPC64
 #define __mtmsrd(v, l) asm volatile("mtmsrd %0," __stringify(l) \
                                     : : "r" (v) : "memory")