diff options
Diffstat (limited to 'include/asm-x86/system.h')
-rw-r--r-- | include/asm-x86/system.h | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h index ee32ef9367f4..9cff02ffe6c2 100644 --- a/include/asm-x86/system.h +++ b/include/asm-x86/system.h | |||
@@ -20,8 +20,8 @@ | |||
20 | #ifdef CONFIG_X86_32 | 20 | #ifdef CONFIG_X86_32 |
21 | 21 | ||
22 | struct task_struct; /* one of the stranger aspects of C forward declarations */ | 22 | struct task_struct; /* one of the stranger aspects of C forward declarations */ |
23 | extern struct task_struct *FASTCALL(__switch_to(struct task_struct *prev, | 23 | struct task_struct *__switch_to(struct task_struct *prev, |
24 | struct task_struct *next)); | 24 | struct task_struct *next); |
25 | 25 | ||
26 | /* | 26 | /* |
27 | * Saving eflags is important. It switches not only IOPL between tasks, | 27 | * Saving eflags is important. It switches not only IOPL between tasks, |
@@ -130,10 +130,7 @@ extern void load_gs_index(unsigned); | |||
130 | "movl %k1, %%" #seg "\n\t" \ | 130 | "movl %k1, %%" #seg "\n\t" \ |
131 | "jmp 2b\n" \ | 131 | "jmp 2b\n" \ |
132 | ".previous\n" \ | 132 | ".previous\n" \ |
133 | ".section __ex_table,\"a\"\n\t" \ | 133 | _ASM_EXTABLE(1b,3b) \ |
134 | _ASM_ALIGN "\n\t" \ | ||
135 | _ASM_PTR " 1b,3b\n" \ | ||
136 | ".previous" \ | ||
137 | : :"r" (value), "r" (0)) | 134 | : :"r" (value), "r" (0)) |
138 | 135 | ||
139 | 136 | ||
@@ -214,12 +211,10 @@ static inline unsigned long native_read_cr4_safe(void) | |||
214 | /* This could fault if %cr4 does not exist. In x86_64, a cr4 always | 211 | /* This could fault if %cr4 does not exist. In x86_64, a cr4 always |
215 | * exists, so it will never fail. */ | 212 | * exists, so it will never fail. */ |
216 | #ifdef CONFIG_X86_32 | 213 | #ifdef CONFIG_X86_32 |
217 | asm volatile("1: mov %%cr4, %0 \n" | 214 | asm volatile("1: mov %%cr4, %0\n" |
218 | "2: \n" | 215 | "2:\n" |
219 | ".section __ex_table,\"a\" \n" | 216 | _ASM_EXTABLE(1b,2b) |
220 | ".long 1b,2b \n" | 217 | : "=r" (val), "=m" (__force_order) : "0" (0)); |
221 | ".previous \n" | ||
222 | : "=r" (val), "=m" (__force_order) : "0" (0)); | ||
223 | #else | 218 | #else |
224 | val = native_read_cr4(); | 219 | val = native_read_cr4(); |
225 | #endif | 220 | #endif |
@@ -276,9 +271,9 @@ static inline void native_wbinvd(void) | |||
276 | 271 | ||
277 | #endif /* __KERNEL__ */ | 272 | #endif /* __KERNEL__ */ |
278 | 273 | ||
279 | static inline void clflush(void *__p) | 274 | static inline void clflush(volatile void *__p) |
280 | { | 275 | { |
281 | asm volatile("clflush %0" : "+m" (*(char __force *)__p)); | 276 | asm volatile("clflush %0" : "+m" (*(volatile char __force *)__p)); |
282 | } | 277 | } |
283 | 278 | ||
284 | #define nop() __asm__ __volatile__ ("nop") | 279 | #define nop() __asm__ __volatile__ ("nop") |