Subversion Repositories shark

Rev

Rev 422 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
422 giacomo 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