diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-06-25 00:18:58 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-08 07:10:23 -0400 |
commit | d338c73c39a6ed0d07fe3bb07c7f12fff0dd237d (patch) | |
tree | 0b285466af10f7e6e3d2c2fea87309b7a0e9b984 /include | |
parent | bea41808efdd8815435376209f23f406f8bf435f (diff) |
x86: add memory clobber to save/loadsegment
Add "memory" clobbers to savesegment and loadsegment, since they can
affect memory accesses and we never want the compiler to reorder them
with respect to memory references.
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Cc: xen-devel <xen-devel@lists.xensource.com>
Cc: Stephen Tweedie <sct@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-x86/system.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h index bacfceedf1d2..f686aa6abfe9 100644 --- a/include/asm-x86/system.h +++ b/include/asm-x86/system.h | |||
@@ -153,14 +153,14 @@ extern void load_gs_index(unsigned); | |||
153 | "jmp 2b\n" \ | 153 | "jmp 2b\n" \ |
154 | ".previous\n" \ | 154 | ".previous\n" \ |
155 | _ASM_EXTABLE(1b,3b) \ | 155 | _ASM_EXTABLE(1b,3b) \ |
156 | : :"r" (value), "r" (0)) | 156 | : :"r" (value), "r" (0) : "memory") |
157 | 157 | ||
158 | 158 | ||
159 | /* | 159 | /* |
160 | * Save a segment register away | 160 | * Save a segment register away |
161 | */ | 161 | */ |
162 | #define savesegment(seg, value) \ | 162 | #define savesegment(seg, value) \ |
163 | asm volatile("mov %%" #seg ",%0":"=rm" (value)) | 163 | asm("mov %%" #seg ",%0":"=rm" (value) : : "memory") |
164 | 164 | ||
165 | static inline unsigned long get_limit(unsigned long segment) | 165 | static inline unsigned long get_limit(unsigned long segment) |
166 | { | 166 | { |