aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-x86/system.h')
-rw-r--r--include/asm-x86/system.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/include/asm-x86/system.h b/include/asm-x86/system.h
index d0803f8c70c..3740bada097 100644
--- a/include/asm-x86/system.h
+++ b/include/asm-x86/system.h
@@ -39,6 +39,27 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \
39#define set_limit(ldt, limit) _set_limit(((char *)&(ldt)) , ((limit)-1)) 39#define set_limit(ldt, limit) _set_limit(((char *)&(ldt)) , ((limit)-1))
40 40
41/* 41/*
42 * Load a segment. Fall back on loading the zero
43 * segment if something goes wrong..
44 */
45#define loadsegment(seg, value) \
46 asm volatile("\n" \
47 "1:\t" \
48 "movl %k0,%%" #seg "\n" \
49 "2:\n" \
50 ".section .fixup,\"ax\"\n" \
51 "3:\t" \
52 "movl %k1, %%" #seg "\n\t" \
53 "jmp 2b\n" \
54 ".previous\n" \
55 ".section __ex_table,\"a\"\n\t" \
56 _ASM_ALIGN "\n\t" \
57 _ASM_PTR " 1b,3b\n" \
58 ".previous" \
59 : :"r" (value), "r" (0))
60
61
62/*
42 * Save a segment register away 63 * Save a segment register away
43 */ 64 */
44#define savesegment(seg, value) \ 65#define savesegment(seg, value) \