1 | //===-- lldb-x86-register-enums.h -------------------------------*- C++ -*-===// |
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H |
10 | #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H |
11 | |
12 | namespace lldb_private { |
13 | // LLDB register codes (e.g. RegisterKind == eRegisterKindLLDB) |
14 | |
15 | // Internal codes for all i386 registers. |
16 | enum { |
17 | k_first_gpr_i386, |
18 | lldb_eax_i386 = k_first_gpr_i386, |
19 | lldb_ebx_i386, |
20 | lldb_ecx_i386, |
21 | lldb_edx_i386, |
22 | lldb_edi_i386, |
23 | lldb_esi_i386, |
24 | lldb_ebp_i386, |
25 | lldb_esp_i386, |
26 | lldb_eip_i386, |
27 | lldb_eflags_i386, |
28 | lldb_cs_i386, |
29 | lldb_fs_i386, |
30 | lldb_gs_i386, |
31 | lldb_ss_i386, |
32 | lldb_ds_i386, |
33 | lldb_es_i386, |
34 | |
35 | k_first_alias_i386, |
36 | lldb_ax_i386 = k_first_alias_i386, |
37 | lldb_bx_i386, |
38 | lldb_cx_i386, |
39 | lldb_dx_i386, |
40 | lldb_di_i386, |
41 | lldb_si_i386, |
42 | lldb_bp_i386, |
43 | lldb_sp_i386, |
44 | lldb_ah_i386, |
45 | lldb_bh_i386, |
46 | lldb_ch_i386, |
47 | lldb_dh_i386, |
48 | lldb_al_i386, |
49 | lldb_bl_i386, |
50 | lldb_cl_i386, |
51 | lldb_dl_i386, |
52 | k_last_alias_i386 = lldb_dl_i386, |
53 | |
54 | k_last_gpr_i386 = k_last_alias_i386, |
55 | |
56 | k_first_fpr_i386, |
57 | lldb_fctrl_i386 = k_first_fpr_i386, |
58 | lldb_fstat_i386, |
59 | lldb_ftag_i386, |
60 | lldb_fop_i386, |
61 | lldb_fiseg_i386, |
62 | lldb_fioff_i386, |
63 | lldb_foseg_i386, |
64 | lldb_fooff_i386, |
65 | lldb_mxcsr_i386, |
66 | lldb_mxcsrmask_i386, |
67 | lldb_st0_i386, |
68 | lldb_st1_i386, |
69 | lldb_st2_i386, |
70 | lldb_st3_i386, |
71 | lldb_st4_i386, |
72 | lldb_st5_i386, |
73 | lldb_st6_i386, |
74 | lldb_st7_i386, |
75 | lldb_mm0_i386, |
76 | lldb_mm1_i386, |
77 | lldb_mm2_i386, |
78 | lldb_mm3_i386, |
79 | lldb_mm4_i386, |
80 | lldb_mm5_i386, |
81 | lldb_mm6_i386, |
82 | lldb_mm7_i386, |
83 | lldb_xmm0_i386, |
84 | lldb_xmm1_i386, |
85 | lldb_xmm2_i386, |
86 | lldb_xmm3_i386, |
87 | lldb_xmm4_i386, |
88 | lldb_xmm5_i386, |
89 | lldb_xmm6_i386, |
90 | lldb_xmm7_i386, |
91 | k_last_fpr_i386 = lldb_xmm7_i386, |
92 | |
93 | k_first_avx_i386, |
94 | lldb_ymm0_i386 = k_first_avx_i386, |
95 | lldb_ymm1_i386, |
96 | lldb_ymm2_i386, |
97 | lldb_ymm3_i386, |
98 | lldb_ymm4_i386, |
99 | lldb_ymm5_i386, |
100 | lldb_ymm6_i386, |
101 | lldb_ymm7_i386, |
102 | k_last_avx_i386 = lldb_ymm7_i386, |
103 | |
104 | k_first_mpxr_i386, |
105 | lldb_bnd0_i386 = k_first_mpxr_i386, |
106 | lldb_bnd1_i386, |
107 | lldb_bnd2_i386, |
108 | lldb_bnd3_i386, |
109 | k_last_mpxr_i386 = lldb_bnd3_i386, |
110 | |
111 | k_first_mpxc_i386, |
112 | lldb_bndcfgu_i386 = k_first_mpxc_i386, |
113 | lldb_bndstatus_i386, |
114 | k_last_mpxc_i386 = lldb_bndstatus_i386, |
115 | |
116 | k_first_dbr_i386, |
117 | lldb_dr0_i386 = k_first_dbr_i386, |
118 | lldb_dr1_i386, |
119 | lldb_dr2_i386, |
120 | lldb_dr3_i386, |
121 | lldb_dr4_i386, |
122 | lldb_dr5_i386, |
123 | lldb_dr6_i386, |
124 | lldb_dr7_i386, |
125 | k_last_dbr_i386 = lldb_dr7_i386, |
126 | |
127 | k_num_registers_i386, |
128 | k_num_gpr_registers_i386 = k_last_gpr_i386 - k_first_gpr_i386 + 1, |
129 | k_num_fpr_registers_i386 = k_last_fpr_i386 - k_first_fpr_i386 + 1, |
130 | k_num_avx_registers_i386 = k_last_avx_i386 - k_first_avx_i386 + 1, |
131 | k_num_mpx_registers_i386 = k_last_mpxc_i386 - k_first_mpxr_i386 + 1, |
132 | k_num_user_registers_i386 = k_num_gpr_registers_i386 + |
133 | k_num_fpr_registers_i386 + |
134 | k_num_avx_registers_i386 + |
135 | k_num_mpx_registers_i386, |
136 | k_num_dbr_registers_i386 = k_last_dbr_i386 - k_first_dbr_i386 + 1, |
137 | }; |
138 | |
139 | // Internal codes for all x86_64 registers. |
140 | enum { |
141 | k_first_gpr_x86_64, |
142 | lldb_rax_x86_64 = k_first_gpr_x86_64, |
143 | lldb_rbx_x86_64, |
144 | lldb_rcx_x86_64, |
145 | lldb_rdx_x86_64, |
146 | lldb_rdi_x86_64, |
147 | lldb_rsi_x86_64, |
148 | lldb_rbp_x86_64, |
149 | lldb_rsp_x86_64, |
150 | lldb_r8_x86_64, |
151 | lldb_r9_x86_64, |
152 | lldb_r10_x86_64, |
153 | lldb_r11_x86_64, |
154 | lldb_r12_x86_64, |
155 | lldb_r13_x86_64, |
156 | lldb_r14_x86_64, |
157 | lldb_r15_x86_64, |
158 | lldb_rip_x86_64, |
159 | lldb_rflags_x86_64, |
160 | lldb_cs_x86_64, |
161 | lldb_fs_x86_64, |
162 | lldb_gs_x86_64, |
163 | lldb_ss_x86_64, |
164 | lldb_ds_x86_64, |
165 | lldb_es_x86_64, |
166 | |
167 | k_first_alias_x86_64, |
168 | lldb_eax_x86_64 = k_first_alias_x86_64, |
169 | lldb_ebx_x86_64, |
170 | lldb_ecx_x86_64, |
171 | lldb_edx_x86_64, |
172 | lldb_edi_x86_64, |
173 | lldb_esi_x86_64, |
174 | lldb_ebp_x86_64, |
175 | lldb_esp_x86_64, |
176 | lldb_r8d_x86_64, // Low 32 bits of r8 |
177 | lldb_r9d_x86_64, // Low 32 bits of r9 |
178 | lldb_r10d_x86_64, // Low 32 bits of r10 |
179 | lldb_r11d_x86_64, // Low 32 bits of r11 |
180 | lldb_r12d_x86_64, // Low 32 bits of r12 |
181 | lldb_r13d_x86_64, // Low 32 bits of r13 |
182 | lldb_r14d_x86_64, // Low 32 bits of r14 |
183 | lldb_r15d_x86_64, // Low 32 bits of r15 |
184 | lldb_ax_x86_64, |
185 | lldb_bx_x86_64, |
186 | lldb_cx_x86_64, |
187 | lldb_dx_x86_64, |
188 | lldb_di_x86_64, |
189 | lldb_si_x86_64, |
190 | lldb_bp_x86_64, |
191 | lldb_sp_x86_64, |
192 | lldb_r8w_x86_64, // Low 16 bits of r8 |
193 | lldb_r9w_x86_64, // Low 16 bits of r9 |
194 | lldb_r10w_x86_64, // Low 16 bits of r10 |
195 | lldb_r11w_x86_64, // Low 16 bits of r11 |
196 | lldb_r12w_x86_64, // Low 16 bits of r12 |
197 | lldb_r13w_x86_64, // Low 16 bits of r13 |
198 | lldb_r14w_x86_64, // Low 16 bits of r14 |
199 | lldb_r15w_x86_64, // Low 16 bits of r15 |
200 | lldb_ah_x86_64, |
201 | lldb_bh_x86_64, |
202 | lldb_ch_x86_64, |
203 | lldb_dh_x86_64, |
204 | lldb_al_x86_64, |
205 | lldb_bl_x86_64, |
206 | lldb_cl_x86_64, |
207 | lldb_dl_x86_64, |
208 | lldb_dil_x86_64, |
209 | lldb_sil_x86_64, |
210 | lldb_bpl_x86_64, |
211 | lldb_spl_x86_64, |
212 | lldb_r8l_x86_64, // Low 8 bits of r8 |
213 | lldb_r9l_x86_64, // Low 8 bits of r9 |
214 | lldb_r10l_x86_64, // Low 8 bits of r10 |
215 | lldb_r11l_x86_64, // Low 8 bits of r11 |
216 | lldb_r12l_x86_64, // Low 8 bits of r12 |
217 | lldb_r13l_x86_64, // Low 8 bits of r13 |
218 | lldb_r14l_x86_64, // Low 8 bits of r14 |
219 | lldb_r15l_x86_64, // Low 8 bits of r15 |
220 | k_last_alias_x86_64 = lldb_r15l_x86_64, |
221 | |
222 | k_last_gpr_x86_64 = k_last_alias_x86_64, |
223 | |
224 | k_first_fpr_x86_64, |
225 | lldb_fctrl_x86_64 = k_first_fpr_x86_64, |
226 | lldb_fstat_x86_64, |
227 | lldb_ftag_x86_64, |
228 | lldb_fop_x86_64, |
229 | lldb_fiseg_x86_64, |
230 | lldb_fioff_x86_64, |
231 | lldb_fip_x86_64, |
232 | lldb_foseg_x86_64, |
233 | lldb_fooff_x86_64, |
234 | lldb_fdp_x86_64, |
235 | lldb_mxcsr_x86_64, |
236 | lldb_mxcsrmask_x86_64, |
237 | lldb_st0_x86_64, |
238 | lldb_st1_x86_64, |
239 | lldb_st2_x86_64, |
240 | lldb_st3_x86_64, |
241 | lldb_st4_x86_64, |
242 | lldb_st5_x86_64, |
243 | lldb_st6_x86_64, |
244 | lldb_st7_x86_64, |
245 | lldb_mm0_x86_64, |
246 | lldb_mm1_x86_64, |
247 | lldb_mm2_x86_64, |
248 | lldb_mm3_x86_64, |
249 | lldb_mm4_x86_64, |
250 | lldb_mm5_x86_64, |
251 | lldb_mm6_x86_64, |
252 | lldb_mm7_x86_64, |
253 | lldb_xmm0_x86_64, |
254 | lldb_xmm1_x86_64, |
255 | lldb_xmm2_x86_64, |
256 | lldb_xmm3_x86_64, |
257 | lldb_xmm4_x86_64, |
258 | lldb_xmm5_x86_64, |
259 | lldb_xmm6_x86_64, |
260 | lldb_xmm7_x86_64, |
261 | lldb_xmm8_x86_64, |
262 | lldb_xmm9_x86_64, |
263 | lldb_xmm10_x86_64, |
264 | lldb_xmm11_x86_64, |
265 | lldb_xmm12_x86_64, |
266 | lldb_xmm13_x86_64, |
267 | lldb_xmm14_x86_64, |
268 | lldb_xmm15_x86_64, |
269 | k_last_fpr_x86_64 = lldb_xmm15_x86_64, |
270 | |
271 | k_first_avx_x86_64, |
272 | lldb_ymm0_x86_64 = k_first_avx_x86_64, |
273 | lldb_ymm1_x86_64, |
274 | lldb_ymm2_x86_64, |
275 | lldb_ymm3_x86_64, |
276 | lldb_ymm4_x86_64, |
277 | lldb_ymm5_x86_64, |
278 | lldb_ymm6_x86_64, |
279 | lldb_ymm7_x86_64, |
280 | lldb_ymm8_x86_64, |
281 | lldb_ymm9_x86_64, |
282 | lldb_ymm10_x86_64, |
283 | lldb_ymm11_x86_64, |
284 | lldb_ymm12_x86_64, |
285 | lldb_ymm13_x86_64, |
286 | lldb_ymm14_x86_64, |
287 | lldb_ymm15_x86_64, |
288 | k_last_avx_x86_64 = lldb_ymm15_x86_64, |
289 | |
290 | k_first_mpxr_x86_64, |
291 | lldb_bnd0_x86_64 = k_first_mpxr_x86_64, |
292 | lldb_bnd1_x86_64, |
293 | lldb_bnd2_x86_64, |
294 | lldb_bnd3_x86_64, |
295 | k_last_mpxr_x86_64 = lldb_bnd3_x86_64, |
296 | |
297 | k_first_mpxc_x86_64, |
298 | lldb_bndcfgu_x86_64 = k_first_mpxc_x86_64, |
299 | lldb_bndstatus_x86_64, |
300 | k_last_mpxc_x86_64 = lldb_bndstatus_x86_64, |
301 | |
302 | k_first_dbr_x86_64, |
303 | lldb_dr0_x86_64 = k_first_dbr_x86_64, |
304 | lldb_dr1_x86_64, |
305 | lldb_dr2_x86_64, |
306 | lldb_dr3_x86_64, |
307 | lldb_dr4_x86_64, |
308 | lldb_dr5_x86_64, |
309 | lldb_dr6_x86_64, |
310 | lldb_dr7_x86_64, |
311 | k_last_dbr_x86_64 = lldb_dr7_x86_64, |
312 | |
313 | k_num_registers_x86_64, |
314 | k_num_gpr_registers_x86_64 = k_last_gpr_x86_64 - k_first_gpr_x86_64 + 1, |
315 | k_num_fpr_registers_x86_64 = k_last_fpr_x86_64 - k_first_fpr_x86_64 + 1, |
316 | k_num_avx_registers_x86_64 = k_last_avx_x86_64 - k_first_avx_x86_64 + 1, |
317 | k_num_mpx_registers_x86_64 = k_last_mpxc_x86_64 - k_first_mpxr_x86_64 + 1, |
318 | k_num_user_registers_x86_64 = k_num_gpr_registers_x86_64 + |
319 | k_num_fpr_registers_x86_64 + |
320 | k_num_avx_registers_x86_64 + |
321 | k_num_mpx_registers_x86_64, |
322 | k_num_dbr_registers_x86_64 = k_last_dbr_x86_64 - k_first_dbr_x86_64 + 1, |
323 | }; |
324 | |
325 | // For platform that supports fs_base/gs_base registers. |
326 | namespace x86_64_with_base { |
327 | enum { |
328 | k_first_gpr, |
329 | lldb_rax = k_first_gpr, |
330 | lldb_rbx, |
331 | lldb_rcx, |
332 | lldb_rdx, |
333 | lldb_rdi, |
334 | lldb_rsi, |
335 | lldb_rbp, |
336 | lldb_rsp, |
337 | lldb_r8, |
338 | lldb_r9, |
339 | lldb_r10, |
340 | lldb_r11, |
341 | lldb_r12, |
342 | lldb_r13, |
343 | lldb_r14, |
344 | lldb_r15, |
345 | lldb_rip, |
346 | lldb_rflags, |
347 | lldb_cs, |
348 | lldb_fs, |
349 | lldb_gs, |
350 | lldb_ss, |
351 | lldb_fs_base, |
352 | lldb_gs_base, |
353 | lldb_ds, |
354 | lldb_es, |
355 | |
356 | k_first_alias, |
357 | lldb_eax = k_first_alias, |
358 | lldb_ebx, |
359 | lldb_ecx, |
360 | lldb_edx, |
361 | lldb_edi, |
362 | lldb_esi, |
363 | lldb_ebp, |
364 | lldb_esp, |
365 | lldb_r8d, // Low 32 bits of r8 |
366 | lldb_r9d, // Low 32 bits of r9 |
367 | lldb_r10d, // Low 32 bits of r10 |
368 | lldb_r11d, // Low 32 bits of r11 |
369 | lldb_r12d, // Low 32 bits of r12 |
370 | lldb_r13d, // Low 32 bits of r13 |
371 | lldb_r14d, // Low 32 bits of r14 |
372 | lldb_r15d, // Low 32 bits of r15 |
373 | lldb_ax, |
374 | lldb_bx, |
375 | lldb_cx, |
376 | lldb_dx, |
377 | lldb_di, |
378 | lldb_si, |
379 | lldb_bp, |
380 | lldb_sp, |
381 | lldb_r8w, // Low 16 bits of r8 |
382 | lldb_r9w, // Low 16 bits of r9 |
383 | lldb_r10w, // Low 16 bits of r10 |
384 | lldb_r11w, // Low 16 bits of r11 |
385 | lldb_r12w, // Low 16 bits of r12 |
386 | lldb_r13w, // Low 16 bits of r13 |
387 | lldb_r14w, // Low 16 bits of r14 |
388 | lldb_r15w, // Low 16 bits of r15 |
389 | lldb_ah, |
390 | lldb_bh, |
391 | lldb_ch, |
392 | lldb_dh, |
393 | lldb_al, |
394 | lldb_bl, |
395 | lldb_cl, |
396 | lldb_dl, |
397 | lldb_dil, |
398 | lldb_sil, |
399 | lldb_bpl, |
400 | lldb_spl, |
401 | lldb_r8l, // Low 8 bits of r8 |
402 | lldb_r9l, // Low 8 bits of r9 |
403 | lldb_r10l, // Low 8 bits of r10 |
404 | lldb_r11l, // Low 8 bits of r11 |
405 | lldb_r12l, // Low 8 bits of r12 |
406 | lldb_r13l, // Low 8 bits of r13 |
407 | lldb_r14l, // Low 8 bits of r14 |
408 | lldb_r15l, // Low 8 bits of r15 |
409 | k_last_alias = lldb_r15l, |
410 | |
411 | k_last_gpr = k_last_alias, |
412 | |
413 | k_first_fpr, |
414 | lldb_fctrl = k_first_fpr, |
415 | lldb_fstat, |
416 | lldb_ftag, |
417 | lldb_fop, |
418 | lldb_fiseg, |
419 | lldb_fioff, |
420 | lldb_fip, |
421 | lldb_foseg, |
422 | lldb_fooff, |
423 | lldb_fdp, |
424 | lldb_mxcsr, |
425 | lldb_mxcsrmask, |
426 | lldb_st0, |
427 | lldb_st1, |
428 | lldb_st2, |
429 | lldb_st3, |
430 | lldb_st4, |
431 | lldb_st5, |
432 | lldb_st6, |
433 | lldb_st7, |
434 | lldb_mm0, |
435 | lldb_mm1, |
436 | lldb_mm2, |
437 | lldb_mm3, |
438 | lldb_mm4, |
439 | lldb_mm5, |
440 | lldb_mm6, |
441 | lldb_mm7, |
442 | lldb_xmm0, |
443 | lldb_xmm1, |
444 | lldb_xmm2, |
445 | lldb_xmm3, |
446 | lldb_xmm4, |
447 | lldb_xmm5, |
448 | lldb_xmm6, |
449 | lldb_xmm7, |
450 | lldb_xmm8, |
451 | lldb_xmm9, |
452 | lldb_xmm10, |
453 | lldb_xmm11, |
454 | lldb_xmm12, |
455 | lldb_xmm13, |
456 | lldb_xmm14, |
457 | lldb_xmm15, |
458 | k_last_fpr = lldb_xmm15, |
459 | |
460 | k_first_avx, |
461 | lldb_ymm0 = k_first_avx, |
462 | lldb_ymm1, |
463 | lldb_ymm2, |
464 | lldb_ymm3, |
465 | lldb_ymm4, |
466 | lldb_ymm5, |
467 | lldb_ymm6, |
468 | lldb_ymm7, |
469 | lldb_ymm8, |
470 | lldb_ymm9, |
471 | lldb_ymm10, |
472 | lldb_ymm11, |
473 | lldb_ymm12, |
474 | lldb_ymm13, |
475 | lldb_ymm14, |
476 | lldb_ymm15, |
477 | k_last_avx = lldb_ymm15, |
478 | |
479 | k_first_mpxr, |
480 | lldb_bnd0 = k_first_mpxr, |
481 | lldb_bnd1, |
482 | lldb_bnd2, |
483 | lldb_bnd3, |
484 | k_last_mpxr = lldb_bnd3, |
485 | |
486 | k_first_mpxc, |
487 | lldb_bndcfgu = k_first_mpxc, |
488 | lldb_bndstatus, |
489 | k_last_mpxc = lldb_bndstatus, |
490 | |
491 | k_first_dbr, |
492 | lldb_dr0 = k_first_dbr, |
493 | lldb_dr1, |
494 | lldb_dr2, |
495 | lldb_dr3, |
496 | lldb_dr4, |
497 | lldb_dr5, |
498 | lldb_dr6, |
499 | lldb_dr7, |
500 | k_last_dbr = lldb_dr7, |
501 | |
502 | k_num_registers, |
503 | k_num_gpr_registers = k_last_gpr - k_first_gpr + 1, |
504 | k_num_fpr_registers = k_last_fpr - k_first_fpr + 1, |
505 | k_num_avx_registers = k_last_avx - k_first_avx + 1, |
506 | k_num_mpx_registers = k_last_mpxc - k_first_mpxr + 1, |
507 | k_num_user_registers = k_num_gpr_registers + |
508 | k_num_fpr_registers + |
509 | k_num_avx_registers + |
510 | k_num_mpx_registers, |
511 | k_num_dbr_registers = k_last_dbr - k_first_dbr + 1, |
512 | }; |
513 | } // namespace x86_64_with_base |
514 | |
515 | } |
516 | |
517 | #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_LLDB_X86_REGISTER_ENUMS_H |
518 | |