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