Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _ASM_X86_SIGCONTEXT_H
  2 #define _ASM_X86_SIGCONTEXT_H
  3 
  4 #include <linux/compiler.h>
  5 #include <asm/types.h>
  6 
  7 #ifdef __i386__
  8 /*
  9  * As documented in the iBCS2 standard..
 10  *
 11  * The first part of "struct _fpstate" is just the normal i387
 12  * hardware setup, the extra "status" word is used to save the
 13  * coprocessor status word before entering the handler.
 14  *
 15  * Pentium III FXSR, SSE support
 16  *      Gareth Hughes <gareth@valinux.com>, May 2000
 17  *
 18  * The FPU state data structure has had to grow to accommodate the
 19  * extended FPU state required by the Streaming SIMD Extensions.
 20  * There is no documented standard to accomplish this at the moment.
 21  */
 22 struct _fpreg {
 23         unsigned short significand[4];
 24         unsigned short exponent;
 25 };
 26 
 27 struct _fpxreg {
 28         unsigned short significand[4];
 29         unsigned short exponent;
 30         unsigned short padding[3];
 31 };
 32 
 33 struct _xmmreg {
 34         unsigned long element[4];
 35 };
 36 
 37 struct _fpstate {
 38         /* Regular FPU environment */
 39         unsigned long   cw;
 40         unsigned long   sw;
 41         unsigned long   tag;
 42         unsigned long   ipoff;
 43         unsigned long   cssel;
 44         unsigned long   dataoff;
 45         unsigned long   datasel;
 46         struct _fpreg   _st[8];
 47         unsigned short  status;
 48         unsigned short  magic;          /* 0xffff = regular FPU data only */
 49 
 50         /* FXSR FPU environment */
 51         unsigned long   _fxsr_env[6];   /* FXSR FPU env is ignored */
 52         unsigned long   mxcsr;
 53         unsigned long   reserved;
 54         struct _fpxreg  _fxsr_st[8];    /* FXSR FPU reg data is ignored */
 55         struct _xmmreg  _xmm[8];
 56         unsigned long   padding[56];
 57 };
 58 
 59 #define X86_FXSR_MAGIC          0x0000
 60 
 61 #ifdef __KERNEL__
 62 struct sigcontext {
 63         unsigned short gs, __gsh;
 64         unsigned short fs, __fsh;
 65         unsigned short es, __esh;
 66         unsigned short ds, __dsh;
 67         unsigned long di;
 68         unsigned long si;
 69         unsigned long bp;
 70         unsigned long sp;
 71         unsigned long bx;
 72         unsigned long dx;
 73         unsigned long cx;
 74         unsigned long ax;
 75         unsigned long trapno;
 76         unsigned long err;
 77         unsigned long ip;
 78         unsigned short cs, __csh;
 79         unsigned long flags;
 80         unsigned long sp_at_signal;
 81         unsigned short ss, __ssh;
 82         struct _fpstate __user * fpstate;
 83         unsigned long oldmask;
 84         unsigned long cr2;
 85 };
 86 #else /* __KERNEL__ */
 87 /*
 88  * User-space might still rely on the old definition:
 89  */
 90 struct sigcontext {
 91         unsigned short gs, __gsh;
 92         unsigned short fs, __fsh;
 93         unsigned short es, __esh;
 94         unsigned short ds, __dsh;
 95         unsigned long edi;
 96         unsigned long esi;
 97         unsigned long ebp;
 98         unsigned long esp;
 99         unsigned long ebx;
100         unsigned long edx;
101         unsigned long ecx;
102         unsigned long eax;
103         unsigned long trapno;
104         unsigned long err;
105         unsigned long eip;
106         unsigned short cs, __csh;
107         unsigned long eflags;
108         unsigned long esp_at_signal;
109         unsigned short ss, __ssh;
110         struct _fpstate __user * fpstate;
111         unsigned long oldmask;
112         unsigned long cr2;
113 };
114 #endif /* !__KERNEL__ */
115 
116 #else /* __i386__ */
117 
118 /* FXSAVE frame */
119 /* Note: reserved1/2 may someday contain valuable data. Always save/restore
120    them when you change signal frames. */
121 struct _fpstate {
122         __u16   cwd;
123         __u16   swd;
124         __u16   twd;    /* Note this is not the same as the 32bit/x87/FSAVE twd */
125         __u16   fop;
126         __u64   rip;
127         __u64   rdp;
128         __u32   mxcsr;
129         __u32   mxcsr_mask;
130         __u32   st_space[32];   /* 8*16 bytes for each FP-reg */
131         __u32   xmm_space[64];  /* 16*16 bytes for each XMM-reg  */
132         __u32   reserved2[24];
133 };
134 
135 #ifdef __KERNEL__
136 struct sigcontext {
137         unsigned long r8;
138         unsigned long r9;
139         unsigned long r10;
140         unsigned long r11;
141         unsigned long r12;
142         unsigned long r13;
143         unsigned long r14;
144         unsigned long r15;
145         unsigned long di;
146         unsigned long si;
147         unsigned long bp;
148         unsigned long bx;
149         unsigned long dx;
150         unsigned long ax;
151         unsigned long cx;
152         unsigned long sp;
153         unsigned long ip;
154         unsigned long flags;
155         unsigned short cs;
156         unsigned short gs;
157         unsigned short fs;
158         unsigned short __pad0;
159         unsigned long err;
160         unsigned long trapno;
161         unsigned long oldmask;
162         unsigned long cr2;
163         struct _fpstate __user *fpstate;        /* zero when no FPU context */
164         unsigned long reserved1[8];
165 };
166 #else /* __KERNEL__ */
167 /*
168  * User-space might still rely on the old definition:
169  */
170 struct sigcontext {
171         unsigned long r8;
172         unsigned long r9;
173         unsigned long r10;
174         unsigned long r11;
175         unsigned long r12;
176         unsigned long r13;
177         unsigned long r14;
178         unsigned long r15;
179         unsigned long rdi;
180         unsigned long rsi;
181         unsigned long rbp;
182         unsigned long rbx;
183         unsigned long rdx;
184         unsigned long rax;
185         unsigned long rcx;
186         unsigned long rsp;
187         unsigned long rip;
188         unsigned long eflags;           /* RFLAGS */
189         unsigned short cs;
190         unsigned short gs;
191         unsigned short fs;
192         unsigned short __pad0;
193         unsigned long err;
194         unsigned long trapno;
195         unsigned long oldmask;
196         unsigned long cr2;
197         struct _fpstate __user *fpstate;        /* zero when no FPU context */
198         unsigned long reserved1[8];
199 };
200 #endif /* !__KERNEL__ */
201 
202 #endif /* !__i386__ */
203 
204 #endif
205 
  This page was automatically generated by the LXR engine.