| #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; |
| unsigned int edi; |
| unsigned int esi; |
| unsigned int ebp; |
| unsigned int esp; |
| unsigned int ebx; |
| unsigned int edx; |
| unsigned int ecx; |
| unsigned int eax; |
| unsigned int trapno; |
| unsigned int err; |
| unsigned int eip; |
| unsigned short cs, __csh; |
| unsigned int eflags; |
| unsigned int esp_at_signal; |
| unsigned short ss, __ssh; |
| unsigned int fpstate; /* really (struct _fpstate_ia32 *) */ |
| unsigned int oldmask; |
| unsigned int cr2; |
| }; |
| |
| #endif |