1#ifndef _SIGCONTEXT32_H 2#define _SIGCONTEXT32_H 1 3 4/* signal context for 32bit programs. */ 5 6#define X86_FXSR_MAGIC 0x0000 7 8struct _fpreg { 9 unsigned short significand[4]; 10 unsigned short exponent; 11}; 12 13struct _fpxreg { 14 unsigned short significand[4]; 15 unsigned short exponent; 16 unsigned short padding[3]; 17}; 18 19struct _xmmreg { 20 __u32 element[4]; 21}; 22 23/* FSAVE frame with extensions */ 24struct _fpstate_ia32 { 25 /* Regular FPU environment */ 26 __u32 cw; 27 __u32 sw; 28 __u32 tag; /* not compatible to 64bit twd */ 29 __u32 ipoff; 30 __u32 cssel; 31 __u32 dataoff; 32 __u32 datasel; 33 struct _fpreg _st[8]; 34 unsigned short status; 35 unsigned short magic; /* 0xffff = regular FPU data only */ 36 37 /* FXSR FPU environment */ 38 __u32 _fxsr_env[6]; 39 __u32 mxcsr; 40 __u32 reserved; 41 struct _fpxreg _fxsr_st[8]; 42 struct _xmmreg _xmm[8]; /* It's actually 16 */ 43 __u32 padding[56]; 44}; 45 46struct sigcontext_ia32 { 47 unsigned short gs, __gsh; 48 unsigned short fs, __fsh; 49 unsigned short es, __esh; 50 unsigned short ds, __dsh; 51 unsigned int edi; 52 unsigned int esi; 53 unsigned int ebp; 54 unsigned int esp; 55 unsigned int ebx; 56 unsigned int edx; 57 unsigned int ecx; 58 unsigned int eax; 59 unsigned int trapno; 60 unsigned int err; 61 unsigned int eip; 62 unsigned short cs, __csh; 63 unsigned int eflags; 64 unsigned int esp_at_signal; 65 unsigned short ss, __ssh; 66 unsigned int fpstate; /* really (struct _fpstate_ia32 *) */ 67 unsigned int oldmask; 68 unsigned int cr2; 69}; 70 71#endif 72