File: /usr/include/asm/sigcontext.h

1     #ifndef _ASMi386_SIGCONTEXT_H
2     #define _ASMi386_SIGCONTEXT_H
3     
4     /*
5      * As documented in the iBCS2 standard..
6      *
7      * The first part of "struct _fpstate" is just the normal i387
8      * hardware setup, the extra "status" word is used to save the
9      * coprocessor status word before entering the handler.
10      *
11      * Pentium III FXSR, SSE support
12      *	Gareth Hughes <gareth@valinux.com>, May 2000
13      *
14      * The FPU state data structure has had to grow to accomodate the
15      * extended FPU state required by the Streaming SIMD Extensions.
16      * There is no documented standard to accomplish this at the moment.
17      */
18     struct _fpreg {
19     	unsigned short significand[4];
20     	unsigned short exponent;
21     };
22     
23     struct _fpxreg {
24     	unsigned short significand[4];
25     	unsigned short exponent;
26     	unsigned short padding[3];
27     };
28     
29     struct _xmmreg {
30     	unsigned long element[4];
31     };
32     
33     struct _fpstate {
34     	/* Regular FPU environment */
35     	unsigned long 	cw;
36     	unsigned long	sw;
37     	unsigned long	tag;
38     	unsigned long	ipoff;
39     	unsigned long	cssel;
40     	unsigned long	dataoff;
41     	unsigned long	datasel;
42     	struct _fpreg	_st[8];
43     	unsigned short	status;
44     	unsigned short	magic;		/* 0xffff = regular FPU data only */
45     
46     	/* FXSR FPU environment */
47     	unsigned long	_fxsr_env[6];	/* FXSR FPU env is ignored */
48     	unsigned long	mxcsr;
49     	unsigned long	reserved;
50     	struct _fpxreg	_fxsr_st[8];	/* FXSR FPU reg data is ignored */
51     	struct _xmmreg	_xmm[8];
52     	unsigned long	padding[56];
53     };
54     
55     #define X86_FXSR_MAGIC		0x0000
56     
57     struct sigcontext {
58     	unsigned short gs, __gsh;
59     	unsigned short fs, __fsh;
60     	unsigned short es, __esh;
61     	unsigned short ds, __dsh;
62     	unsigned long edi;
63     	unsigned long esi;
64     	unsigned long ebp;
65     	unsigned long esp;
66     	unsigned long ebx;
67     	unsigned long edx;
68     	unsigned long ecx;
69     	unsigned long eax;
70     	unsigned long trapno;
71     	unsigned long err;
72     	unsigned long eip;
73     	unsigned short cs, __csh;
74     	unsigned long eflags;
75     	unsigned long esp_at_signal;
76     	unsigned short ss, __ssh;
77     	struct _fpstate * fpstate;
78     	unsigned long oldmask;
79     	unsigned long cr2;
80     };
81     
82     
83     #endif
84