diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-07-29 13:29:21 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-30 13:49:25 -0400 |
commit | 3c1c7f101426cb2ecc79d817a8a65928965fc860 (patch) | |
tree | 55a2b7c5ccb28ea38bf82f7d799447980e2126c7 /include/asm-x86/i387.h | |
parent | b359e8a434cc3d09847010fc4aeccf48d69740e4 (diff) |
x86, xsave: dynamically allocate sigframes fpstate instead of static allocation
dynamically allocate fpstate on the stack, instead of static allocation
in the current sigframe layout on the user stack. This will allow the
fpstate structure to grow in the future, which includes extended state
information supporting xsave/xrstor.
signal handlers will be able to access the fpstate pointer from the
sigcontext structure asusual, with no change. For the non RT sigframe's
(which are supported only for 32bit apps), current static fpstate layout
in the sigframe will be unused(so that we don't change the extramask[]
offset in the sigframe and thus prevent breaking app's which modify
extramask[]).
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/asm-x86/i387.h')
-rw-r--r-- | include/asm-x86/i387.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/asm-x86/i387.h b/include/asm-x86/i387.h index a6d256f4ac81..36dca8db1660 100644 --- a/include/asm-x86/i387.h +++ b/include/asm-x86/i387.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
21 | #include <asm/xsave.h> | 21 | #include <asm/xsave.h> |
22 | 22 | ||
23 | extern unsigned int sig_xstate_size; | ||
23 | extern void fpu_init(void); | 24 | extern void fpu_init(void); |
24 | extern void mxcsr_feature_mask_init(void); | 25 | extern void mxcsr_feature_mask_init(void); |
25 | extern int init_fpu(struct task_struct *child); | 26 | extern int init_fpu(struct task_struct *child); |
@@ -31,6 +32,7 @@ extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get; | |||
31 | extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set; | 32 | extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set; |
32 | 33 | ||
33 | #ifdef CONFIG_IA32_EMULATION | 34 | #ifdef CONFIG_IA32_EMULATION |
35 | extern unsigned int sig_xstate_ia32_size; | ||
34 | struct _fpstate_ia32; | 36 | struct _fpstate_ia32; |
35 | extern int save_i387_ia32(struct _fpstate_ia32 __user *buf); | 37 | extern int save_i387_ia32(struct _fpstate_ia32 __user *buf); |
36 | extern int restore_i387_ia32(struct _fpstate_ia32 __user *buf); | 38 | extern int restore_i387_ia32(struct _fpstate_ia32 __user *buf); |