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