more debug output
[linux-2.4.git] / include / asm-i386 / 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