summary refs log tree commit diff
path: root/include/asm-x86/system.h
diff options
context:
space:
mode:
authorVegard Nossum <vegard.nossum@gmail.com>2008-09-14 19:03:53 +0200
committerIngo Molnar <mingo@elte.hu>2008-10-13 10:21:12 +0200
commit33f8c40a30ae99e971d068c9ec6088e713c46f5f (patch)
treefa824ccaf601c7ac388dbd5f5caa03c96c8bba26 /include/asm-x86/system.h
parent3e6de5a393661c5cdabe44115e93bcbde6a742fc (diff)
downloadlinux-33f8c40a30ae99e971d068c9ec6088e713c46f5f.tar.gz
x86: add memory clobber in switch_to()
Segment registers are reloaded, so we should add a memory clobber. The
generated assembly code is identical in my tests, but this doesn't mean
it is necessarily true for all configurations/compilers.

x86_64 already has the memory clobber.

Signed-off-by: Vegard Nossum <vegard.nossum@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/system.h')
-rw-r--r--include/asm-x86/system.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h
index 34505dd7b24d..b20c894660f9 100644
--- a/include/asm-x86/system.h
+++ b/include/asm-x86/system.h
@@ -64,7 +64,10 @@ do {									\
 		       							\
 		       /* regparm parameters for __switch_to(): */	\
 		       [prev]     "a" (prev),				\
-		       [next]     "d" (next));				\
+		       [next]     "d" (next)				\
+									\
+		     : /* reloaded segment registers */			\
+			"memory");					\
 } while (0)
 
 /*