xref: /openbsd-src/gnu/llvm/lldb/tools/debugserver/source/MacOSX/i386/MachRegisterStatesI386.h (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1061da546Spatrick //===-- MachRegisterStatesI386.h --------------------------------*- C++ -*-===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick //
9061da546Spatrick //  Created by Sean Callanan on 3/16/11.
10061da546Spatrick //
11061da546Spatrick //===----------------------------------------------------------------------===//
12061da546Spatrick 
13dda28197Spatrick #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_I386_MACHREGISTERSTATESI386_H
14dda28197Spatrick #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_I386_MACHREGISTERSTATESI386_H
15061da546Spatrick 
16*be691f3bSpatrick #include <cinttypes>
17061da546Spatrick 
18061da546Spatrick #define __i386_THREAD_STATE 1
19061da546Spatrick #define __i386_FLOAT_STATE 2
20061da546Spatrick #define __i386_EXCEPTION_STATE 3
21061da546Spatrick #define __i386_DEBUG_STATE 10
22061da546Spatrick #define __i386_AVX_STATE 16
23061da546Spatrick #define __i386_AVX512F_STATE 19
24061da546Spatrick 
25061da546Spatrick typedef struct {
26061da546Spatrick   uint32_t __eax;
27061da546Spatrick   uint32_t __ebx;
28061da546Spatrick   uint32_t __ecx;
29061da546Spatrick   uint32_t __edx;
30061da546Spatrick   uint32_t __edi;
31061da546Spatrick   uint32_t __esi;
32061da546Spatrick   uint32_t __ebp;
33061da546Spatrick   uint32_t __esp;
34061da546Spatrick   uint32_t __ss;
35061da546Spatrick   uint32_t __eflags;
36061da546Spatrick   uint32_t __eip;
37061da546Spatrick   uint32_t __cs;
38061da546Spatrick   uint32_t __ds;
39061da546Spatrick   uint32_t __es;
40061da546Spatrick   uint32_t __fs;
41061da546Spatrick   uint32_t __gs;
42061da546Spatrick } __i386_thread_state_t;
43061da546Spatrick 
44061da546Spatrick typedef struct {
45061da546Spatrick   uint16_t __invalid : 1;
46061da546Spatrick   uint16_t __denorm : 1;
47061da546Spatrick   uint16_t __zdiv : 1;
48061da546Spatrick   uint16_t __ovrfl : 1;
49061da546Spatrick   uint16_t __undfl : 1;
50061da546Spatrick   uint16_t __precis : 1;
51061da546Spatrick   uint16_t __PAD1 : 2;
52061da546Spatrick   uint16_t __pc : 2;
53061da546Spatrick   uint16_t __rc : 2;
54061da546Spatrick   uint16_t __PAD2 : 1;
55061da546Spatrick   uint16_t __PAD3 : 3;
56061da546Spatrick } __i386_fp_control_t;
57061da546Spatrick 
58061da546Spatrick typedef struct {
59061da546Spatrick   uint16_t __invalid : 1;
60061da546Spatrick   uint16_t __denorm : 1;
61061da546Spatrick   uint16_t __zdiv : 1;
62061da546Spatrick   uint16_t __ovrfl : 1;
63061da546Spatrick   uint16_t __undfl : 1;
64061da546Spatrick   uint16_t __precis : 1;
65061da546Spatrick   uint16_t __stkflt : 1;
66061da546Spatrick   uint16_t __errsumm : 1;
67061da546Spatrick   uint16_t __c0 : 1;
68061da546Spatrick   uint16_t __c1 : 1;
69061da546Spatrick   uint16_t __c2 : 1;
70061da546Spatrick   uint16_t __tos : 3;
71061da546Spatrick   uint16_t __c3 : 1;
72061da546Spatrick   uint16_t __busy : 1;
73061da546Spatrick } __i386_fp_status_t;
74061da546Spatrick 
75061da546Spatrick typedef struct {
76061da546Spatrick   uint8_t __mmst_reg[10];
77061da546Spatrick   uint8_t __mmst_rsrv[6];
78061da546Spatrick } __i386_mmst_reg;
79061da546Spatrick 
80061da546Spatrick typedef struct { uint8_t __xmm_reg[16]; } __i386_xmm_reg;
81061da546Spatrick 
82061da546Spatrick typedef struct {
83061da546Spatrick   uint32_t __fpu_reserved[2];
84061da546Spatrick   __i386_fp_control_t __fpu_fcw;
85061da546Spatrick   __i386_fp_status_t __fpu_fsw;
86061da546Spatrick   uint8_t __fpu_ftw;
87061da546Spatrick   uint8_t __fpu_rsrv1;
88061da546Spatrick   uint16_t __fpu_fop;
89061da546Spatrick   uint32_t __fpu_ip;
90061da546Spatrick   uint16_t __fpu_cs;
91061da546Spatrick   uint16_t __fpu_rsrv2;
92061da546Spatrick   uint32_t __fpu_dp;
93061da546Spatrick   uint16_t __fpu_ds;
94061da546Spatrick   uint16_t __fpu_rsrv3;
95061da546Spatrick   uint32_t __fpu_mxcsr;
96061da546Spatrick   uint32_t __fpu_mxcsrmask;
97061da546Spatrick   __i386_mmst_reg __fpu_stmm0;
98061da546Spatrick   __i386_mmst_reg __fpu_stmm1;
99061da546Spatrick   __i386_mmst_reg __fpu_stmm2;
100061da546Spatrick   __i386_mmst_reg __fpu_stmm3;
101061da546Spatrick   __i386_mmst_reg __fpu_stmm4;
102061da546Spatrick   __i386_mmst_reg __fpu_stmm5;
103061da546Spatrick   __i386_mmst_reg __fpu_stmm6;
104061da546Spatrick   __i386_mmst_reg __fpu_stmm7;
105061da546Spatrick   __i386_xmm_reg __fpu_xmm0;
106061da546Spatrick   __i386_xmm_reg __fpu_xmm1;
107061da546Spatrick   __i386_xmm_reg __fpu_xmm2;
108061da546Spatrick   __i386_xmm_reg __fpu_xmm3;
109061da546Spatrick   __i386_xmm_reg __fpu_xmm4;
110061da546Spatrick   __i386_xmm_reg __fpu_xmm5;
111061da546Spatrick   __i386_xmm_reg __fpu_xmm6;
112061da546Spatrick   __i386_xmm_reg __fpu_xmm7;
113061da546Spatrick   uint8_t __fpu_rsrv4[14 * 16];
114061da546Spatrick   uint32_t __fpu_reserved1;
115061da546Spatrick } __i386_float_state_t;
116061da546Spatrick 
117061da546Spatrick typedef struct {
118061da546Spatrick   uint32_t __fpu_reserved[2];
119061da546Spatrick   __i386_fp_control_t __fpu_fcw;
120061da546Spatrick   __i386_fp_status_t __fpu_fsw;
121061da546Spatrick   uint8_t __fpu_ftw;
122061da546Spatrick   uint8_t __fpu_rsrv1;
123061da546Spatrick   uint16_t __fpu_fop;
124061da546Spatrick   uint32_t __fpu_ip;
125061da546Spatrick   uint16_t __fpu_cs;
126061da546Spatrick   uint16_t __fpu_rsrv2;
127061da546Spatrick   uint32_t __fpu_dp;
128061da546Spatrick   uint16_t __fpu_ds;
129061da546Spatrick   uint16_t __fpu_rsrv3;
130061da546Spatrick   uint32_t __fpu_mxcsr;
131061da546Spatrick   uint32_t __fpu_mxcsrmask;
132061da546Spatrick   __i386_mmst_reg __fpu_stmm0;
133061da546Spatrick   __i386_mmst_reg __fpu_stmm1;
134061da546Spatrick   __i386_mmst_reg __fpu_stmm2;
135061da546Spatrick   __i386_mmst_reg __fpu_stmm3;
136061da546Spatrick   __i386_mmst_reg __fpu_stmm4;
137061da546Spatrick   __i386_mmst_reg __fpu_stmm5;
138061da546Spatrick   __i386_mmst_reg __fpu_stmm6;
139061da546Spatrick   __i386_mmst_reg __fpu_stmm7;
140061da546Spatrick   __i386_xmm_reg __fpu_xmm0;
141061da546Spatrick   __i386_xmm_reg __fpu_xmm1;
142061da546Spatrick   __i386_xmm_reg __fpu_xmm2;
143061da546Spatrick   __i386_xmm_reg __fpu_xmm3;
144061da546Spatrick   __i386_xmm_reg __fpu_xmm4;
145061da546Spatrick   __i386_xmm_reg __fpu_xmm5;
146061da546Spatrick   __i386_xmm_reg __fpu_xmm6;
147061da546Spatrick   __i386_xmm_reg __fpu_xmm7;
148061da546Spatrick   uint8_t __fpu_rsrv4[14 * 16];
149061da546Spatrick   uint32_t __fpu_reserved1;
150061da546Spatrick   uint8_t __avx_reserved1[64];
151061da546Spatrick   __i386_xmm_reg __fpu_ymmh0;
152061da546Spatrick   __i386_xmm_reg __fpu_ymmh1;
153061da546Spatrick   __i386_xmm_reg __fpu_ymmh2;
154061da546Spatrick   __i386_xmm_reg __fpu_ymmh3;
155061da546Spatrick   __i386_xmm_reg __fpu_ymmh4;
156061da546Spatrick   __i386_xmm_reg __fpu_ymmh5;
157061da546Spatrick   __i386_xmm_reg __fpu_ymmh6;
158061da546Spatrick   __i386_xmm_reg __fpu_ymmh7;
159061da546Spatrick } __i386_avx_state_t;
160061da546Spatrick 
161061da546Spatrick typedef struct { uint8_t __ymm_reg[32]; } __i386_ymm_reg;
162061da546Spatrick typedef struct { uint8_t __opmask_reg[8]; } __i386_opmask_reg;
163061da546Spatrick 
164061da546Spatrick typedef struct {
165061da546Spatrick   uint32_t __fpu_reserved[2];
166061da546Spatrick   __i386_fp_control_t __fpu_fcw;
167061da546Spatrick   __i386_fp_status_t __fpu_fsw;
168061da546Spatrick   uint8_t __fpu_ftw;
169061da546Spatrick   uint8_t __fpu_rsrv1;
170061da546Spatrick   uint16_t __fpu_fop;
171061da546Spatrick   uint32_t __fpu_ip;
172061da546Spatrick   uint16_t __fpu_cs;
173061da546Spatrick   uint16_t __fpu_rsrv2;
174061da546Spatrick   uint32_t __fpu_dp;
175061da546Spatrick   uint16_t __fpu_ds;
176061da546Spatrick   uint16_t __fpu_rsrv3;
177061da546Spatrick   uint32_t __fpu_mxcsr;
178061da546Spatrick   uint32_t __fpu_mxcsrmask;
179061da546Spatrick   __i386_mmst_reg __fpu_stmm0;
180061da546Spatrick   __i386_mmst_reg __fpu_stmm1;
181061da546Spatrick   __i386_mmst_reg __fpu_stmm2;
182061da546Spatrick   __i386_mmst_reg __fpu_stmm3;
183061da546Spatrick   __i386_mmst_reg __fpu_stmm4;
184061da546Spatrick   __i386_mmst_reg __fpu_stmm5;
185061da546Spatrick   __i386_mmst_reg __fpu_stmm6;
186061da546Spatrick   __i386_mmst_reg __fpu_stmm7;
187061da546Spatrick   __i386_xmm_reg __fpu_xmm0;
188061da546Spatrick   __i386_xmm_reg __fpu_xmm1;
189061da546Spatrick   __i386_xmm_reg __fpu_xmm2;
190061da546Spatrick   __i386_xmm_reg __fpu_xmm3;
191061da546Spatrick   __i386_xmm_reg __fpu_xmm4;
192061da546Spatrick   __i386_xmm_reg __fpu_xmm5;
193061da546Spatrick   __i386_xmm_reg __fpu_xmm6;
194061da546Spatrick   __i386_xmm_reg __fpu_xmm7;
195061da546Spatrick   uint8_t __fpu_rsrv4[14 * 16];
196061da546Spatrick   uint32_t __fpu_reserved1;
197061da546Spatrick   uint8_t __avx_reserved1[64];
198061da546Spatrick   __i386_xmm_reg __fpu_ymmh0;
199061da546Spatrick   __i386_xmm_reg __fpu_ymmh1;
200061da546Spatrick   __i386_xmm_reg __fpu_ymmh2;
201061da546Spatrick   __i386_xmm_reg __fpu_ymmh3;
202061da546Spatrick   __i386_xmm_reg __fpu_ymmh4;
203061da546Spatrick   __i386_xmm_reg __fpu_ymmh5;
204061da546Spatrick   __i386_xmm_reg __fpu_ymmh6;
205061da546Spatrick   __i386_xmm_reg __fpu_ymmh7;
206061da546Spatrick   __i386_opmask_reg __fpu_k0;
207061da546Spatrick   __i386_opmask_reg __fpu_k1;
208061da546Spatrick   __i386_opmask_reg __fpu_k2;
209061da546Spatrick   __i386_opmask_reg __fpu_k3;
210061da546Spatrick   __i386_opmask_reg __fpu_k4;
211061da546Spatrick   __i386_opmask_reg __fpu_k5;
212061da546Spatrick   __i386_opmask_reg __fpu_k6;
213061da546Spatrick   __i386_opmask_reg __fpu_k7;
214061da546Spatrick   __i386_ymm_reg __fpu_zmmh0;
215061da546Spatrick   __i386_ymm_reg __fpu_zmmh1;
216061da546Spatrick   __i386_ymm_reg __fpu_zmmh2;
217061da546Spatrick   __i386_ymm_reg __fpu_zmmh3;
218061da546Spatrick   __i386_ymm_reg __fpu_zmmh4;
219061da546Spatrick   __i386_ymm_reg __fpu_zmmh5;
220061da546Spatrick   __i386_ymm_reg __fpu_zmmh6;
221061da546Spatrick   __i386_ymm_reg __fpu_zmmh7;
222061da546Spatrick } __i386_avx512f_state_t;
223061da546Spatrick 
224061da546Spatrick typedef struct {
225061da546Spatrick   uint32_t __trapno;
226061da546Spatrick   uint32_t __err;
227061da546Spatrick   uint32_t __faultvaddr;
228061da546Spatrick } __i386_exception_state_t;
229061da546Spatrick 
230061da546Spatrick typedef struct {
231061da546Spatrick   uint32_t __dr0;
232061da546Spatrick   uint32_t __dr1;
233061da546Spatrick   uint32_t __dr2;
234061da546Spatrick   uint32_t __dr3;
235061da546Spatrick   uint32_t __dr4;
236061da546Spatrick   uint32_t __dr5;
237061da546Spatrick   uint32_t __dr6;
238061da546Spatrick   uint32_t __dr7;
239061da546Spatrick } __i386_debug_state_t;
240061da546Spatrick 
241061da546Spatrick #endif
242