sigcontext32.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef _ASM_X86_SIGCONTEXT32_H
  2. #define _ASM_X86_SIGCONTEXT32_H
  3. #include <linux/types.h>
  4. /* signal context for 32bit programs. */
  5. #define X86_FXSR_MAGIC 0x0000
  6. struct _fpreg {
  7. unsigned short significand[4];
  8. unsigned short exponent;
  9. };
  10. struct _fpxreg {
  11. unsigned short significand[4];
  12. unsigned short exponent;
  13. unsigned short padding[3];
  14. };
  15. struct _xmmreg {
  16. __u32 element[4];
  17. };
  18. /* FSAVE frame with extensions */
  19. struct _fpstate_ia32 {
  20. /* Regular FPU environment */
  21. __u32 cw;
  22. __u32 sw;
  23. __u32 tag; /* not compatible to 64bit twd */
  24. __u32 ipoff;
  25. __u32 cssel;
  26. __u32 dataoff;
  27. __u32 datasel;
  28. struct _fpreg _st[8];
  29. unsigned short status;
  30. unsigned short magic; /* 0xffff = regular FPU data only */
  31. /* FXSR FPU environment */
  32. __u32 _fxsr_env[6];
  33. __u32 mxcsr;
  34. __u32 reserved;
  35. struct _fpxreg _fxsr_st[8];
  36. struct _xmmreg _xmm[8]; /* It's actually 16 */
  37. __u32 padding[44];
  38. union {
  39. __u32 padding2[12];
  40. struct _fpx_sw_bytes sw_reserved;
  41. };
  42. };
  43. struct sigcontext_ia32 {
  44. unsigned short gs, __gsh;
  45. unsigned short fs, __fsh;
  46. unsigned short es, __esh;
  47. unsigned short ds, __dsh;
  48. unsigned int di;
  49. unsigned int si;
  50. unsigned int bp;
  51. unsigned int sp;
  52. unsigned int bx;
  53. unsigned int dx;
  54. unsigned int cx;
  55. unsigned int ax;
  56. unsigned int trapno;
  57. unsigned int err;
  58. unsigned int ip;
  59. unsigned short cs, __csh;
  60. unsigned int flags;
  61. unsigned int sp_at_signal;
  62. unsigned short ss, __ssh;
  63. unsigned int fpstate; /* really (struct _fpstate_ia32 *) */
  64. unsigned int oldmask;
  65. unsigned int cr2;
  66. };
  67. #endif /* _ASM_X86_SIGCONTEXT32_H */