2005-04-17 02:20:36 +04:00
# ifndef _SIGCONTEXT32_H
# define _SIGCONTEXT32_H 1
/* 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 [ 56 ] ;
} ;
struct sigcontext_ia32 {
unsigned short gs , __gsh ;
unsigned short fs , __fsh ;
unsigned short es , __esh ;
unsigned short ds , __dsh ;
2008-01-30 15:30:56 +03:00
unsigned int di ;
unsigned int si ;
unsigned int bp ;
unsigned int sp ;
unsigned int bx ;
unsigned int dx ;
unsigned int cx ;
unsigned int ax ;
2005-04-17 02:20:36 +04:00
unsigned int trapno ;
unsigned int err ;
2008-01-30 15:30:56 +03:00
unsigned int ip ;
2005-04-17 02:20:36 +04:00
unsigned short cs , __csh ;
2008-01-30 15:30:56 +03:00
unsigned int flags ;
unsigned int sp_at_signal ;
2005-04-17 02:20:36 +04:00
unsigned short ss , __ssh ;
unsigned int fpstate ; /* really (struct _fpstate_ia32 *) */
unsigned int oldmask ;
unsigned int cr2 ;
} ;
# endif