summaryrefslogtreecommitdiff
path: root/tools/debugserver/source/MacOSX/x86_64/MachRegisterStatesX86_64.h
blob: 818396668373e290f131c0ecf2e73c79f9025318 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
//===-- MachRegisterStatesX86_64.h --------------------------------*- C++
//-*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
//  Created by Sean Callanan on 3/16/11.
//
//===----------------------------------------------------------------------===//

#ifndef __MachRegisterStatesX86_64_h__
#define __MachRegisterStatesX86_64_h__

#include <inttypes.h>

#define __x86_64_THREAD_STATE 4
#define __x86_64_FLOAT_STATE 5
#define __x86_64_EXCEPTION_STATE 6
#define __x86_64_DEBUG_STATE 11
#define __x86_64_AVX_STATE 17
#define __x86_64_AVX512F_STATE 20

typedef struct {
  uint64_t __rax;
  uint64_t __rbx;
  uint64_t __rcx;
  uint64_t __rdx;
  uint64_t __rdi;
  uint64_t __rsi;
  uint64_t __rbp;
  uint64_t __rsp;
  uint64_t __r8;
  uint64_t __r9;
  uint64_t __r10;
  uint64_t __r11;
  uint64_t __r12;
  uint64_t __r13;
  uint64_t __r14;
  uint64_t __r15;
  uint64_t __rip;
  uint64_t __rflags;
  uint64_t __cs;
  uint64_t __fs;
  uint64_t __gs;
} __x86_64_thread_state_t;

typedef struct {
  uint16_t __invalid : 1;
  uint16_t __denorm : 1;
  uint16_t __zdiv : 1;
  uint16_t __ovrfl : 1;
  uint16_t __undfl : 1;
  uint16_t __precis : 1;
  uint16_t __PAD1 : 2;
  uint16_t __pc : 2;
  uint16_t __rc : 2;
  uint16_t __PAD2 : 1;
  uint16_t __PAD3 : 3;
} __x86_64_fp_control_t;

typedef struct {
  uint16_t __invalid : 1;
  uint16_t __denorm : 1;
  uint16_t __zdiv : 1;
  uint16_t __ovrfl : 1;
  uint16_t __undfl : 1;
  uint16_t __precis : 1;
  uint16_t __stkflt : 1;
  uint16_t __errsumm : 1;
  uint16_t __c0 : 1;
  uint16_t __c1 : 1;
  uint16_t __c2 : 1;
  uint16_t __tos : 3;
  uint16_t __c3 : 1;
  uint16_t __busy : 1;
} __x86_64_fp_status_t;

typedef struct {
  uint8_t __mmst_reg[10];
  uint8_t __mmst_rsrv[6];
} __x86_64_mmst_reg;

typedef struct { uint8_t __xmm_reg[16]; } __x86_64_xmm_reg;

typedef struct {
  uint32_t __fpu_reserved[2];
  __x86_64_fp_control_t __fpu_fcw;
  __x86_64_fp_status_t __fpu_fsw;
  uint8_t __fpu_ftw;
  uint8_t __fpu_rsrv1;
  uint16_t __fpu_fop;
  uint32_t __fpu_ip;
  uint16_t __fpu_cs;
  uint16_t __fpu_rsrv2;
  uint32_t __fpu_dp;
  uint16_t __fpu_ds;
  uint16_t __fpu_rsrv3;
  uint32_t __fpu_mxcsr;
  uint32_t __fpu_mxcsrmask;
  __x86_64_mmst_reg __fpu_stmm0;
  __x86_64_mmst_reg __fpu_stmm1;
  __x86_64_mmst_reg __fpu_stmm2;
  __x86_64_mmst_reg __fpu_stmm3;
  __x86_64_mmst_reg __fpu_stmm4;
  __x86_64_mmst_reg __fpu_stmm5;
  __x86_64_mmst_reg __fpu_stmm6;
  __x86_64_mmst_reg __fpu_stmm7;
  __x86_64_xmm_reg __fpu_xmm0;
  __x86_64_xmm_reg __fpu_xmm1;
  __x86_64_xmm_reg __fpu_xmm2;
  __x86_64_xmm_reg __fpu_xmm3;
  __x86_64_xmm_reg __fpu_xmm4;
  __x86_64_xmm_reg __fpu_xmm5;
  __x86_64_xmm_reg __fpu_xmm6;
  __x86_64_xmm_reg __fpu_xmm7;
  __x86_64_xmm_reg __fpu_xmm8;
  __x86_64_xmm_reg __fpu_xmm9;
  __x86_64_xmm_reg __fpu_xmm10;
  __x86_64_xmm_reg __fpu_xmm11;
  __x86_64_xmm_reg __fpu_xmm12;
  __x86_64_xmm_reg __fpu_xmm13;
  __x86_64_xmm_reg __fpu_xmm14;
  __x86_64_xmm_reg __fpu_xmm15;
  uint8_t __fpu_rsrv4[6 * 16];
  uint32_t __fpu_reserved1;
} __x86_64_float_state_t;

typedef struct {
  uint32_t __fpu_reserved[2];
  __x86_64_fp_control_t __fpu_fcw;
  __x86_64_fp_status_t __fpu_fsw;
  uint8_t __fpu_ftw;
  uint8_t __fpu_rsrv1;
  uint16_t __fpu_fop;
  uint32_t __fpu_ip;
  uint16_t __fpu_cs;
  uint16_t __fpu_rsrv2;
  uint32_t __fpu_dp;
  uint16_t __fpu_ds;
  uint16_t __fpu_rsrv3;
  uint32_t __fpu_mxcsr;
  uint32_t __fpu_mxcsrmask;
  __x86_64_mmst_reg __fpu_stmm0;
  __x86_64_mmst_reg __fpu_stmm1;
  __x86_64_mmst_reg __fpu_stmm2;
  __x86_64_mmst_reg __fpu_stmm3;
  __x86_64_mmst_reg __fpu_stmm4;
  __x86_64_mmst_reg __fpu_stmm5;
  __x86_64_mmst_reg __fpu_stmm6;
  __x86_64_mmst_reg __fpu_stmm7;
  __x86_64_xmm_reg __fpu_xmm0;
  __x86_64_xmm_reg __fpu_xmm1;
  __x86_64_xmm_reg __fpu_xmm2;
  __x86_64_xmm_reg __fpu_xmm3;
  __x86_64_xmm_reg __fpu_xmm4;
  __x86_64_xmm_reg __fpu_xmm5;
  __x86_64_xmm_reg __fpu_xmm6;
  __x86_64_xmm_reg __fpu_xmm7;
  __x86_64_xmm_reg __fpu_xmm8;
  __x86_64_xmm_reg __fpu_xmm9;
  __x86_64_xmm_reg __fpu_xmm10;
  __x86_64_xmm_reg __fpu_xmm11;
  __x86_64_xmm_reg __fpu_xmm12;
  __x86_64_xmm_reg __fpu_xmm13;
  __x86_64_xmm_reg __fpu_xmm14;
  __x86_64_xmm_reg __fpu_xmm15;
  uint8_t __fpu_rsrv4[6 * 16];
  uint32_t __fpu_reserved1;
  uint8_t __avx_reserved1[64];
  __x86_64_xmm_reg __fpu_ymmh0;
  __x86_64_xmm_reg __fpu_ymmh1;
  __x86_64_xmm_reg __fpu_ymmh2;
  __x86_64_xmm_reg __fpu_ymmh3;
  __x86_64_xmm_reg __fpu_ymmh4;
  __x86_64_xmm_reg __fpu_ymmh5;
  __x86_64_xmm_reg __fpu_ymmh6;
  __x86_64_xmm_reg __fpu_ymmh7;
  __x86_64_xmm_reg __fpu_ymmh8;
  __x86_64_xmm_reg __fpu_ymmh9;
  __x86_64_xmm_reg __fpu_ymmh10;
  __x86_64_xmm_reg __fpu_ymmh11;
  __x86_64_xmm_reg __fpu_ymmh12;
  __x86_64_xmm_reg __fpu_ymmh13;
  __x86_64_xmm_reg __fpu_ymmh14;
  __x86_64_xmm_reg __fpu_ymmh15;
} __x86_64_avx_state_t;

typedef struct { uint8_t __ymm_reg[32]; } __x86_64_ymm_reg;
typedef struct { uint8_t __zmm_reg[64]; } __x86_64_zmm_reg;
typedef struct { uint8_t __opmask_reg[8]; } __x86_64_opmask_reg;

typedef struct {
  uint32_t __fpu_reserved[2];
  __x86_64_fp_control_t __fpu_fcw;
  __x86_64_fp_status_t __fpu_fsw;
  uint8_t __fpu_ftw;
  uint8_t __fpu_rsrv1;
  uint16_t __fpu_fop;
  uint32_t __fpu_ip;
  uint16_t __fpu_cs;
  uint16_t __fpu_rsrv2;
  uint32_t __fpu_dp;
  uint16_t __fpu_ds;
  uint16_t __fpu_rsrv3;
  uint32_t __fpu_mxcsr;
  uint32_t __fpu_mxcsrmask;
  __x86_64_mmst_reg __fpu_stmm0;
  __x86_64_mmst_reg __fpu_stmm1;
  __x86_64_mmst_reg __fpu_stmm2;
  __x86_64_mmst_reg __fpu_stmm3;
  __x86_64_mmst_reg __fpu_stmm4;
  __x86_64_mmst_reg __fpu_stmm5;
  __x86_64_mmst_reg __fpu_stmm6;
  __x86_64_mmst_reg __fpu_stmm7;
  __x86_64_xmm_reg __fpu_xmm0;
  __x86_64_xmm_reg __fpu_xmm1;
  __x86_64_xmm_reg __fpu_xmm2;
  __x86_64_xmm_reg __fpu_xmm3;
  __x86_64_xmm_reg __fpu_xmm4;
  __x86_64_xmm_reg __fpu_xmm5;
  __x86_64_xmm_reg __fpu_xmm6;
  __x86_64_xmm_reg __fpu_xmm7;
  __x86_64_xmm_reg __fpu_xmm8;
  __x86_64_xmm_reg __fpu_xmm9;
  __x86_64_xmm_reg __fpu_xmm10;
  __x86_64_xmm_reg __fpu_xmm11;
  __x86_64_xmm_reg __fpu_xmm12;
  __x86_64_xmm_reg __fpu_xmm13;
  __x86_64_xmm_reg __fpu_xmm14;
  __x86_64_xmm_reg __fpu_xmm15;
  uint8_t __fpu_rsrv4[6 * 16];
  uint32_t __fpu_reserved1;
  uint8_t __avx_reserved1[64];
  __x86_64_xmm_reg __fpu_ymmh0;
  __x86_64_xmm_reg __fpu_ymmh1;
  __x86_64_xmm_reg __fpu_ymmh2;
  __x86_64_xmm_reg __fpu_ymmh3;
  __x86_64_xmm_reg __fpu_ymmh4;
  __x86_64_xmm_reg __fpu_ymmh5;
  __x86_64_xmm_reg __fpu_ymmh6;
  __x86_64_xmm_reg __fpu_ymmh7;
  __x86_64_xmm_reg __fpu_ymmh8;
  __x86_64_xmm_reg __fpu_ymmh9;
  __x86_64_xmm_reg __fpu_ymmh10;
  __x86_64_xmm_reg __fpu_ymmh11;
  __x86_64_xmm_reg __fpu_ymmh12;
  __x86_64_xmm_reg __fpu_ymmh13;
  __x86_64_xmm_reg __fpu_ymmh14;
  __x86_64_xmm_reg __fpu_ymmh15;
  __x86_64_opmask_reg __fpu_k0;
  __x86_64_opmask_reg __fpu_k1;
  __x86_64_opmask_reg __fpu_k2;
  __x86_64_opmask_reg __fpu_k3;
  __x86_64_opmask_reg __fpu_k4;
  __x86_64_opmask_reg __fpu_k5;
  __x86_64_opmask_reg __fpu_k6;
  __x86_64_opmask_reg __fpu_k7;
  __x86_64_ymm_reg __fpu_zmmh0;
  __x86_64_ymm_reg __fpu_zmmh1;
  __x86_64_ymm_reg __fpu_zmmh2;
  __x86_64_ymm_reg __fpu_zmmh3;
  __x86_64_ymm_reg __fpu_zmmh4;
  __x86_64_ymm_reg __fpu_zmmh5;
  __x86_64_ymm_reg __fpu_zmmh6;
  __x86_64_ymm_reg __fpu_zmmh7;
  __x86_64_ymm_reg __fpu_zmmh8;
  __x86_64_ymm_reg __fpu_zmmh9;
  __x86_64_ymm_reg __fpu_zmmh10;
  __x86_64_ymm_reg __fpu_zmmh11;
  __x86_64_ymm_reg __fpu_zmmh12;
  __x86_64_ymm_reg __fpu_zmmh13;
  __x86_64_ymm_reg __fpu_zmmh14;
  __x86_64_ymm_reg __fpu_zmmh15;
  __x86_64_zmm_reg __fpu_zmm16;
  __x86_64_zmm_reg __fpu_zmm17;
  __x86_64_zmm_reg __fpu_zmm18;
  __x86_64_zmm_reg __fpu_zmm19;
  __x86_64_zmm_reg __fpu_zmm20;
  __x86_64_zmm_reg __fpu_zmm21;
  __x86_64_zmm_reg __fpu_zmm22;
  __x86_64_zmm_reg __fpu_zmm23;
  __x86_64_zmm_reg __fpu_zmm24;
  __x86_64_zmm_reg __fpu_zmm25;
  __x86_64_zmm_reg __fpu_zmm26;
  __x86_64_zmm_reg __fpu_zmm27;
  __x86_64_zmm_reg __fpu_zmm28;
  __x86_64_zmm_reg __fpu_zmm29;
  __x86_64_zmm_reg __fpu_zmm30;
  __x86_64_zmm_reg __fpu_zmm31;

} __x86_64_avx512f_state_t;

typedef struct {
  uint32_t __trapno;
  uint32_t __err;
  uint64_t __faultvaddr;
} __x86_64_exception_state_t;

typedef struct {
  uint64_t __dr0;
  uint64_t __dr1;
  uint64_t __dr2;
  uint64_t __dr3;
  uint64_t __dr4;
  uint64_t __dr5;
  uint64_t __dr6;
  uint64_t __dr7;
} __x86_64_debug_state_t;

#endif