1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _UAPI_ASM_X86_SIGCONTEXT_H
20 #define _UAPI_ASM_X86_SIGCONTEXT_H
21 #include <linux/compiler.h>
22 #include <linux/types.h>
23 #define FP_XSTATE_MAGIC1 0x46505853U
24 #define FP_XSTATE_MAGIC2 0x46505845U
25 #define FP_XSTATE_MAGIC2_SIZE sizeof(FP_XSTATE_MAGIC2)
26 struct _fpx_sw_bytes {
27   __u32 magic1;
28   __u32 extended_size;
29   __u64 xfeatures;
30   __u32 xstate_size;
31   __u32 padding[7];
32 };
33 struct _fpreg {
34   __u16 significand[4];
35   __u16 exponent;
36 };
37 struct _fpxreg {
38   __u16 significand[4];
39   __u16 exponent;
40   __u16 padding[3];
41 };
42 struct _xmmreg {
43   __u32 element[4];
44 };
45 #define X86_FXSR_MAGIC 0x0000
46 struct _fpstate_32 {
47   __u32 cw;
48   __u32 sw;
49   __u32 tag;
50   __u32 ipoff;
51   __u32 cssel;
52   __u32 dataoff;
53   __u32 datasel;
54   struct _fpreg _st[8];
55   __u16 status;
56   __u16 magic;
57   __u32 _fxsr_env[6];
58   __u32 mxcsr;
59   __u32 reserved;
60   struct _fpxreg _fxsr_st[8];
61   struct _xmmreg _xmm[8];
62   union {
63     __u32 padding1[44];
64     __u32 padding[44];
65   };
66   union {
67     __u32 padding2[12];
68     struct _fpx_sw_bytes sw_reserved;
69   };
70 };
71 struct _fpstate_64 {
72   __u16 cwd;
73   __u16 swd;
74   __u16 twd;
75   __u16 fop;
76   __u64 rip;
77   __u64 rdp;
78   __u32 mxcsr;
79   __u32 mxcsr_mask;
80   __u32 st_space[32];
81   __u32 xmm_space[64];
82   __u32 reserved2[12];
83   union {
84     __u32 reserved3[12];
85     struct _fpx_sw_bytes sw_reserved;
86   };
87 };
88 #ifdef __i386__
89 #define _fpstate _fpstate_32
90 #else
91 #define _fpstate _fpstate_64
92 #endif
93 struct _header {
94   __u64 xfeatures;
95   __u64 reserved1[2];
96   __u64 reserved2[5];
97 };
98 struct _ymmh_state {
99   __u32 ymmh_space[64];
100 };
101 struct _xstate {
102   struct _fpstate fpstate;
103   struct _header xstate_hdr;
104   struct _ymmh_state ymmh;
105 };
106 struct sigcontext_32 {
107   __u16 gs, __gsh;
108   __u16 fs, __fsh;
109   __u16 es, __esh;
110   __u16 ds, __dsh;
111   __u32 di;
112   __u32 si;
113   __u32 bp;
114   __u32 sp;
115   __u32 bx;
116   __u32 dx;
117   __u32 cx;
118   __u32 ax;
119   __u32 trapno;
120   __u32 err;
121   __u32 ip;
122   __u16 cs, __csh;
123   __u32 flags;
124   __u32 sp_at_signal;
125   __u16 ss, __ssh;
126   __u32 fpstate;
127   __u32 oldmask;
128   __u32 cr2;
129 };
130 struct sigcontext_64 {
131   __u64 r8;
132   __u64 r9;
133   __u64 r10;
134   __u64 r11;
135   __u64 r12;
136   __u64 r13;
137   __u64 r14;
138   __u64 r15;
139   __u64 di;
140   __u64 si;
141   __u64 bp;
142   __u64 bx;
143   __u64 dx;
144   __u64 ax;
145   __u64 cx;
146   __u64 sp;
147   __u64 ip;
148   __u64 flags;
149   __u16 cs;
150   __u16 gs;
151   __u16 fs;
152   __u16 ss;
153   __u64 err;
154   __u64 trapno;
155   __u64 oldmask;
156   __u64 cr2;
157   __u64 fpstate;
158   __u64 reserved1[8];
159 };
160 #define _fpstate_ia32 _fpstate_32
161 #define sigcontext_ia32 sigcontext_32
162 #ifdef __i386__
163 struct sigcontext {
164   __u16 gs, __gsh;
165   __u16 fs, __fsh;
166   __u16 es, __esh;
167   __u16 ds, __dsh;
168   __u32 edi;
169   __u32 esi;
170   __u32 ebp;
171   __u32 esp;
172   __u32 ebx;
173   __u32 edx;
174   __u32 ecx;
175   __u32 eax;
176   __u32 trapno;
177   __u32 err;
178   __u32 eip;
179   __u16 cs, __csh;
180   __u32 eflags;
181   __u32 esp_at_signal;
182   __u16 ss, __ssh;
183   struct _fpstate __user * fpstate;
184   __u32 oldmask;
185   __u32 cr2;
186 };
187 #else
188 struct sigcontext {
189   __u64 r8;
190   __u64 r9;
191   __u64 r10;
192   __u64 r11;
193   __u64 r12;
194   __u64 r13;
195   __u64 r14;
196   __u64 r15;
197   __u64 rdi;
198   __u64 rsi;
199   __u64 rbp;
200   __u64 rbx;
201   __u64 rdx;
202   __u64 rax;
203   __u64 rcx;
204   __u64 rsp;
205   __u64 rip;
206   __u64 eflags;
207   __u16 cs;
208   __u16 gs;
209   __u16 fs;
210   union {
211     __u16 ss;
212     __u16 __pad0;
213   };
214   __u64 err;
215   __u64 trapno;
216   __u64 oldmask;
217   __u64 cr2;
218   struct _fpstate __user * fpstate;
219 #ifdef __ILP32__
220   __u32 __fpstate_pad;
221 #endif
222   __u64 reserved1[8];
223 };
224 #endif
225 #endif
226