#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 */