blob: 8c347032c2f28d5a390d75306100d0105b74c5ad [file] [log] [blame]
Vegard Nossum77ef50a2008-06-18 17:08:48 +02001#ifndef ASM_X86__SIGCONTEXT32_H
2#define ASM_X86__SIGCONTEXT32_H
Linus Torvalds1da177e2005-04-16 15:20:36 -07003
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 */
Joe Perches895b7642008-03-23 01:03:26 -070029 __u32 ipoff;
Linus Torvalds1da177e2005-04-16 15:20:36 -070030 __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];
Joe Perches895b7642008-03-23 01:03:26 -070042 struct _xmmreg _xmm[8]; /* It's actually 16 */
Suresh Siddhabdd8cab2008-07-29 10:29:24 -070043 __u32 padding[44];
44 union {
45 __u32 padding2[12];
46 struct _fpx_sw_bytes sw_reserved;
47 };
Linus Torvalds1da177e2005-04-16 15:20:36 -070048};
49
50struct sigcontext_ia32 {
51 unsigned short gs, __gsh;
52 unsigned short fs, __fsh;
53 unsigned short es, __esh;
54 unsigned short ds, __dsh;
H. Peter Anvin742fa542008-01-30 13:30:56 +010055 unsigned int di;
56 unsigned int si;
57 unsigned int bp;
58 unsigned int sp;
59 unsigned int bx;
60 unsigned int dx;
61 unsigned int cx;
62 unsigned int ax;
Linus Torvalds1da177e2005-04-16 15:20:36 -070063 unsigned int trapno;
64 unsigned int err;
H. Peter Anvin742fa542008-01-30 13:30:56 +010065 unsigned int ip;
Linus Torvalds1da177e2005-04-16 15:20:36 -070066 unsigned short cs, __csh;
H. Peter Anvin742fa542008-01-30 13:30:56 +010067 unsigned int flags;
68 unsigned int sp_at_signal;
Linus Torvalds1da177e2005-04-16 15:20:36 -070069 unsigned short ss, __ssh;
70 unsigned int fpstate; /* really (struct _fpstate_ia32 *) */
71 unsigned int oldmask;
72 unsigned int cr2;
73};
74
Vegard Nossum77ef50a2008-06-18 17:08:48 +020075#endif /* ASM_X86__SIGCONTEXT32_H */