diff options
author | Stas Sergeev <stsp@aknet.ru> | 2006-12-06 20:14:01 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:01 -0500 |
commit | be44d2aabce2d62f72d5751d1871b6212bf7a1c7 (patch) | |
tree | 3f190dd5b5747ee83b50c4596b4801ce6c6b551c /arch/i386/kernel/asm-offsets.c | |
parent | bb81a09e55eaf7e5f798468ab971469b6f66a259 (diff) |
[PATCH] i386: espfix cleanup
Clean up the espfix code:
- Introduced PER_CPU() macro to be used from asm
- Introduced GET_DESC_BASE() macro to be used from asm
- Rewrote the fixup code in asm, as calling a C code with the altered %ss
appeared to be unsafe
- No longer altering the stack from a .fixup section
- 16bit per-cpu stack is no longer used, instead the stack segment base
is patched the way so that the high word of the kernel and user %esp
are the same.
- Added the limit-patching for the espfix segment. (Chuck Ebbert)
[jeremy@goop.org: use the x86 scaling addressing mode rather than shifting]
Signed-off-by: Stas Sergeev <stsp@aknet.ru>
Signed-off-by: Andi Kleen <ak@suse.de>
Acked-by: Zachary Amsden <zach@vmware.com>
Acked-by: Chuck Ebbert <76306.1226@compuserve.com>
Acked-by: Jan Beulich <jbeulich@novell.com>
Cc: Andi Kleen <ak@muc.de>
Signed-off-by: Jeremy Fitzhardinge <jeremy@goop.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Diffstat (limited to 'arch/i386/kernel/asm-offsets.c')
-rw-r--r-- | arch/i386/kernel/asm-offsets.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/i386/kernel/asm-offsets.c b/arch/i386/kernel/asm-offsets.c index c80271f8f084..e94d910a28bd 100644 --- a/arch/i386/kernel/asm-offsets.c +++ b/arch/i386/kernel/asm-offsets.c | |||
@@ -58,6 +58,11 @@ void foo(void) | |||
58 | OFFSET(TI_sysenter_return, thread_info, sysenter_return); | 58 | OFFSET(TI_sysenter_return, thread_info, sysenter_return); |
59 | BLANK(); | 59 | BLANK(); |
60 | 60 | ||
61 | OFFSET(GDS_size, Xgt_desc_struct, size); | ||
62 | OFFSET(GDS_address, Xgt_desc_struct, address); | ||
63 | OFFSET(GDS_pad, Xgt_desc_struct, pad); | ||
64 | BLANK(); | ||
65 | |||
61 | OFFSET(EXEC_DOMAIN_handler, exec_domain, handler); | 66 | OFFSET(EXEC_DOMAIN_handler, exec_domain, handler); |
62 | OFFSET(RT_SIGFRAME_sigcontext, rt_sigframe, uc.uc_mcontext); | 67 | OFFSET(RT_SIGFRAME_sigcontext, rt_sigframe, uc.uc_mcontext); |
63 | BLANK(); | 68 | BLANK(); |