xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/Process/Utility/lldb-x86-register-enums.h (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1061da546Spatrick //===-- lldb-x86-register-enums.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 
9dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H
10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H
11061da546Spatrick 
12061da546Spatrick namespace lldb_private {
13061da546Spatrick // LLDB register codes (e.g. RegisterKind == eRegisterKindLLDB)
14061da546Spatrick 
15061da546Spatrick // Internal codes for all i386 registers.
16061da546Spatrick enum {
17061da546Spatrick   k_first_gpr_i386,
18061da546Spatrick   lldb_eax_i386 = k_first_gpr_i386,
19061da546Spatrick   lldb_ebx_i386,
20061da546Spatrick   lldb_ecx_i386,
21061da546Spatrick   lldb_edx_i386,
22061da546Spatrick   lldb_edi_i386,
23061da546Spatrick   lldb_esi_i386,
24061da546Spatrick   lldb_ebp_i386,
25061da546Spatrick   lldb_esp_i386,
26061da546Spatrick   lldb_eip_i386,
27061da546Spatrick   lldb_eflags_i386,
28061da546Spatrick   lldb_cs_i386,
29061da546Spatrick   lldb_fs_i386,
30061da546Spatrick   lldb_gs_i386,
31061da546Spatrick   lldb_ss_i386,
32061da546Spatrick   lldb_ds_i386,
33061da546Spatrick   lldb_es_i386,
34061da546Spatrick 
35061da546Spatrick   k_first_alias_i386,
36061da546Spatrick   lldb_ax_i386 = k_first_alias_i386,
37061da546Spatrick   lldb_bx_i386,
38061da546Spatrick   lldb_cx_i386,
39061da546Spatrick   lldb_dx_i386,
40061da546Spatrick   lldb_di_i386,
41061da546Spatrick   lldb_si_i386,
42061da546Spatrick   lldb_bp_i386,
43061da546Spatrick   lldb_sp_i386,
44061da546Spatrick   lldb_ah_i386,
45061da546Spatrick   lldb_bh_i386,
46061da546Spatrick   lldb_ch_i386,
47061da546Spatrick   lldb_dh_i386,
48061da546Spatrick   lldb_al_i386,
49061da546Spatrick   lldb_bl_i386,
50061da546Spatrick   lldb_cl_i386,
51061da546Spatrick   lldb_dl_i386,
52061da546Spatrick   k_last_alias_i386 = lldb_dl_i386,
53061da546Spatrick 
54061da546Spatrick   k_last_gpr_i386 = k_last_alias_i386,
55061da546Spatrick 
56061da546Spatrick   k_first_fpr_i386,
57061da546Spatrick   lldb_fctrl_i386 = k_first_fpr_i386,
58061da546Spatrick   lldb_fstat_i386,
59061da546Spatrick   lldb_ftag_i386,
60061da546Spatrick   lldb_fop_i386,
61061da546Spatrick   lldb_fiseg_i386,
62061da546Spatrick   lldb_fioff_i386,
63061da546Spatrick   lldb_foseg_i386,
64061da546Spatrick   lldb_fooff_i386,
65061da546Spatrick   lldb_mxcsr_i386,
66061da546Spatrick   lldb_mxcsrmask_i386,
67061da546Spatrick   lldb_st0_i386,
68061da546Spatrick   lldb_st1_i386,
69061da546Spatrick   lldb_st2_i386,
70061da546Spatrick   lldb_st3_i386,
71061da546Spatrick   lldb_st4_i386,
72061da546Spatrick   lldb_st5_i386,
73061da546Spatrick   lldb_st6_i386,
74061da546Spatrick   lldb_st7_i386,
75061da546Spatrick   lldb_mm0_i386,
76061da546Spatrick   lldb_mm1_i386,
77061da546Spatrick   lldb_mm2_i386,
78061da546Spatrick   lldb_mm3_i386,
79061da546Spatrick   lldb_mm4_i386,
80061da546Spatrick   lldb_mm5_i386,
81061da546Spatrick   lldb_mm6_i386,
82061da546Spatrick   lldb_mm7_i386,
83061da546Spatrick   lldb_xmm0_i386,
84061da546Spatrick   lldb_xmm1_i386,
85061da546Spatrick   lldb_xmm2_i386,
86061da546Spatrick   lldb_xmm3_i386,
87061da546Spatrick   lldb_xmm4_i386,
88061da546Spatrick   lldb_xmm5_i386,
89061da546Spatrick   lldb_xmm6_i386,
90061da546Spatrick   lldb_xmm7_i386,
91061da546Spatrick   k_last_fpr_i386 = lldb_xmm7_i386,
92061da546Spatrick 
93061da546Spatrick   k_first_avx_i386,
94061da546Spatrick   lldb_ymm0_i386 = k_first_avx_i386,
95061da546Spatrick   lldb_ymm1_i386,
96061da546Spatrick   lldb_ymm2_i386,
97061da546Spatrick   lldb_ymm3_i386,
98061da546Spatrick   lldb_ymm4_i386,
99061da546Spatrick   lldb_ymm5_i386,
100061da546Spatrick   lldb_ymm6_i386,
101061da546Spatrick   lldb_ymm7_i386,
102061da546Spatrick   k_last_avx_i386 = lldb_ymm7_i386,
103061da546Spatrick 
104061da546Spatrick   k_first_mpxr_i386,
105061da546Spatrick   lldb_bnd0_i386 = k_first_mpxr_i386,
106061da546Spatrick   lldb_bnd1_i386,
107061da546Spatrick   lldb_bnd2_i386,
108061da546Spatrick   lldb_bnd3_i386,
109*be691f3bSpatrick   k_last_mpxr_i386 = lldb_bnd3_i386,
110061da546Spatrick 
111061da546Spatrick   k_first_mpxc_i386,
112061da546Spatrick   lldb_bndcfgu_i386 = k_first_mpxc_i386,
113061da546Spatrick   lldb_bndstatus_i386,
114061da546Spatrick   k_last_mpxc_i386 = lldb_bndstatus_i386,
115061da546Spatrick 
116dda28197Spatrick   k_first_dbr_i386,
117dda28197Spatrick   lldb_dr0_i386 = k_first_dbr_i386,
118061da546Spatrick   lldb_dr1_i386,
119061da546Spatrick   lldb_dr2_i386,
120061da546Spatrick   lldb_dr3_i386,
121061da546Spatrick   lldb_dr4_i386,
122061da546Spatrick   lldb_dr5_i386,
123061da546Spatrick   lldb_dr6_i386,
124061da546Spatrick   lldb_dr7_i386,
125dda28197Spatrick   k_last_dbr_i386 = lldb_dr7_i386,
126061da546Spatrick 
127061da546Spatrick   k_num_registers_i386,
128061da546Spatrick   k_num_gpr_registers_i386 = k_last_gpr_i386 - k_first_gpr_i386 + 1,
129061da546Spatrick   k_num_fpr_registers_i386 = k_last_fpr_i386 - k_first_fpr_i386 + 1,
130061da546Spatrick   k_num_avx_registers_i386 = k_last_avx_i386 - k_first_avx_i386 + 1,
131061da546Spatrick   k_num_mpx_registers_i386 = k_last_mpxc_i386 - k_first_mpxr_i386 + 1,
132061da546Spatrick   k_num_user_registers_i386 = k_num_gpr_registers_i386 +
133061da546Spatrick                               k_num_fpr_registers_i386 +
134061da546Spatrick                               k_num_avx_registers_i386 +
135061da546Spatrick                               k_num_mpx_registers_i386,
136dda28197Spatrick   k_num_dbr_registers_i386 = k_last_dbr_i386 - k_first_dbr_i386 + 1,
137061da546Spatrick };
138061da546Spatrick 
139061da546Spatrick // Internal codes for all x86_64 registers.
140061da546Spatrick enum {
141061da546Spatrick   k_first_gpr_x86_64,
142061da546Spatrick   lldb_rax_x86_64 = k_first_gpr_x86_64,
143061da546Spatrick   lldb_rbx_x86_64,
144061da546Spatrick   lldb_rcx_x86_64,
145061da546Spatrick   lldb_rdx_x86_64,
146061da546Spatrick   lldb_rdi_x86_64,
147061da546Spatrick   lldb_rsi_x86_64,
148061da546Spatrick   lldb_rbp_x86_64,
149061da546Spatrick   lldb_rsp_x86_64,
150061da546Spatrick   lldb_r8_x86_64,
151061da546Spatrick   lldb_r9_x86_64,
152061da546Spatrick   lldb_r10_x86_64,
153061da546Spatrick   lldb_r11_x86_64,
154061da546Spatrick   lldb_r12_x86_64,
155061da546Spatrick   lldb_r13_x86_64,
156061da546Spatrick   lldb_r14_x86_64,
157061da546Spatrick   lldb_r15_x86_64,
158061da546Spatrick   lldb_rip_x86_64,
159061da546Spatrick   lldb_rflags_x86_64,
160061da546Spatrick   lldb_cs_x86_64,
161061da546Spatrick   lldb_fs_x86_64,
162061da546Spatrick   lldb_gs_x86_64,
163061da546Spatrick   lldb_ss_x86_64,
164061da546Spatrick   lldb_ds_x86_64,
165061da546Spatrick   lldb_es_x86_64,
166061da546Spatrick 
167061da546Spatrick   k_first_alias_x86_64,
168061da546Spatrick   lldb_eax_x86_64 = k_first_alias_x86_64,
169061da546Spatrick   lldb_ebx_x86_64,
170061da546Spatrick   lldb_ecx_x86_64,
171061da546Spatrick   lldb_edx_x86_64,
172061da546Spatrick   lldb_edi_x86_64,
173061da546Spatrick   lldb_esi_x86_64,
174061da546Spatrick   lldb_ebp_x86_64,
175061da546Spatrick   lldb_esp_x86_64,
176061da546Spatrick   lldb_r8d_x86_64,  // Low 32 bits of r8
177061da546Spatrick   lldb_r9d_x86_64,  // Low 32 bits of r9
178061da546Spatrick   lldb_r10d_x86_64, // Low 32 bits of r10
179061da546Spatrick   lldb_r11d_x86_64, // Low 32 bits of r11
180061da546Spatrick   lldb_r12d_x86_64, // Low 32 bits of r12
181061da546Spatrick   lldb_r13d_x86_64, // Low 32 bits of r13
182061da546Spatrick   lldb_r14d_x86_64, // Low 32 bits of r14
183061da546Spatrick   lldb_r15d_x86_64, // Low 32 bits of r15
184061da546Spatrick   lldb_ax_x86_64,
185061da546Spatrick   lldb_bx_x86_64,
186061da546Spatrick   lldb_cx_x86_64,
187061da546Spatrick   lldb_dx_x86_64,
188061da546Spatrick   lldb_di_x86_64,
189061da546Spatrick   lldb_si_x86_64,
190061da546Spatrick   lldb_bp_x86_64,
191061da546Spatrick   lldb_sp_x86_64,
192061da546Spatrick   lldb_r8w_x86_64,  // Low 16 bits of r8
193061da546Spatrick   lldb_r9w_x86_64,  // Low 16 bits of r9
194061da546Spatrick   lldb_r10w_x86_64, // Low 16 bits of r10
195061da546Spatrick   lldb_r11w_x86_64, // Low 16 bits of r11
196061da546Spatrick   lldb_r12w_x86_64, // Low 16 bits of r12
197061da546Spatrick   lldb_r13w_x86_64, // Low 16 bits of r13
198061da546Spatrick   lldb_r14w_x86_64, // Low 16 bits of r14
199061da546Spatrick   lldb_r15w_x86_64, // Low 16 bits of r15
200061da546Spatrick   lldb_ah_x86_64,
201061da546Spatrick   lldb_bh_x86_64,
202061da546Spatrick   lldb_ch_x86_64,
203061da546Spatrick   lldb_dh_x86_64,
204061da546Spatrick   lldb_al_x86_64,
205061da546Spatrick   lldb_bl_x86_64,
206061da546Spatrick   lldb_cl_x86_64,
207061da546Spatrick   lldb_dl_x86_64,
208061da546Spatrick   lldb_dil_x86_64,
209061da546Spatrick   lldb_sil_x86_64,
210061da546Spatrick   lldb_bpl_x86_64,
211061da546Spatrick   lldb_spl_x86_64,
212061da546Spatrick   lldb_r8l_x86_64,  // Low 8 bits of r8
213061da546Spatrick   lldb_r9l_x86_64,  // Low 8 bits of r9
214061da546Spatrick   lldb_r10l_x86_64, // Low 8 bits of r10
215061da546Spatrick   lldb_r11l_x86_64, // Low 8 bits of r11
216061da546Spatrick   lldb_r12l_x86_64, // Low 8 bits of r12
217061da546Spatrick   lldb_r13l_x86_64, // Low 8 bits of r13
218061da546Spatrick   lldb_r14l_x86_64, // Low 8 bits of r14
219061da546Spatrick   lldb_r15l_x86_64, // Low 8 bits of r15
220061da546Spatrick   k_last_alias_x86_64 = lldb_r15l_x86_64,
221061da546Spatrick 
222061da546Spatrick   k_last_gpr_x86_64 = k_last_alias_x86_64,
223061da546Spatrick 
224061da546Spatrick   k_first_fpr_x86_64,
225061da546Spatrick   lldb_fctrl_x86_64 = k_first_fpr_x86_64,
226061da546Spatrick   lldb_fstat_x86_64,
227061da546Spatrick   lldb_ftag_x86_64,
228061da546Spatrick   lldb_fop_x86_64,
229061da546Spatrick   lldb_fiseg_x86_64,
230061da546Spatrick   lldb_fioff_x86_64,
231*be691f3bSpatrick   lldb_fip_x86_64,
232061da546Spatrick   lldb_foseg_x86_64,
233061da546Spatrick   lldb_fooff_x86_64,
234*be691f3bSpatrick   lldb_fdp_x86_64,
235061da546Spatrick   lldb_mxcsr_x86_64,
236061da546Spatrick   lldb_mxcsrmask_x86_64,
237061da546Spatrick   lldb_st0_x86_64,
238061da546Spatrick   lldb_st1_x86_64,
239061da546Spatrick   lldb_st2_x86_64,
240061da546Spatrick   lldb_st3_x86_64,
241061da546Spatrick   lldb_st4_x86_64,
242061da546Spatrick   lldb_st5_x86_64,
243061da546Spatrick   lldb_st6_x86_64,
244061da546Spatrick   lldb_st7_x86_64,
245061da546Spatrick   lldb_mm0_x86_64,
246061da546Spatrick   lldb_mm1_x86_64,
247061da546Spatrick   lldb_mm2_x86_64,
248061da546Spatrick   lldb_mm3_x86_64,
249061da546Spatrick   lldb_mm4_x86_64,
250061da546Spatrick   lldb_mm5_x86_64,
251061da546Spatrick   lldb_mm6_x86_64,
252061da546Spatrick   lldb_mm7_x86_64,
253061da546Spatrick   lldb_xmm0_x86_64,
254061da546Spatrick   lldb_xmm1_x86_64,
255061da546Spatrick   lldb_xmm2_x86_64,
256061da546Spatrick   lldb_xmm3_x86_64,
257061da546Spatrick   lldb_xmm4_x86_64,
258061da546Spatrick   lldb_xmm5_x86_64,
259061da546Spatrick   lldb_xmm6_x86_64,
260061da546Spatrick   lldb_xmm7_x86_64,
261061da546Spatrick   lldb_xmm8_x86_64,
262061da546Spatrick   lldb_xmm9_x86_64,
263061da546Spatrick   lldb_xmm10_x86_64,
264061da546Spatrick   lldb_xmm11_x86_64,
265061da546Spatrick   lldb_xmm12_x86_64,
266061da546Spatrick   lldb_xmm13_x86_64,
267061da546Spatrick   lldb_xmm14_x86_64,
268061da546Spatrick   lldb_xmm15_x86_64,
269061da546Spatrick   k_last_fpr_x86_64 = lldb_xmm15_x86_64,
270061da546Spatrick 
271061da546Spatrick   k_first_avx_x86_64,
272061da546Spatrick   lldb_ymm0_x86_64 = k_first_avx_x86_64,
273061da546Spatrick   lldb_ymm1_x86_64,
274061da546Spatrick   lldb_ymm2_x86_64,
275061da546Spatrick   lldb_ymm3_x86_64,
276061da546Spatrick   lldb_ymm4_x86_64,
277061da546Spatrick   lldb_ymm5_x86_64,
278061da546Spatrick   lldb_ymm6_x86_64,
279061da546Spatrick   lldb_ymm7_x86_64,
280061da546Spatrick   lldb_ymm8_x86_64,
281061da546Spatrick   lldb_ymm9_x86_64,
282061da546Spatrick   lldb_ymm10_x86_64,
283061da546Spatrick   lldb_ymm11_x86_64,
284061da546Spatrick   lldb_ymm12_x86_64,
285061da546Spatrick   lldb_ymm13_x86_64,
286061da546Spatrick   lldb_ymm14_x86_64,
287061da546Spatrick   lldb_ymm15_x86_64,
288061da546Spatrick   k_last_avx_x86_64 = lldb_ymm15_x86_64,
289061da546Spatrick 
290061da546Spatrick   k_first_mpxr_x86_64,
291061da546Spatrick   lldb_bnd0_x86_64 = k_first_mpxr_x86_64,
292061da546Spatrick   lldb_bnd1_x86_64,
293061da546Spatrick   lldb_bnd2_x86_64,
294061da546Spatrick   lldb_bnd3_x86_64,
295061da546Spatrick   k_last_mpxr_x86_64 = lldb_bnd3_x86_64,
296061da546Spatrick 
297061da546Spatrick   k_first_mpxc_x86_64,
298061da546Spatrick   lldb_bndcfgu_x86_64 = k_first_mpxc_x86_64,
299061da546Spatrick   lldb_bndstatus_x86_64,
300061da546Spatrick   k_last_mpxc_x86_64 = lldb_bndstatus_x86_64,
301061da546Spatrick 
302061da546Spatrick   k_first_dbr_x86_64,
303061da546Spatrick   lldb_dr0_x86_64 = k_first_dbr_x86_64,
304061da546Spatrick   lldb_dr1_x86_64,
305061da546Spatrick   lldb_dr2_x86_64,
306061da546Spatrick   lldb_dr3_x86_64,
307061da546Spatrick   lldb_dr4_x86_64,
308061da546Spatrick   lldb_dr5_x86_64,
309061da546Spatrick   lldb_dr6_x86_64,
310061da546Spatrick   lldb_dr7_x86_64,
311061da546Spatrick   k_last_dbr_x86_64 = lldb_dr7_x86_64,
312061da546Spatrick 
313061da546Spatrick   k_num_registers_x86_64,
314061da546Spatrick   k_num_gpr_registers_x86_64 = k_last_gpr_x86_64 - k_first_gpr_x86_64 + 1,
315061da546Spatrick   k_num_fpr_registers_x86_64 = k_last_fpr_x86_64 - k_first_fpr_x86_64 + 1,
316061da546Spatrick   k_num_avx_registers_x86_64 = k_last_avx_x86_64 - k_first_avx_x86_64 + 1,
317061da546Spatrick   k_num_mpx_registers_x86_64 = k_last_mpxc_x86_64 - k_first_mpxr_x86_64 + 1,
318061da546Spatrick   k_num_user_registers_x86_64 = k_num_gpr_registers_x86_64 +
319061da546Spatrick                                 k_num_fpr_registers_x86_64 +
320061da546Spatrick                                 k_num_avx_registers_x86_64 +
321061da546Spatrick                                 k_num_mpx_registers_x86_64,
322061da546Spatrick   k_num_dbr_registers_x86_64 = k_last_dbr_x86_64 - k_first_dbr_x86_64 + 1,
323061da546Spatrick };
324061da546Spatrick }
325061da546Spatrick 
326dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H
327