1af170c50SDavid Howells #ifndef _ASM_X86_SIGCONTEXT32_H 2af170c50SDavid Howells #define _ASM_X86_SIGCONTEXT32_H 3af170c50SDavid Howells 4c3f4986fSIngo Molnar /* Signal context definitions for compat 32-bit programs: */ 5c3f4986fSIngo Molnar 6af170c50SDavid Howells #include <linux/types.h> 7af170c50SDavid Howells 8b76cb6c8SIngo Molnar #include <asm/sigcontext.h> 9b76cb6c8SIngo Molnar 10c3f4986fSIngo Molnar /* 10-byte legacy floating point register: */ 11af170c50SDavid Howells struct _fpreg { 12af170c50SDavid Howells unsigned short significand[4]; 13af170c50SDavid Howells unsigned short exponent; 14af170c50SDavid Howells }; 15af170c50SDavid Howells 16c3f4986fSIngo Molnar /* 16-byte floating point register: */ 17af170c50SDavid Howells struct _fpxreg { 18af170c50SDavid Howells unsigned short significand[4]; 19af170c50SDavid Howells unsigned short exponent; 20af170c50SDavid Howells unsigned short padding[3]; 21af170c50SDavid Howells }; 22af170c50SDavid Howells 23c3f4986fSIngo Molnar /* 16-byte XMM vector register: */ 24af170c50SDavid Howells struct _xmmreg { 25af170c50SDavid Howells __u32 element[4]; 26af170c50SDavid Howells }; 27af170c50SDavid Howells 28c3f4986fSIngo Molnar #define X86_FXSR_MAGIC 0x0000 29c3f4986fSIngo Molnar 30c3f4986fSIngo Molnar /* FXSAVE frame: FSAVE frame with extensions */ 31af170c50SDavid Howells struct _fpstate_ia32 { 32c3f4986fSIngo Molnar /* Regular FPU environment: */ 33af170c50SDavid Howells __u32 cw; 34af170c50SDavid Howells __u32 sw; 35c3f4986fSIngo Molnar __u32 tag; /* Not compatible with the 64-bit frame */ 36af170c50SDavid Howells __u32 ipoff; 37af170c50SDavid Howells __u32 cssel; 38af170c50SDavid Howells __u32 dataoff; 39af170c50SDavid Howells __u32 datasel; 40af170c50SDavid Howells struct _fpreg _st[8]; 41af170c50SDavid Howells unsigned short status; 42c3f4986fSIngo Molnar unsigned short magic; /* 0xffff: regular FPU data only */ 43c3f4986fSIngo Molnar /* 0x0000: FXSR data */ 44af170c50SDavid Howells 45c3f4986fSIngo Molnar /* Extended FXSR FPU environment: */ 46af170c50SDavid Howells __u32 _fxsr_env[6]; 47af170c50SDavid Howells __u32 mxcsr; 48af170c50SDavid Howells __u32 reserved; 49af170c50SDavid Howells struct _fpxreg _fxsr_st[8]; 50c3f4986fSIngo Molnar struct _xmmreg _xmm[8]; /* The first 8 XMM registers */ 51c3f4986fSIngo Molnar __u32 padding[44]; /* The second 8 XMM registers plus padding */ 52af170c50SDavid Howells union { 53af170c50SDavid Howells __u32 padding2[12]; 54c3f4986fSIngo Molnar /* Might encode xstate extensions, see asm/sigcontext.h: */ 55af170c50SDavid Howells struct _fpx_sw_bytes sw_reserved; 56af170c50SDavid Howells }; 57af170c50SDavid Howells }; 58af170c50SDavid Howells 59c3f4986fSIngo Molnar /* 32-bit compat sigcontext: */ 60af170c50SDavid Howells struct sigcontext_ia32 { 61af170c50SDavid Howells unsigned short gs, __gsh; 62af170c50SDavid Howells unsigned short fs, __fsh; 63af170c50SDavid Howells unsigned short es, __esh; 64af170c50SDavid Howells unsigned short ds, __dsh; 65af170c50SDavid Howells unsigned int di; 66af170c50SDavid Howells unsigned int si; 67af170c50SDavid Howells unsigned int bp; 68af170c50SDavid Howells unsigned int sp; 69af170c50SDavid Howells unsigned int bx; 70af170c50SDavid Howells unsigned int dx; 71af170c50SDavid Howells unsigned int cx; 72af170c50SDavid Howells unsigned int ax; 73af170c50SDavid Howells unsigned int trapno; 74af170c50SDavid Howells unsigned int err; 75af170c50SDavid Howells unsigned int ip; 76af170c50SDavid Howells unsigned short cs, __csh; 77af170c50SDavid Howells unsigned int flags; 78af170c50SDavid Howells unsigned int sp_at_signal; 79af170c50SDavid Howells unsigned short ss, __ssh; 80c3f4986fSIngo Molnar unsigned int fpstate; /* Pointer to 'struct _fpstate_ia32' */ 81af170c50SDavid Howells unsigned int oldmask; 82af170c50SDavid Howells unsigned int cr2; 83af170c50SDavid Howells }; 84af170c50SDavid Howells 85af170c50SDavid Howells #endif /* _ASM_X86_SIGCONTEXT32_H */ 86