diff options
Diffstat (limited to 'include/asm-x86')
-rw-r--r-- | include/asm-x86/processor.h | 92 |
1 files changed, 42 insertions, 50 deletions
diff --git a/include/asm-x86/processor.h b/include/asm-x86/processor.h index 80c50020ef60..ea222cfe7b00 100644 --- a/include/asm-x86/processor.h +++ b/include/asm-x86/processor.h @@ -226,64 +226,37 @@ struct orig_ist { unsigned long ist[7]; }; -#ifdef CONFIG_X86_32 -struct i387_fsave_struct { - long cwd; - long swd; - long twd; - long fip; - long fcs; - long foo; - long fos; - long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ - long status; /* software status information */ -}; - -struct i387_fxsave_struct { - unsigned short cwd; - unsigned short swd; - unsigned short twd; - unsigned short fop; - long fip; - long fcs; - long foo; - long fos; - long mxcsr; - long mxcsr_mask; - long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ - long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */ - long padding[56]; -} __attribute__((aligned(16))); +#define MXCSR_DEFAULT 0x1f80 -struct i387_soft_struct { - long cwd; - long swd; - long twd; - long fip; - long fcs; - long foo; - long fos; - long st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ - unsigned char ftop, changed, lookahead, no_update, rm, alimit; - struct info *info; - unsigned long entry_eip; -}; - -union i387_union { - struct i387_fsave_struct fsave; - struct i387_fxsave_struct fxsave; - struct i387_soft_struct soft; +struct i387_fsave_struct { + u32 cwd; + u32 swd; + u32 twd; + u32 fip; + u32 fcs; + u32 foo; + u32 fos; + u32 st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ + u32 status; /* software status information */ }; -# include "processor_32.h" -#else struct i387_fxsave_struct { u16 cwd; u16 swd; u16 twd; u16 fop; - u64 rip; - u64 rdp; + union { + struct { + u64 rip; + u64 rdp; + }; + struct { + u32 fip; + u32 fcs; + u32 foo; + u32 fos; + }; + }; u32 mxcsr; u32 mxcsr_mask; u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ @@ -291,10 +264,29 @@ struct i387_fxsave_struct { u32 padding[24]; } __attribute__((aligned(16))); +struct i387_soft_struct { + u32 cwd; + u32 swd; + u32 twd; + u32 fip; + u32 fcs; + u32 foo; + u32 fos; + u32 st_space[20]; /* 8*10 bytes for each FP-reg = 80 bytes */ + u8 ftop, changed, lookahead, no_update, rm, alimit; + struct info *info; + u32 entry_eip; +}; + union i387_union { + struct i387_fsave_struct fsave; struct i387_fxsave_struct fxsave; + struct i387_soft_struct soft; }; +#ifdef CONFIG_X86_32 +# include "processor_32.h" +#else # include "processor_64.h" #endif |