1 From b416c9a10baae6a177b4f9ee858b8d309542fbef Mon Sep 17 00:00:00 2001
2 From: Tiejun Chen <tiejun.chen@windriver.com>
3 Date: Wed, 11 Jul 2012 14:22:46 +1000
4 Subject: powerpc: Add "memory" attribute for mfmsr()
6 From: Tiejun Chen <tiejun.chen@windriver.com>
8 commit b416c9a10baae6a177b4f9ee858b8d309542fbef upstream.
10 Add "memory" attribute in inline assembly language as a compiler
11 barrier to make sure 4.6.x GCC don't reorder mfmsr().
13 Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
14 Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
15 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18 arch/powerpc/include/asm/reg.h | 3 ++-
19 1 file changed, 2 insertions(+), 1 deletion(-)
21 --- a/arch/powerpc/include/asm/reg.h
22 +++ b/arch/powerpc/include/asm/reg.h
24 /* Macros for setting and retrieving special purpose registers */
26 #define mfmsr() ({unsigned long rval; \
27 - asm volatile("mfmsr %0" : "=r" (rval)); rval;})
28 + asm volatile("mfmsr %0" : "=r" (rval) : \
29 + : "memory"); rval;})
30 #ifdef CONFIG_PPC_BOOK3S_64
31 #define __mtmsrd(v, l) asm volatile("mtmsrd %0," __stringify(l) \
32 : : "r" (v) : "memory")