6fe6b182c9981dd891a9a5bc9a55b3e6591a6f9f
[kvmfornfv.git] / kernel / arch / x86 / include / asm / sigcontext.h
1 #ifndef _ASM_X86_SIGCONTEXT_H
2 #define _ASM_X86_SIGCONTEXT_H
3
4 #include <uapi/asm/sigcontext.h>
5
6 #ifdef __i386__
7 struct sigcontext {
8         unsigned short gs, __gsh;
9         unsigned short fs, __fsh;
10         unsigned short es, __esh;
11         unsigned short ds, __dsh;
12         unsigned long di;
13         unsigned long si;
14         unsigned long bp;
15         unsigned long sp;
16         unsigned long bx;
17         unsigned long dx;
18         unsigned long cx;
19         unsigned long ax;
20         unsigned long trapno;
21         unsigned long err;
22         unsigned long ip;
23         unsigned short cs, __csh;
24         unsigned long flags;
25         unsigned long sp_at_signal;
26         unsigned short ss, __ssh;
27
28         /*
29          * fpstate is really (struct _fpstate *) or (struct _xstate *)
30          * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
31          * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
32          * of extended memory layout. See comments at the definition of
33          * (struct _fpx_sw_bytes)
34          */
35         void __user *fpstate;           /* zero when no FPU/extended context */
36         unsigned long oldmask;
37         unsigned long cr2;
38 };
39 #else /* __i386__ */
40 struct sigcontext {
41         unsigned long r8;
42         unsigned long r9;
43         unsigned long r10;
44         unsigned long r11;
45         unsigned long r12;
46         unsigned long r13;
47         unsigned long r14;
48         unsigned long r15;
49         unsigned long di;
50         unsigned long si;
51         unsigned long bp;
52         unsigned long bx;
53         unsigned long dx;
54         unsigned long ax;
55         unsigned long cx;
56         unsigned long sp;
57         unsigned long ip;
58         unsigned long flags;
59         unsigned short cs;
60         unsigned short __pad2;  /* Was called gs, but was always zero. */
61         unsigned short __pad1;  /* Was called fs, but was always zero. */
62         unsigned short ss;
63         unsigned long err;
64         unsigned long trapno;
65         unsigned long oldmask;
66         unsigned long cr2;
67
68         /*
69          * fpstate is really (struct _fpstate *) or (struct _xstate *)
70          * depending on the FP_XSTATE_MAGIC1 encoded in the SW reserved
71          * bytes of (struct _fpstate) and FP_XSTATE_MAGIC2 present at the end
72          * of extended memory layout. See comments at the definition of
73          * (struct _fpx_sw_bytes)
74          */
75         void __user *fpstate;           /* zero when no FPU/extended context */
76         unsigned long reserved1[8];
77 };
78 #endif /* !__i386__ */
79 #endif /* _ASM_X86_SIGCONTEXT_H */