| #ifndef _ASM_X86_SIGCONTEXT32_H |
| #define _ASM_X86_SIGCONTEXT32_H |
| |
| #include <linux/types.h> |
| |
| /* signal context for 32bit programs. */ |
| |
| #define X86_FXSR_MAGIC 0x0000 |
| |
| struct _fpreg { |
| unsigned short significand[4]; |
| unsigned short exponent; |
| }; |
| |
| struct _fpxreg { |
| unsigned short significand[4]; |
| unsigned short exponent; |
| unsigned short padding[3]; |
| }; |
| |
| struct _xmmreg { |
| __u32 element[4]; |
| }; |
| |
| /* FSAVE frame with extensions */ |
| struct _fpstate_ia32 { |
| /* Regular FPU environment */ |
| __u32 cw; |
| __u32 sw; |
| __u32 tag; /* not compatible to 64bit twd */ |
| __u32 ipoff; |
| __u32 cssel; |
| __u32 dataoff; |
| __u32 datasel; |
| struct _fpreg _st[8]; |
| unsigned short status; |
| unsigned short magic; /* 0xffff = regular FPU data only */ |
| |
| /* FXSR FPU environment */ |
| __u32 _fxsr_env[6]; |
| __u32 mxcsr; |
| __u32 reserved; |
| struct _fpxreg _fxsr_st[8]; |
| struct _xmmreg _xmm[8]; /* It's actually 16 */ |
| __u32 padding[44]; |
| union { |
| __u32 padding2[12]; |
| struct _fpx_sw_bytes sw_reserved; |
| }; |
| }; |
| |
| struct sigcontext_ia32 { |
| unsigned short gs, __gsh; |
| unsigned short fs, __fsh; |
| unsigned short es, __esh; |
| unsigned short ds, __dsh; |
| unsigned int di; |
| unsigned int si; |
| unsigned int bp; |
| unsigned int sp; |
| unsigned int bx; |
| unsigned int dx; |
| unsigned int cx; |
| unsigned int ax; |
| unsigned int trapno; |
| unsigned int err; |
| unsigned int ip; |
| unsigned short cs, __csh; |
| unsigned int flags; |
| unsigned int sp_at_signal; |
| unsigned short ss, __ssh; |
| unsigned int fpstate; /* really (struct _fpstate_ia32 *) */ |
| unsigned int oldmask; |
| unsigned int cr2; |
| }; |
| |
| #endif /* _ASM_X86_SIGCONTEXT32_H */ |