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