aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-x86/i387.h
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2008-07-29 13:29:25 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-30 13:49:27 -0400
commitc37b5efea43f9e500363f9973dd00e3d2cdcc685 (patch)
tree9ce635f1672099dafcd78e535b4ea18d80235d8f /include/asm-x86/i387.h
parentbdd8caba5ed5bb7ee21c9f061597284ffeb280bf (diff)
x86, xsave: save/restore the extended state context in sigframe
On cpu's supporting xsave/xrstor, fpstate pointer in the sigcontext, will include the extended state information along with fpstate information. Presence of extended state information is indicated by the presence of FP_XSTATE_MAGIC1 at fpstate.sw_reserved.magic1 and FP_XSTATE_MAGIC2 at fpstate + (fpstate.sw_reserved.extended_size - FP_XSTATE_MAGIC2_SIZE). Extended feature bit mask that is saved in the memory layout is represented by the fpstate.sw_reserved.xstate_bv For RT signal frames, UC_FP_XSTATE in the uc_flags also indicate the presence of extended state information in the sigcontext's fpstate pointer. 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.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/asm-x86/i387.h b/include/asm-x86/i387.h
index dc3745e8040a..d3dda7161954 100644
--- a/include/asm-x86/i387.h
+++ b/include/asm-x86/i387.h
@@ -31,8 +31,10 @@ extern user_regset_active_fn fpregs_active, xfpregs_active;
31extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get; 31extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get;
32extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set; 32extern user_regset_set_fn fpregs_set, xfpregs_set, fpregs_soft_set;
33 33
34extern struct _fpx_sw_bytes fx_sw_reserved;
34#ifdef CONFIG_IA32_EMULATION 35#ifdef CONFIG_IA32_EMULATION
35extern unsigned int sig_xstate_ia32_size; 36extern unsigned int sig_xstate_ia32_size;
37extern struct _fpx_sw_bytes fx_sw_reserved_ia32;
36struct _fpstate_ia32; 38struct _fpstate_ia32;
37struct _xstate_ia32; 39struct _xstate_ia32;
38extern int save_i387_xstate_ia32(void __user *buf); 40extern int save_i387_xstate_ia32(void __user *buf);
@@ -104,7 +106,7 @@ static inline void clear_fpu_state(struct task_struct *tsk)
104 X86_FEATURE_FXSAVE_LEAK); 106 X86_FEATURE_FXSAVE_LEAK);
105} 107}
106 108
107static inline int save_i387_checking(struct i387_fxsave_struct __user *fx) 109static inline int fxsave_user(struct i387_fxsave_struct __user *fx)
108{ 110{
109 int err; 111 int err;
110 112