1 //===-- MachRegisterStatesX86_64.h --------------------------------*- C++
2 //-*-===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 //  Created by Sean Callanan on 3/16/11.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_X86_64_MACHREGISTERSTATESX86_64_H
15 #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_X86_64_MACHREGISTERSTATESX86_64_H
16 
17 #include <inttypes.h>
18 
19 #define __x86_64_THREAD_STATE 4
20 #define __x86_64_FLOAT_STATE 5
21 #define __x86_64_EXCEPTION_STATE 6
22 #define __x86_64_DEBUG_STATE 11
23 #define __x86_64_AVX_STATE 17
24 #define __x86_64_AVX512F_STATE 20
25 
26 typedef struct {
27   uint64_t __rax;
28   uint64_t __rbx;
29   uint64_t __rcx;
30   uint64_t __rdx;
31   uint64_t __rdi;
32   uint64_t __rsi;
33   uint64_t __rbp;
34   uint64_t __rsp;
35   uint64_t __r8;
36   uint64_t __r9;
37   uint64_t __r10;
38   uint64_t __r11;
39   uint64_t __r12;
40   uint64_t __r13;
41   uint64_t __r14;
42   uint64_t __r15;
43   uint64_t __rip;
44   uint64_t __rflags;
45   uint64_t __cs;
46   uint64_t __fs;
47   uint64_t __gs;
48 } __x86_64_thread_state_t;
49 
50 typedef struct {
51   uint16_t __invalid : 1;
52   uint16_t __denorm : 1;
53   uint16_t __zdiv : 1;
54   uint16_t __ovrfl : 1;
55   uint16_t __undfl : 1;
56   uint16_t __precis : 1;
57   uint16_t __PAD1 : 2;
58   uint16_t __pc : 2;
59   uint16_t __rc : 2;
60   uint16_t __PAD2 : 1;
61   uint16_t __PAD3 : 3;
62 } __x86_64_fp_control_t;
63 
64 typedef struct {
65   uint16_t __invalid : 1;
66   uint16_t __denorm : 1;
67   uint16_t __zdiv : 1;
68   uint16_t __ovrfl : 1;
69   uint16_t __undfl : 1;
70   uint16_t __precis : 1;
71   uint16_t __stkflt : 1;
72   uint16_t __errsumm : 1;
73   uint16_t __c0 : 1;
74   uint16_t __c1 : 1;
75   uint16_t __c2 : 1;
76   uint16_t __tos : 3;
77   uint16_t __c3 : 1;
78   uint16_t __busy : 1;
79 } __x86_64_fp_status_t;
80 
81 typedef struct {
82   uint8_t __mmst_reg[10];
83   uint8_t __mmst_rsrv[6];
84 } __x86_64_mmst_reg;
85 
86 typedef struct { uint8_t __xmm_reg[16]; } __x86_64_xmm_reg;
87 
88 typedef struct {
89   uint32_t __fpu_reserved[2];
90   __x86_64_fp_control_t __fpu_fcw;
91   __x86_64_fp_status_t __fpu_fsw;
92   uint8_t __fpu_ftw;
93   uint8_t __fpu_rsrv1;
94   uint16_t __fpu_fop;
95   uint32_t __fpu_ip;
96   uint16_t __fpu_cs;
97   uint16_t __fpu_rsrv2;
98   uint32_t __fpu_dp;
99   uint16_t __fpu_ds;
100   uint16_t __fpu_rsrv3;
101   uint32_t __fpu_mxcsr;
102   uint32_t __fpu_mxcsrmask;
103   __x86_64_mmst_reg __fpu_stmm0;
104   __x86_64_mmst_reg __fpu_stmm1;
105   __x86_64_mmst_reg __fpu_stmm2;
106   __x86_64_mmst_reg __fpu_stmm3;
107   __x86_64_mmst_reg __fpu_stmm4;
108   __x86_64_mmst_reg __fpu_stmm5;
109   __x86_64_mmst_reg __fpu_stmm6;
110   __x86_64_mmst_reg __fpu_stmm7;
111   __x86_64_xmm_reg __fpu_xmm0;
112   __x86_64_xmm_reg __fpu_xmm1;
113   __x86_64_xmm_reg __fpu_xmm2;
114   __x86_64_xmm_reg __fpu_xmm3;
115   __x86_64_xmm_reg __fpu_xmm4;
116   __x86_64_xmm_reg __fpu_xmm5;
117   __x86_64_xmm_reg __fpu_xmm6;
118   __x86_64_xmm_reg __fpu_xmm7;
119   __x86_64_xmm_reg __fpu_xmm8;
120   __x86_64_xmm_reg __fpu_xmm9;
121   __x86_64_xmm_reg __fpu_xmm10;
122   __x86_64_xmm_reg __fpu_xmm11;
123   __x86_64_xmm_reg __fpu_xmm12;
124   __x86_64_xmm_reg __fpu_xmm13;
125   __x86_64_xmm_reg __fpu_xmm14;
126   __x86_64_xmm_reg __fpu_xmm15;
127   uint8_t __fpu_rsrv4[6 * 16];
128   uint32_t __fpu_reserved1;
129 } __x86_64_float_state_t;
130 
131 typedef struct {
132   uint32_t __fpu_reserved[2];
133   __x86_64_fp_control_t __fpu_fcw;
134   __x86_64_fp_status_t __fpu_fsw;
135   uint8_t __fpu_ftw;
136   uint8_t __fpu_rsrv1;
137   uint16_t __fpu_fop;
138   uint32_t __fpu_ip;
139   uint16_t __fpu_cs;
140   uint16_t __fpu_rsrv2;
141   uint32_t __fpu_dp;
142   uint16_t __fpu_ds;
143   uint16_t __fpu_rsrv3;
144   uint32_t __fpu_mxcsr;
145   uint32_t __fpu_mxcsrmask;
146   __x86_64_mmst_reg __fpu_stmm0;
147   __x86_64_mmst_reg __fpu_stmm1;
148   __x86_64_mmst_reg __fpu_stmm2;
149   __x86_64_mmst_reg __fpu_stmm3;
150   __x86_64_mmst_reg __fpu_stmm4;
151   __x86_64_mmst_reg __fpu_stmm5;
152   __x86_64_mmst_reg __fpu_stmm6;
153   __x86_64_mmst_reg __fpu_stmm7;
154   __x86_64_xmm_reg __fpu_xmm0;
155   __x86_64_xmm_reg __fpu_xmm1;
156   __x86_64_xmm_reg __fpu_xmm2;
157   __x86_64_xmm_reg __fpu_xmm3;
158   __x86_64_xmm_reg __fpu_xmm4;
159   __x86_64_xmm_reg __fpu_xmm5;
160   __x86_64_xmm_reg __fpu_xmm6;
161   __x86_64_xmm_reg __fpu_xmm7;
162   __x86_64_xmm_reg __fpu_xmm8;
163   __x86_64_xmm_reg __fpu_xmm9;
164   __x86_64_xmm_reg __fpu_xmm10;
165   __x86_64_xmm_reg __fpu_xmm11;
166   __x86_64_xmm_reg __fpu_xmm12;
167   __x86_64_xmm_reg __fpu_xmm13;
168   __x86_64_xmm_reg __fpu_xmm14;
169   __x86_64_xmm_reg __fpu_xmm15;
170   uint8_t __fpu_rsrv4[6 * 16];
171   uint32_t __fpu_reserved1;
172   uint8_t __avx_reserved1[64];
173   __x86_64_xmm_reg __fpu_ymmh0;
174   __x86_64_xmm_reg __fpu_ymmh1;
175   __x86_64_xmm_reg __fpu_ymmh2;
176   __x86_64_xmm_reg __fpu_ymmh3;
177   __x86_64_xmm_reg __fpu_ymmh4;
178   __x86_64_xmm_reg __fpu_ymmh5;
179   __x86_64_xmm_reg __fpu_ymmh6;
180   __x86_64_xmm_reg __fpu_ymmh7;
181   __x86_64_xmm_reg __fpu_ymmh8;
182   __x86_64_xmm_reg __fpu_ymmh9;
183   __x86_64_xmm_reg __fpu_ymmh10;
184   __x86_64_xmm_reg __fpu_ymmh11;
185   __x86_64_xmm_reg __fpu_ymmh12;
186   __x86_64_xmm_reg __fpu_ymmh13;
187   __x86_64_xmm_reg __fpu_ymmh14;
188   __x86_64_xmm_reg __fpu_ymmh15;
189 } __x86_64_avx_state_t;
190 
191 typedef struct { uint8_t __ymm_reg[32]; } __x86_64_ymm_reg;
192 typedef struct { uint8_t __zmm_reg[64]; } __x86_64_zmm_reg;
193 typedef struct { uint8_t __opmask_reg[8]; } __x86_64_opmask_reg;
194 
195 typedef struct {
196   uint32_t __fpu_reserved[2];
197   __x86_64_fp_control_t __fpu_fcw;
198   __x86_64_fp_status_t __fpu_fsw;
199   uint8_t __fpu_ftw;
200   uint8_t __fpu_rsrv1;
201   uint16_t __fpu_fop;
202   uint32_t __fpu_ip;
203   uint16_t __fpu_cs;
204   uint16_t __fpu_rsrv2;
205   uint32_t __fpu_dp;
206   uint16_t __fpu_ds;
207   uint16_t __fpu_rsrv3;
208   uint32_t __fpu_mxcsr;
209   uint32_t __fpu_mxcsrmask;
210   __x86_64_mmst_reg __fpu_stmm0;
211   __x86_64_mmst_reg __fpu_stmm1;
212   __x86_64_mmst_reg __fpu_stmm2;
213   __x86_64_mmst_reg __fpu_stmm3;
214   __x86_64_mmst_reg __fpu_stmm4;
215   __x86_64_mmst_reg __fpu_stmm5;
216   __x86_64_mmst_reg __fpu_stmm6;
217   __x86_64_mmst_reg __fpu_stmm7;
218   __x86_64_xmm_reg __fpu_xmm0;
219   __x86_64_xmm_reg __fpu_xmm1;
220   __x86_64_xmm_reg __fpu_xmm2;
221   __x86_64_xmm_reg __fpu_xmm3;
222   __x86_64_xmm_reg __fpu_xmm4;
223   __x86_64_xmm_reg __fpu_xmm5;
224   __x86_64_xmm_reg __fpu_xmm6;
225   __x86_64_xmm_reg __fpu_xmm7;
226   __x86_64_xmm_reg __fpu_xmm8;
227   __x86_64_xmm_reg __fpu_xmm9;
228   __x86_64_xmm_reg __fpu_xmm10;
229   __x86_64_xmm_reg __fpu_xmm11;
230   __x86_64_xmm_reg __fpu_xmm12;
231   __x86_64_xmm_reg __fpu_xmm13;
232   __x86_64_xmm_reg __fpu_xmm14;
233   __x86_64_xmm_reg __fpu_xmm15;
234   uint8_t __fpu_rsrv4[6 * 16];
235   uint32_t __fpu_reserved1;
236   uint8_t __avx_reserved1[64];
237   __x86_64_xmm_reg __fpu_ymmh0;
238   __x86_64_xmm_reg __fpu_ymmh1;
239   __x86_64_xmm_reg __fpu_ymmh2;
240   __x86_64_xmm_reg __fpu_ymmh3;
241   __x86_64_xmm_reg __fpu_ymmh4;
242   __x86_64_xmm_reg __fpu_ymmh5;
243   __x86_64_xmm_reg __fpu_ymmh6;
244   __x86_64_xmm_reg __fpu_ymmh7;
245   __x86_64_xmm_reg __fpu_ymmh8;
246   __x86_64_xmm_reg __fpu_ymmh9;
247   __x86_64_xmm_reg __fpu_ymmh10;
248   __x86_64_xmm_reg __fpu_ymmh11;
249   __x86_64_xmm_reg __fpu_ymmh12;
250   __x86_64_xmm_reg __fpu_ymmh13;
251   __x86_64_xmm_reg __fpu_ymmh14;
252   __x86_64_xmm_reg __fpu_ymmh15;
253   __x86_64_opmask_reg __fpu_k0;
254   __x86_64_opmask_reg __fpu_k1;
255   __x86_64_opmask_reg __fpu_k2;
256   __x86_64_opmask_reg __fpu_k3;
257   __x86_64_opmask_reg __fpu_k4;
258   __x86_64_opmask_reg __fpu_k5;
259   __x86_64_opmask_reg __fpu_k6;
260   __x86_64_opmask_reg __fpu_k7;
261   __x86_64_ymm_reg __fpu_zmmh0;
262   __x86_64_ymm_reg __fpu_zmmh1;
263   __x86_64_ymm_reg __fpu_zmmh2;
264   __x86_64_ymm_reg __fpu_zmmh3;
265   __x86_64_ymm_reg __fpu_zmmh4;
266   __x86_64_ymm_reg __fpu_zmmh5;
267   __x86_64_ymm_reg __fpu_zmmh6;
268   __x86_64_ymm_reg __fpu_zmmh7;
269   __x86_64_ymm_reg __fpu_zmmh8;
270   __x86_64_ymm_reg __fpu_zmmh9;
271   __x86_64_ymm_reg __fpu_zmmh10;
272   __x86_64_ymm_reg __fpu_zmmh11;
273   __x86_64_ymm_reg __fpu_zmmh12;
274   __x86_64_ymm_reg __fpu_zmmh13;
275   __x86_64_ymm_reg __fpu_zmmh14;
276   __x86_64_ymm_reg __fpu_zmmh15;
277   __x86_64_zmm_reg __fpu_zmm16;
278   __x86_64_zmm_reg __fpu_zmm17;
279   __x86_64_zmm_reg __fpu_zmm18;
280   __x86_64_zmm_reg __fpu_zmm19;
281   __x86_64_zmm_reg __fpu_zmm20;
282   __x86_64_zmm_reg __fpu_zmm21;
283   __x86_64_zmm_reg __fpu_zmm22;
284   __x86_64_zmm_reg __fpu_zmm23;
285   __x86_64_zmm_reg __fpu_zmm24;
286   __x86_64_zmm_reg __fpu_zmm25;
287   __x86_64_zmm_reg __fpu_zmm26;
288   __x86_64_zmm_reg __fpu_zmm27;
289   __x86_64_zmm_reg __fpu_zmm28;
290   __x86_64_zmm_reg __fpu_zmm29;
291   __x86_64_zmm_reg __fpu_zmm30;
292   __x86_64_zmm_reg __fpu_zmm31;
293 
294 } __x86_64_avx512f_state_t;
295 
296 typedef struct {
297   uint32_t __trapno;
298   uint32_t __err;
299   uint64_t __faultvaddr;
300 } __x86_64_exception_state_t;
301 
302 typedef struct {
303   uint64_t __dr0;
304   uint64_t __dr1;
305   uint64_t __dr2;
306   uint64_t __dr3;
307   uint64_t __dr4;
308   uint64_t __dr5;
309   uint64_t __dr6;
310   uint64_t __dr7;
311 } __x86_64_debug_state_t;
312 
313 #endif
314