aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/include/asm/system.h28
1 files changed, 15 insertions, 13 deletions
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h
index 537395a2877a..022a84386de8 100644
--- a/arch/x86/include/asm/system.h
+++ b/arch/x86/include/asm/system.h
@@ -155,19 +155,21 @@ extern void native_load_gs_index(unsigned);
155 * Load a segment. Fall back on loading the zero 155 * Load a segment. Fall back on loading the zero
156 * segment if something goes wrong.. 156 * segment if something goes wrong..
157 */ 157 */
158#define loadsegment(seg, value) \ 158#define loadsegment(seg, value) \
159do { \ 159do { \
160 unsigned short __val = value; \ 160 unsigned short __val = (value); \
161 asm volatile("\n" \ 161 \
162 "1:\t" \ 162 asm volatile(" \n" \
163 "movl %k0,%%" #seg "\n" \ 163 "1: movl %k0,%%" #seg " \n" \
164 ".section .fixup,\"ax\"\n" \ 164 \
165 "2:\t" \ 165 ".section .fixup,\"ax\" \n" \
166 "xorl %k0,%k0\n\t" \ 166 "2: xorl %k0,%k0 \n" \
167 "jmp 1b\n" \ 167 " jmp 1b \n" \
168 ".previous\n" \ 168 ".previous \n" \
169 _ASM_EXTABLE(1b, 2b) \ 169 \
170 : "+r" (__val) : : "memory"); \ 170 _ASM_EXTABLE(1b, 2b) \
171 \
172 : "+r" (__val) : : "memory"); \
171} while (0) 173} while (0)
172 174
173/* 175/*