180814287SRaphael Isemann //===-- CodeViewRegisterMapping.cpp ---------------------------------------===//
2758657e5SAleksandr Urakov //
3ee21a66aSAleksandr Urakov // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4ee21a66aSAleksandr Urakov // See https://llvm.org/LICENSE.txt for license information.
5ee21a66aSAleksandr Urakov // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6758657e5SAleksandr Urakov //
7758657e5SAleksandr Urakov //===----------------------------------------------------------------------===//
8758657e5SAleksandr Urakov
9758657e5SAleksandr Urakov #include "CodeViewRegisterMapping.h"
10758657e5SAleksandr Urakov
11758657e5SAleksandr Urakov #include "lldb/lldb-defines.h"
12758657e5SAleksandr Urakov
13a18baf16SMuhammad Omair Javaid #include "Plugins/Process/Utility/lldb-arm64-register-enums.h"
14758657e5SAleksandr Urakov #include "Plugins/Process/Utility/lldb-x86-register-enums.h"
15758657e5SAleksandr Urakov
16758657e5SAleksandr Urakov using namespace lldb_private;
17758657e5SAleksandr Urakov
18a18baf16SMuhammad Omair Javaid static const uint32_t g_code_view_to_lldb_registers_arm64[] = {
19a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, // NONE
20a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
21a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
22a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
23a18baf16SMuhammad Omair Javaid gpr_w0_arm64, // ARM64_W0, 10)
24a18baf16SMuhammad Omair Javaid gpr_w1_arm64, // ARM64_W1, 11)
25a18baf16SMuhammad Omair Javaid gpr_w2_arm64, // ARM64_W2, 12)
26a18baf16SMuhammad Omair Javaid gpr_w3_arm64, // ARM64_W3, 13)
27a18baf16SMuhammad Omair Javaid gpr_w4_arm64, // ARM64_W4, 14)
28a18baf16SMuhammad Omair Javaid gpr_w5_arm64, // ARM64_W5, 15)
29a18baf16SMuhammad Omair Javaid gpr_w6_arm64, // ARM64_W6, 16)
30a18baf16SMuhammad Omair Javaid gpr_w7_arm64, // ARM64_W7, 17)
31a18baf16SMuhammad Omair Javaid gpr_w8_arm64, // ARM64_W8, 18)
32a18baf16SMuhammad Omair Javaid gpr_w9_arm64, // ARM64_W9, 19)
33a18baf16SMuhammad Omair Javaid gpr_w10_arm64, // ARM64_W10, 20)
34a18baf16SMuhammad Omair Javaid gpr_w11_arm64, // ARM64_W11, 21)
35a18baf16SMuhammad Omair Javaid gpr_w12_arm64, // ARM64_W12, 22)
36a18baf16SMuhammad Omair Javaid gpr_w13_arm64, // ARM64_W13, 23)
37a18baf16SMuhammad Omair Javaid gpr_w14_arm64, // ARM64_W14, 24)
38a18baf16SMuhammad Omair Javaid gpr_w15_arm64, // ARM64_W15, 25)
39a18baf16SMuhammad Omair Javaid gpr_w16_arm64, // ARM64_W16, 26)
40a18baf16SMuhammad Omair Javaid gpr_w17_arm64, // ARM64_W17, 27)
41a18baf16SMuhammad Omair Javaid gpr_w18_arm64, // ARM64_W18, 28)
42a18baf16SMuhammad Omair Javaid gpr_w19_arm64, // ARM64_W19, 29)
43a18baf16SMuhammad Omair Javaid gpr_w20_arm64, // ARM64_W20, 30)
44a18baf16SMuhammad Omair Javaid gpr_w21_arm64, // ARM64_W21, 31)
45a18baf16SMuhammad Omair Javaid gpr_w22_arm64, // ARM64_W22, 32)
46a18baf16SMuhammad Omair Javaid gpr_w23_arm64, // ARM64_W23, 33)
47a18baf16SMuhammad Omair Javaid gpr_w24_arm64, // ARM64_W24, 34)
48a18baf16SMuhammad Omair Javaid gpr_w25_arm64, // ARM64_W25, 35)
49a18baf16SMuhammad Omair Javaid gpr_w26_arm64, // ARM64_W26, 36)
50a18baf16SMuhammad Omair Javaid gpr_w27_arm64, // ARM64_W27, 37)
51a18baf16SMuhammad Omair Javaid gpr_w28_arm64, // ARM64_W28, 38)
52a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
53a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
54a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
55a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
56a18baf16SMuhammad Omair Javaid gpr_x0_arm64, // ARM64_X0, 50)
57a18baf16SMuhammad Omair Javaid gpr_x1_arm64, // ARM64_X1, 51)
58a18baf16SMuhammad Omair Javaid gpr_x2_arm64, // ARM64_X2, 52)
59a18baf16SMuhammad Omair Javaid gpr_x3_arm64, // ARM64_X3, 53)
60a18baf16SMuhammad Omair Javaid gpr_x4_arm64, // ARM64_X4, 54)
61a18baf16SMuhammad Omair Javaid gpr_x5_arm64, // ARM64_X5, 55)
62a18baf16SMuhammad Omair Javaid gpr_x6_arm64, // ARM64_X6, 56)
63a18baf16SMuhammad Omair Javaid gpr_x7_arm64, // ARM64_X7, 57)
64a18baf16SMuhammad Omair Javaid gpr_x8_arm64, // ARM64_X8, 58)
65a18baf16SMuhammad Omair Javaid gpr_x9_arm64, // ARM64_X9, 59)
66a18baf16SMuhammad Omair Javaid gpr_x10_arm64, // ARM64_X10, 60)
67a18baf16SMuhammad Omair Javaid gpr_x11_arm64, // ARM64_X11, 61)
68a18baf16SMuhammad Omair Javaid gpr_x12_arm64, // ARM64_X12, 62)
69a18baf16SMuhammad Omair Javaid gpr_x13_arm64, // ARM64_X13, 63)
70a18baf16SMuhammad Omair Javaid gpr_x14_arm64, // ARM64_X14, 64)
71a18baf16SMuhammad Omair Javaid gpr_x15_arm64, // ARM64_X15, 65)
72a18baf16SMuhammad Omair Javaid gpr_x16_arm64, // ARM64_X16, 66)
73a18baf16SMuhammad Omair Javaid gpr_x17_arm64, // ARM64_X17, 67)
74a18baf16SMuhammad Omair Javaid gpr_x18_arm64, // ARM64_X18, 68)
75a18baf16SMuhammad Omair Javaid gpr_x19_arm64, // ARM64_X19, 69)
76a18baf16SMuhammad Omair Javaid gpr_x20_arm64, // ARM64_X20, 70)
77a18baf16SMuhammad Omair Javaid gpr_x21_arm64, // ARM64_X21, 71)
78a18baf16SMuhammad Omair Javaid gpr_x22_arm64, // ARM64_X22, 72)
79a18baf16SMuhammad Omair Javaid gpr_x23_arm64, // ARM64_X23, 73)
80a18baf16SMuhammad Omair Javaid gpr_x24_arm64, // ARM64_X24, 74)
81a18baf16SMuhammad Omair Javaid gpr_x25_arm64, // ARM64_X25, 75)
82a18baf16SMuhammad Omair Javaid gpr_x26_arm64, // ARM64_X26, 76)
83a18baf16SMuhammad Omair Javaid gpr_x27_arm64, // ARM64_X27, 77)
84a18baf16SMuhammad Omair Javaid gpr_x28_arm64, // ARM64_X28, 78)
85a18baf16SMuhammad Omair Javaid gpr_fp_arm64, // ARM64_FP, 79)
86a18baf16SMuhammad Omair Javaid gpr_lr_arm64, // ARM64_LR, 80)
87a18baf16SMuhammad Omair Javaid gpr_sp_arm64, // ARM64_SP, 81)
88a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
89a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
90a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
91a18baf16SMuhammad Omair Javaid gpr_cpsr_arm64, // ARM64_NZCV, 90)
92a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
93a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
94a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
95a18baf16SMuhammad Omair Javaid fpu_s0_arm64, // (ARM64_S0, 100)
96a18baf16SMuhammad Omair Javaid fpu_s1_arm64, // (ARM64_S1, 101)
97a18baf16SMuhammad Omair Javaid fpu_s2_arm64, // (ARM64_S2, 102)
98a18baf16SMuhammad Omair Javaid fpu_s3_arm64, // (ARM64_S3, 103)
99a18baf16SMuhammad Omair Javaid fpu_s4_arm64, // (ARM64_S4, 104)
100a18baf16SMuhammad Omair Javaid fpu_s5_arm64, // (ARM64_S5, 105)
101a18baf16SMuhammad Omair Javaid fpu_s6_arm64, // (ARM64_S6, 106)
102a18baf16SMuhammad Omair Javaid fpu_s7_arm64, // (ARM64_S7, 107)
103a18baf16SMuhammad Omair Javaid fpu_s8_arm64, // (ARM64_S8, 108)
104a18baf16SMuhammad Omair Javaid fpu_s9_arm64, // (ARM64_S9, 109)
105a18baf16SMuhammad Omair Javaid fpu_s10_arm64, // (ARM64_S10, 110)
106a18baf16SMuhammad Omair Javaid fpu_s11_arm64, // (ARM64_S11, 111)
107a18baf16SMuhammad Omair Javaid fpu_s12_arm64, // (ARM64_S12, 112)
108a18baf16SMuhammad Omair Javaid fpu_s13_arm64, // (ARM64_S13, 113)
109a18baf16SMuhammad Omair Javaid fpu_s14_arm64, // (ARM64_S14, 114)
110a18baf16SMuhammad Omair Javaid fpu_s15_arm64, // (ARM64_S15, 115)
111a18baf16SMuhammad Omair Javaid fpu_s16_arm64, // (ARM64_S16, 116)
112a18baf16SMuhammad Omair Javaid fpu_s17_arm64, // (ARM64_S17, 117)
113a18baf16SMuhammad Omair Javaid fpu_s18_arm64, // (ARM64_S18, 118)
114a18baf16SMuhammad Omair Javaid fpu_s19_arm64, // (ARM64_S19, 119)
115a18baf16SMuhammad Omair Javaid fpu_s20_arm64, // (ARM64_S20, 120)
116a18baf16SMuhammad Omair Javaid fpu_s21_arm64, // (ARM64_S21, 121)
117a18baf16SMuhammad Omair Javaid fpu_s22_arm64, // (ARM64_S22, 122)
118a18baf16SMuhammad Omair Javaid fpu_s23_arm64, // (ARM64_S23, 123)
119a18baf16SMuhammad Omair Javaid fpu_s24_arm64, // (ARM64_S24, 124)
120a18baf16SMuhammad Omair Javaid fpu_s25_arm64, // (ARM64_S25, 125)
121a18baf16SMuhammad Omair Javaid fpu_s26_arm64, // (ARM64_S26, 126)
122a18baf16SMuhammad Omair Javaid fpu_s27_arm64, // (ARM64_S27, 127)
123a18baf16SMuhammad Omair Javaid fpu_s28_arm64, // (ARM64_S28, 128)
124a18baf16SMuhammad Omair Javaid fpu_s29_arm64, // (ARM64_S29, 129)
125a18baf16SMuhammad Omair Javaid fpu_s30_arm64, // (ARM64_S30, 130)
126a18baf16SMuhammad Omair Javaid fpu_s31_arm64, // (ARM64_S31, 131)
127a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
128a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
129a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
130a18baf16SMuhammad Omair Javaid fpu_d0_arm64, // (ARM64_D0, 140)
131a18baf16SMuhammad Omair Javaid fpu_d1_arm64, // (ARM64_D1, 141)
132a18baf16SMuhammad Omair Javaid fpu_d2_arm64, // (ARM64_D2, 142)
133a18baf16SMuhammad Omair Javaid fpu_d3_arm64, // (ARM64_D3, 143)
134a18baf16SMuhammad Omair Javaid fpu_d4_arm64, // (ARM64_D4, 144)
135a18baf16SMuhammad Omair Javaid fpu_d5_arm64, // (ARM64_D5, 145)
136a18baf16SMuhammad Omair Javaid fpu_d6_arm64, // (ARM64_D6, 146)
137a18baf16SMuhammad Omair Javaid fpu_d7_arm64, // (ARM64_D7, 147)
138a18baf16SMuhammad Omair Javaid fpu_d8_arm64, // (ARM64_D8, 148)
139a18baf16SMuhammad Omair Javaid fpu_d9_arm64, // (ARM64_D9, 149)
140a18baf16SMuhammad Omair Javaid fpu_d10_arm64, // (ARM64_D10, 150)
141a18baf16SMuhammad Omair Javaid fpu_d11_arm64, // (ARM64_D11, 151)
142a18baf16SMuhammad Omair Javaid fpu_d12_arm64, // (ARM64_D12, 152)
143a18baf16SMuhammad Omair Javaid fpu_d13_arm64, // (ARM64_D13, 153)
144a18baf16SMuhammad Omair Javaid fpu_d14_arm64, // (ARM64_D14, 154)
145a18baf16SMuhammad Omair Javaid fpu_d15_arm64, // (ARM64_D15, 155)
146a18baf16SMuhammad Omair Javaid fpu_d16_arm64, // (ARM64_D16, 156)
147a18baf16SMuhammad Omair Javaid fpu_d17_arm64, // (ARM64_D17, 157)
148a18baf16SMuhammad Omair Javaid fpu_d18_arm64, // (ARM64_D18, 158)
149a18baf16SMuhammad Omair Javaid fpu_d19_arm64, // (ARM64_D19, 159)
150a18baf16SMuhammad Omair Javaid fpu_d20_arm64, // (ARM64_D20, 160)
151a18baf16SMuhammad Omair Javaid fpu_d21_arm64, // (ARM64_D21, 161)
152a18baf16SMuhammad Omair Javaid fpu_d22_arm64, // (ARM64_D22, 162)
153a18baf16SMuhammad Omair Javaid fpu_d23_arm64, // (ARM64_D23, 163)
154a18baf16SMuhammad Omair Javaid fpu_d24_arm64, // (ARM64_D24, 164)
155a18baf16SMuhammad Omair Javaid fpu_d25_arm64, // (ARM64_D25, 165)
156a18baf16SMuhammad Omair Javaid fpu_d26_arm64, // (ARM64_D26, 166)
157a18baf16SMuhammad Omair Javaid fpu_d27_arm64, // (ARM64_D27, 167)
158a18baf16SMuhammad Omair Javaid fpu_d28_arm64, // (ARM64_D28, 168)
159a18baf16SMuhammad Omair Javaid fpu_d29_arm64, // (ARM64_D29, 169)
160a18baf16SMuhammad Omair Javaid fpu_d30_arm64, // (ARM64_D30, 170)
161a18baf16SMuhammad Omair Javaid fpu_d31_arm64, // (ARM64_D31, 171)
162a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
163a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
164a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
165a18baf16SMuhammad Omair Javaid fpu_v0_arm64, // (ARM64_Q0, 180)
166a18baf16SMuhammad Omair Javaid fpu_v1_arm64, // (ARM64_Q1, 181)
167a18baf16SMuhammad Omair Javaid fpu_v2_arm64, // (ARM64_Q2, 182)
168a18baf16SMuhammad Omair Javaid fpu_v3_arm64, // (ARM64_Q3, 183)
169a18baf16SMuhammad Omair Javaid fpu_v4_arm64, // (ARM64_Q4, 184)
170a18baf16SMuhammad Omair Javaid fpu_v5_arm64, // (ARM64_Q5, 185)
171a18baf16SMuhammad Omair Javaid fpu_v6_arm64, // (ARM64_Q6, 186)
172a18baf16SMuhammad Omair Javaid fpu_v7_arm64, // (ARM64_Q7, 187)
173a18baf16SMuhammad Omair Javaid fpu_v8_arm64, // (ARM64_Q8, 188)
174a18baf16SMuhammad Omair Javaid fpu_v9_arm64, // (ARM64_Q9, 189)
175a18baf16SMuhammad Omair Javaid fpu_v10_arm64, // (ARM64_Q10, 190)
176a18baf16SMuhammad Omair Javaid fpu_v11_arm64, // (ARM64_Q11, 191)
177a18baf16SMuhammad Omair Javaid fpu_v12_arm64, // (ARM64_Q12, 192)
178a18baf16SMuhammad Omair Javaid fpu_v13_arm64, // (ARM64_Q13, 193)
179a18baf16SMuhammad Omair Javaid fpu_v14_arm64, // (ARM64_Q14, 194)
180a18baf16SMuhammad Omair Javaid fpu_v15_arm64, // (ARM64_Q15, 195)
181a18baf16SMuhammad Omair Javaid fpu_v16_arm64, // (ARM64_Q16, 196)
182a18baf16SMuhammad Omair Javaid fpu_v17_arm64, // (ARM64_Q17, 197)
183a18baf16SMuhammad Omair Javaid fpu_v18_arm64, // (ARM64_Q18, 198)
184a18baf16SMuhammad Omair Javaid fpu_v19_arm64, // (ARM64_Q19, 199)
185a18baf16SMuhammad Omair Javaid fpu_v20_arm64, // (ARM64_Q20, 200)
186a18baf16SMuhammad Omair Javaid fpu_v21_arm64, // (ARM64_Q21, 201)
187a18baf16SMuhammad Omair Javaid fpu_v22_arm64, // (ARM64_Q22, 202)
188a18baf16SMuhammad Omair Javaid fpu_v23_arm64, // (ARM64_Q23, 203)
189a18baf16SMuhammad Omair Javaid fpu_v24_arm64, // (ARM64_Q24, 204)
190a18baf16SMuhammad Omair Javaid fpu_v25_arm64, // (ARM64_Q25, 205)
191a18baf16SMuhammad Omair Javaid fpu_v26_arm64, // (ARM64_Q26, 206)
192a18baf16SMuhammad Omair Javaid fpu_v27_arm64, // (ARM64_Q27, 207)
193a18baf16SMuhammad Omair Javaid fpu_v28_arm64, // (ARM64_Q28, 208)
194a18baf16SMuhammad Omair Javaid fpu_v29_arm64, // (ARM64_Q29, 209)
195a18baf16SMuhammad Omair Javaid fpu_v30_arm64, // (ARM64_Q30, 210)
196a18baf16SMuhammad Omair Javaid fpu_v31_arm64, // (ARM64_Q31, 211)
197a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
198a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
199a18baf16SMuhammad Omair Javaid LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
200a18baf16SMuhammad Omair Javaid fpu_fpsr_arm64 // ARM64_FPSR, 220)
201a18baf16SMuhammad Omair Javaid };
202a18baf16SMuhammad Omair Javaid
203758657e5SAleksandr Urakov static const uint32_t g_code_view_to_lldb_registers_x86[] = {
204758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // NONE
205758657e5SAleksandr Urakov lldb_al_i386, // AL
206758657e5SAleksandr Urakov lldb_cl_i386, // CL
207758657e5SAleksandr Urakov lldb_dl_i386, // DL
208758657e5SAleksandr Urakov lldb_bl_i386, // BL
209758657e5SAleksandr Urakov lldb_ah_i386, // AH
210758657e5SAleksandr Urakov lldb_ch_i386, // CH
211758657e5SAleksandr Urakov lldb_dh_i386, // DH
212758657e5SAleksandr Urakov lldb_bh_i386, // BH
213758657e5SAleksandr Urakov lldb_ax_i386, // AX
214758657e5SAleksandr Urakov lldb_cx_i386, // CX
215758657e5SAleksandr Urakov lldb_dx_i386, // DX
216758657e5SAleksandr Urakov lldb_bx_i386, // BX
217758657e5SAleksandr Urakov lldb_sp_i386, // SP
218758657e5SAleksandr Urakov lldb_bp_i386, // BP
219758657e5SAleksandr Urakov lldb_si_i386, // SI
220758657e5SAleksandr Urakov lldb_di_i386, // DI
221758657e5SAleksandr Urakov lldb_eax_i386, // EAX
222758657e5SAleksandr Urakov lldb_ecx_i386, // ECX
223758657e5SAleksandr Urakov lldb_edx_i386, // EDX
224758657e5SAleksandr Urakov lldb_ebx_i386, // EBX
225758657e5SAleksandr Urakov lldb_esp_i386, // ESP
226758657e5SAleksandr Urakov lldb_ebp_i386, // EBP
227758657e5SAleksandr Urakov lldb_esi_i386, // ESI
228758657e5SAleksandr Urakov lldb_edi_i386, // EDI
229758657e5SAleksandr Urakov lldb_es_i386, // ES
230758657e5SAleksandr Urakov lldb_cs_i386, // CS
231758657e5SAleksandr Urakov lldb_ss_i386, // SS
232758657e5SAleksandr Urakov lldb_ds_i386, // DS
233758657e5SAleksandr Urakov lldb_fs_i386, // FS
234758657e5SAleksandr Urakov lldb_gs_i386, // GS
235758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IP
236758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FLAGS
237758657e5SAleksandr Urakov lldb_eip_i386, // EIP
238758657e5SAleksandr Urakov lldb_eflags_i386, // EFLAGS
239758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
240758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
241758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMP
242758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMPH
243758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // QUOTE
244758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR3
245758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR4
246758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR5
247758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR6
248758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR7
249758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
250758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
251758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
252758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
253758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
254758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
255758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
256758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
257758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
258758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
259758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
260758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR0
261758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR1
262758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR2
263758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR3
264758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR4
265758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
266758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
267758657e5SAleksandr Urakov lldb_dr0_i386, // DR0
268758657e5SAleksandr Urakov lldb_dr1_i386, // DR1
269758657e5SAleksandr Urakov lldb_dr2_i386, // DR2
270758657e5SAleksandr Urakov lldb_dr3_i386, // DR3
271758657e5SAleksandr Urakov lldb_dr4_i386, // DR4
272758657e5SAleksandr Urakov lldb_dr5_i386, // DR5
273758657e5SAleksandr Urakov lldb_dr6_i386, // DR6
274758657e5SAleksandr Urakov lldb_dr7_i386, // DR7
275758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
276758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
277758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
278758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
279758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTR
280758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTL
281758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTR
282758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTL
283758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // LDTR
284758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TR
285758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO1
286758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO2
287758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO3
288758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO4
289758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO5
290758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO6
291758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO7
292758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO8
293758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO9
294758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
295758657e5SAleksandr Urakov lldb_st0_i386, // ST0
296758657e5SAleksandr Urakov lldb_st1_i386, // ST1
297758657e5SAleksandr Urakov lldb_st2_i386, // ST2
298758657e5SAleksandr Urakov lldb_st3_i386, // ST3
299758657e5SAleksandr Urakov lldb_st4_i386, // ST4
300758657e5SAleksandr Urakov lldb_st5_i386, // ST5
301758657e5SAleksandr Urakov lldb_st6_i386, // ST6
302758657e5SAleksandr Urakov lldb_st7_i386, // ST7
303758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CTRL
304758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // STAT
305758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TAG
306758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPIP
307758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPCS
308758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDO
309758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDS
310758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // ISEM
311758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEIP
312758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEDO
313758657e5SAleksandr Urakov lldb_mm0_i386, // MM0
314758657e5SAleksandr Urakov lldb_mm1_i386, // MM1
315758657e5SAleksandr Urakov lldb_mm2_i386, // MM2
316758657e5SAleksandr Urakov lldb_mm3_i386, // MM3
317758657e5SAleksandr Urakov lldb_mm4_i386, // MM4
318758657e5SAleksandr Urakov lldb_mm5_i386, // MM5
319758657e5SAleksandr Urakov lldb_mm6_i386, // MM6
320758657e5SAleksandr Urakov lldb_mm7_i386, // MM7
321758657e5SAleksandr Urakov lldb_xmm0_i386, // XMM0
322758657e5SAleksandr Urakov lldb_xmm1_i386, // XMM1
323758657e5SAleksandr Urakov lldb_xmm2_i386, // XMM2
324758657e5SAleksandr Urakov lldb_xmm3_i386, // XMM3
325758657e5SAleksandr Urakov lldb_xmm4_i386, // XMM4
326758657e5SAleksandr Urakov lldb_xmm5_i386, // XMM5
327758657e5SAleksandr Urakov lldb_xmm6_i386, // XMM6
328758657e5SAleksandr Urakov lldb_xmm7_i386 // XMM7
329758657e5SAleksandr Urakov };
330758657e5SAleksandr Urakov
331758657e5SAleksandr Urakov static const uint32_t g_code_view_to_lldb_registers_x86_64[] = {
332758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // NONE
333758657e5SAleksandr Urakov lldb_al_x86_64, // AL
334758657e5SAleksandr Urakov lldb_cl_x86_64, // CL
335758657e5SAleksandr Urakov lldb_dl_x86_64, // DL
336758657e5SAleksandr Urakov lldb_bl_x86_64, // BL
337758657e5SAleksandr Urakov lldb_ah_x86_64, // AH
338758657e5SAleksandr Urakov lldb_ch_x86_64, // CH
339758657e5SAleksandr Urakov lldb_dh_x86_64, // DH
340758657e5SAleksandr Urakov lldb_bh_x86_64, // BH
341758657e5SAleksandr Urakov lldb_ax_x86_64, // AX
342758657e5SAleksandr Urakov lldb_cx_x86_64, // CX
343758657e5SAleksandr Urakov lldb_dx_x86_64, // DX
344758657e5SAleksandr Urakov lldb_bx_x86_64, // BX
345758657e5SAleksandr Urakov lldb_sp_x86_64, // SP
346758657e5SAleksandr Urakov lldb_bp_x86_64, // BP
347758657e5SAleksandr Urakov lldb_si_x86_64, // SI
348758657e5SAleksandr Urakov lldb_di_x86_64, // DI
349758657e5SAleksandr Urakov lldb_eax_x86_64, // EAX
350758657e5SAleksandr Urakov lldb_ecx_x86_64, // ECX
351758657e5SAleksandr Urakov lldb_edx_x86_64, // EDX
352758657e5SAleksandr Urakov lldb_ebx_x86_64, // EBX
353758657e5SAleksandr Urakov lldb_esp_x86_64, // ESP
354758657e5SAleksandr Urakov lldb_ebp_x86_64, // EBP
355758657e5SAleksandr Urakov lldb_esi_x86_64, // ESI
356758657e5SAleksandr Urakov lldb_edi_x86_64, // EDI
357758657e5SAleksandr Urakov lldb_es_x86_64, // ES
358758657e5SAleksandr Urakov lldb_cs_x86_64, // CS
359758657e5SAleksandr Urakov lldb_ss_x86_64, // SS
360758657e5SAleksandr Urakov lldb_ds_x86_64, // DS
361758657e5SAleksandr Urakov lldb_fs_x86_64, // FS
362758657e5SAleksandr Urakov lldb_gs_x86_64, // GS
363758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IP
364758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FLAGS
365758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EIP
366758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EFLAGS
367758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
368758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
369758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMP
370758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TEMPH
371758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // QUOTE
372758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR3
373758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR4
374758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR5
375758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR6
376758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PCDR7
377758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
378758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
379758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
380758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
381758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
382758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
383758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
384758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
385758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
386758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
387758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
388758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR0
389758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR1
390758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR2
391758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR3
392758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CR4
393758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
394758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
395758657e5SAleksandr Urakov lldb_dr0_x86_64, // DR0
396758657e5SAleksandr Urakov lldb_dr1_x86_64, // DR1
397758657e5SAleksandr Urakov lldb_dr2_x86_64, // DR2
398758657e5SAleksandr Urakov lldb_dr3_x86_64, // DR3
399758657e5SAleksandr Urakov lldb_dr4_x86_64, // DR4
400758657e5SAleksandr Urakov lldb_dr5_x86_64, // DR5
401758657e5SAleksandr Urakov lldb_dr6_x86_64, // DR6
402758657e5SAleksandr Urakov lldb_dr7_x86_64, // DR7
403758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
404758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
405758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
406758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
407758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTR
408758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // GDTL
409758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTR
410758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // IDTL
411758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // LDTR
412758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TR
413758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO1
414758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO2
415758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO3
416758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO4
417758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO5
418758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO6
419758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO7
420758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO8
421758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // PSEUDO9
422758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
423758657e5SAleksandr Urakov lldb_st0_x86_64, // ST0
424758657e5SAleksandr Urakov lldb_st1_x86_64, // ST1
425758657e5SAleksandr Urakov lldb_st2_x86_64, // ST2
426758657e5SAleksandr Urakov lldb_st3_x86_64, // ST3
427758657e5SAleksandr Urakov lldb_st4_x86_64, // ST4
428758657e5SAleksandr Urakov lldb_st5_x86_64, // ST5
429758657e5SAleksandr Urakov lldb_st6_x86_64, // ST6
430758657e5SAleksandr Urakov lldb_st7_x86_64, // ST7
431758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // CTRL
432758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // STAT
433758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // TAG
434758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPIP
435758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPCS
436758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDO
437758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPDS
438758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // ISEM
439758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEIP
440758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // FPEDO
441758657e5SAleksandr Urakov lldb_mm0_x86_64, // MM0
442758657e5SAleksandr Urakov lldb_mm1_x86_64, // MM1
443758657e5SAleksandr Urakov lldb_mm2_x86_64, // MM2
444758657e5SAleksandr Urakov lldb_mm3_x86_64, // MM3
445758657e5SAleksandr Urakov lldb_mm4_x86_64, // MM4
446758657e5SAleksandr Urakov lldb_mm5_x86_64, // MM5
447758657e5SAleksandr Urakov lldb_mm6_x86_64, // MM6
448758657e5SAleksandr Urakov lldb_mm7_x86_64, // MM7
449758657e5SAleksandr Urakov lldb_xmm0_x86_64, // XMM0
450758657e5SAleksandr Urakov lldb_xmm1_x86_64, // XMM1
451758657e5SAleksandr Urakov lldb_xmm2_x86_64, // XMM2
452758657e5SAleksandr Urakov lldb_xmm3_x86_64, // XMM3
453758657e5SAleksandr Urakov lldb_xmm4_x86_64, // XMM4
454758657e5SAleksandr Urakov lldb_xmm5_x86_64, // XMM5
455758657e5SAleksandr Urakov lldb_xmm6_x86_64, // XMM6
456758657e5SAleksandr Urakov lldb_xmm7_x86_64, // XMM7
457758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
458758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
459758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
460758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
461758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
462758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
463758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
464758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
465758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
466758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
467758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
468758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
469758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
470758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
471758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
472758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
473758657e5SAleksandr Urakov LLDB_INVALID_REGNUM,
474758657e5SAleksandr Urakov lldb_mxcsr_x86_64, // MXCSR
475758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EDXEAX
476758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
477758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
478758657e5SAleksandr Urakov LLDB_INVALID_REGNUM,
479758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM0L
480758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM1L
481758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM2L
482758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM3L
483758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM4L
484758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM5L
485758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM6L
486758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM7L
487758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM0H
488758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM1H
489758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM2H
490758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM3H
491758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM4H
492758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM5H
493758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM6H
494758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // EMM7H
495758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM00
496758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM01
497758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM10
498758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM11
499758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM20
500758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM21
501758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM30
502758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM31
503758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM40
504758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM41
505758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM50
506758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM51
507758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM60
508758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM61
509758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM70
510758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, // MM71
511758657e5SAleksandr Urakov lldb_xmm8_x86_64, // XMM8
512758657e5SAleksandr Urakov lldb_xmm9_x86_64, // XMM9
513758657e5SAleksandr Urakov lldb_xmm10_x86_64, // XMM10
514758657e5SAleksandr Urakov lldb_xmm11_x86_64, // XMM11
515758657e5SAleksandr Urakov lldb_xmm12_x86_64, // XMM12
516758657e5SAleksandr Urakov lldb_xmm13_x86_64, // XMM13
517758657e5SAleksandr Urakov lldb_xmm14_x86_64, // XMM14
518758657e5SAleksandr Urakov lldb_xmm15_x86_64, // XMM15
519758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
520758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
521758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
522758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
523758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
524758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
525758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
526758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
527758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
528758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
529758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
530758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
531758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
532758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
533758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
534758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
535758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
536758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
537758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
538758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
539758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
540758657e5SAleksandr Urakov LLDB_INVALID_REGNUM,
541758657e5SAleksandr Urakov lldb_sil_x86_64, // SIL
542758657e5SAleksandr Urakov lldb_dil_x86_64, // DIL
543758657e5SAleksandr Urakov lldb_bpl_x86_64, // BPL
544758657e5SAleksandr Urakov lldb_spl_x86_64, // SPL
545758657e5SAleksandr Urakov lldb_rax_x86_64, // RAX
546758657e5SAleksandr Urakov lldb_rbx_x86_64, // RBX
547758657e5SAleksandr Urakov lldb_rcx_x86_64, // RCX
548758657e5SAleksandr Urakov lldb_rdx_x86_64, // RDX
549758657e5SAleksandr Urakov lldb_rsi_x86_64, // RSI
550758657e5SAleksandr Urakov lldb_rdi_x86_64, // RDI
551758657e5SAleksandr Urakov lldb_rbp_x86_64, // RBP
552758657e5SAleksandr Urakov lldb_rsp_x86_64, // RSP
553758657e5SAleksandr Urakov lldb_r8_x86_64, // R8
554758657e5SAleksandr Urakov lldb_r9_x86_64, // R9
555758657e5SAleksandr Urakov lldb_r10_x86_64, // R10
556758657e5SAleksandr Urakov lldb_r11_x86_64, // R11
557758657e5SAleksandr Urakov lldb_r12_x86_64, // R12
558758657e5SAleksandr Urakov lldb_r13_x86_64, // R13
559758657e5SAleksandr Urakov lldb_r14_x86_64, // R14
560758657e5SAleksandr Urakov lldb_r15_x86_64, // R15
561758657e5SAleksandr Urakov lldb_r8l_x86_64, // R8B
562758657e5SAleksandr Urakov lldb_r9l_x86_64, // R9B
563758657e5SAleksandr Urakov lldb_r10l_x86_64, // R10B
564758657e5SAleksandr Urakov lldb_r11l_x86_64, // R11B
565758657e5SAleksandr Urakov lldb_r12l_x86_64, // R12B
566758657e5SAleksandr Urakov lldb_r13l_x86_64, // R13B
567758657e5SAleksandr Urakov lldb_r14l_x86_64, // R14B
568758657e5SAleksandr Urakov lldb_r15l_x86_64, // R15B
569758657e5SAleksandr Urakov lldb_r8w_x86_64, // R8W
570758657e5SAleksandr Urakov lldb_r9w_x86_64, // R9W
571758657e5SAleksandr Urakov lldb_r10w_x86_64, // R10W
572758657e5SAleksandr Urakov lldb_r11w_x86_64, // R11W
573758657e5SAleksandr Urakov lldb_r12w_x86_64, // R12W
574758657e5SAleksandr Urakov lldb_r13w_x86_64, // R13W
575758657e5SAleksandr Urakov lldb_r14w_x86_64, // R14W
576758657e5SAleksandr Urakov lldb_r15w_x86_64, // R15W
577758657e5SAleksandr Urakov lldb_r8d_x86_64, // R8D
578758657e5SAleksandr Urakov lldb_r9d_x86_64, // R9D
579758657e5SAleksandr Urakov lldb_r10d_x86_64, // R10D
580758657e5SAleksandr Urakov lldb_r11d_x86_64, // R11D
581758657e5SAleksandr Urakov lldb_r12d_x86_64, // R12D
582758657e5SAleksandr Urakov lldb_r13d_x86_64, // R13D
583758657e5SAleksandr Urakov lldb_r14d_x86_64, // R14D
584758657e5SAleksandr Urakov lldb_r15d_x86_64, // R15D
585758657e5SAleksandr Urakov lldb_ymm0_x86_64, // AMD64_YMM0
586758657e5SAleksandr Urakov lldb_ymm1_x86_64, // AMD64_YMM1
587758657e5SAleksandr Urakov lldb_ymm2_x86_64, // AMD64_YMM2
588758657e5SAleksandr Urakov lldb_ymm3_x86_64, // AMD64_YMM3
589758657e5SAleksandr Urakov lldb_ymm4_x86_64, // AMD64_YMM4
590758657e5SAleksandr Urakov lldb_ymm5_x86_64, // AMD64_YMM5
591758657e5SAleksandr Urakov lldb_ymm6_x86_64, // AMD64_YMM6
592758657e5SAleksandr Urakov lldb_ymm7_x86_64, // AMD64_YMM7
593758657e5SAleksandr Urakov lldb_ymm8_x86_64, // AMD64_YMM8
594758657e5SAleksandr Urakov lldb_ymm9_x86_64, // AMD64_YMM9
595758657e5SAleksandr Urakov lldb_ymm10_x86_64, // AMD64_YMM10
596758657e5SAleksandr Urakov lldb_ymm11_x86_64, // AMD64_YMM11
597758657e5SAleksandr Urakov lldb_ymm12_x86_64, // AMD64_YMM12
598758657e5SAleksandr Urakov lldb_ymm13_x86_64, // AMD64_YMM13
599758657e5SAleksandr Urakov lldb_ymm14_x86_64, // AMD64_YMM14
600758657e5SAleksandr Urakov lldb_ymm15_x86_64, // AMD64_YMM15
601758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
602758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
603758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
604758657e5SAleksandr Urakov LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
605758657e5SAleksandr Urakov lldb_bnd0_x86_64, // BND0
606758657e5SAleksandr Urakov lldb_bnd1_x86_64, // BND1
607758657e5SAleksandr Urakov lldb_bnd2_x86_64 // BND2
608758657e5SAleksandr Urakov };
609758657e5SAleksandr Urakov
GetLLDBRegisterNumber(llvm::Triple::ArchType arch_type,llvm::codeview::RegisterId register_id)610758657e5SAleksandr Urakov uint32_t lldb_private::npdb::GetLLDBRegisterNumber(
611758657e5SAleksandr Urakov llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) {
612758657e5SAleksandr Urakov switch (arch_type) {
613a18baf16SMuhammad Omair Javaid case llvm::Triple::aarch64:
614a18baf16SMuhammad Omair Javaid if (static_cast<uint16_t>(register_id) <
615a18baf16SMuhammad Omair Javaid sizeof(g_code_view_to_lldb_registers_arm64) /
616a18baf16SMuhammad Omair Javaid sizeof(g_code_view_to_lldb_registers_arm64[0]))
617a18baf16SMuhammad Omair Javaid return g_code_view_to_lldb_registers_arm64[static_cast<uint16_t>(
618a18baf16SMuhammad Omair Javaid register_id)];
619a18baf16SMuhammad Omair Javaid
620a18baf16SMuhammad Omair Javaid return LLDB_INVALID_REGNUM;
621758657e5SAleksandr Urakov case llvm::Triple::x86:
622758657e5SAleksandr Urakov if (static_cast<uint16_t>(register_id) <
623758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86) /
624758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86[0]))
625758657e5SAleksandr Urakov return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>(
626758657e5SAleksandr Urakov register_id)];
627758657e5SAleksandr Urakov
628758657e5SAleksandr Urakov switch (register_id) {
629758657e5SAleksandr Urakov case llvm::codeview::RegisterId::MXCSR:
630758657e5SAleksandr Urakov return lldb_mxcsr_i386;
631758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND0:
632758657e5SAleksandr Urakov return lldb_bnd0_i386;
633758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND1:
634758657e5SAleksandr Urakov return lldb_bnd1_i386;
635758657e5SAleksandr Urakov case llvm::codeview::RegisterId::BND2:
636758657e5SAleksandr Urakov return lldb_bnd2_i386;
637758657e5SAleksandr Urakov default:
638758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM;
639758657e5SAleksandr Urakov }
640758657e5SAleksandr Urakov case llvm::Triple::x86_64:
641758657e5SAleksandr Urakov if (static_cast<uint16_t>(register_id) <
642758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86_64) /
643758657e5SAleksandr Urakov sizeof(g_code_view_to_lldb_registers_x86_64[0]))
644758657e5SAleksandr Urakov return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>(
645758657e5SAleksandr Urakov register_id)];
646758657e5SAleksandr Urakov
647758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM;
648758657e5SAleksandr Urakov default:
649758657e5SAleksandr Urakov return LLDB_INVALID_REGNUM;
650758657e5SAleksandr Urakov }
651758657e5SAleksandr Urakov }
652*71d778f3SZequan Wu
653*71d778f3SZequan Wu uint32_t
GetRegisterSize(llvm::codeview::RegisterId register_id)654*71d778f3SZequan Wu lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) {
655*71d778f3SZequan Wu switch(register_id) {
656*71d778f3SZequan Wu case llvm::codeview::RegisterId::AL:
657*71d778f3SZequan Wu case llvm::codeview::RegisterId::BL:
658*71d778f3SZequan Wu case llvm::codeview::RegisterId::CL:
659*71d778f3SZequan Wu case llvm::codeview::RegisterId::DL:
660*71d778f3SZequan Wu case llvm::codeview::RegisterId::AH:
661*71d778f3SZequan Wu case llvm::codeview::RegisterId::BH:
662*71d778f3SZequan Wu case llvm::codeview::RegisterId::CH:
663*71d778f3SZequan Wu case llvm::codeview::RegisterId::DH:
664*71d778f3SZequan Wu case llvm::codeview::RegisterId::SIL:
665*71d778f3SZequan Wu case llvm::codeview::RegisterId::DIL:
666*71d778f3SZequan Wu case llvm::codeview::RegisterId::BPL:
667*71d778f3SZequan Wu case llvm::codeview::RegisterId::SPL:
668*71d778f3SZequan Wu case llvm::codeview::RegisterId::R8B:
669*71d778f3SZequan Wu case llvm::codeview::RegisterId::R9B:
670*71d778f3SZequan Wu case llvm::codeview::RegisterId::R10B:
671*71d778f3SZequan Wu case llvm::codeview::RegisterId::R11B:
672*71d778f3SZequan Wu case llvm::codeview::RegisterId::R12B:
673*71d778f3SZequan Wu case llvm::codeview::RegisterId::R13B:
674*71d778f3SZequan Wu case llvm::codeview::RegisterId::R14B:
675*71d778f3SZequan Wu case llvm::codeview::RegisterId::R15B:
676*71d778f3SZequan Wu return 1;
677*71d778f3SZequan Wu case llvm::codeview::RegisterId::AX:
678*71d778f3SZequan Wu case llvm::codeview::RegisterId::BX:
679*71d778f3SZequan Wu case llvm::codeview::RegisterId::CX:
680*71d778f3SZequan Wu case llvm::codeview::RegisterId::DX:
681*71d778f3SZequan Wu case llvm::codeview::RegisterId::SP:
682*71d778f3SZequan Wu case llvm::codeview::RegisterId::BP:
683*71d778f3SZequan Wu case llvm::codeview::RegisterId::SI:
684*71d778f3SZequan Wu case llvm::codeview::RegisterId::DI:
685*71d778f3SZequan Wu case llvm::codeview::RegisterId::R8W:
686*71d778f3SZequan Wu case llvm::codeview::RegisterId::R9W:
687*71d778f3SZequan Wu case llvm::codeview::RegisterId::R10W:
688*71d778f3SZequan Wu case llvm::codeview::RegisterId::R11W:
689*71d778f3SZequan Wu case llvm::codeview::RegisterId::R12W:
690*71d778f3SZequan Wu case llvm::codeview::RegisterId::R13W:
691*71d778f3SZequan Wu case llvm::codeview::RegisterId::R14W:
692*71d778f3SZequan Wu case llvm::codeview::RegisterId::R15W:
693*71d778f3SZequan Wu return 2;
694*71d778f3SZequan Wu case llvm::codeview::RegisterId::EAX:
695*71d778f3SZequan Wu case llvm::codeview::RegisterId::EBX:
696*71d778f3SZequan Wu case llvm::codeview::RegisterId::ECX:
697*71d778f3SZequan Wu case llvm::codeview::RegisterId::EDX:
698*71d778f3SZequan Wu case llvm::codeview::RegisterId::ESP:
699*71d778f3SZequan Wu case llvm::codeview::RegisterId::EBP:
700*71d778f3SZequan Wu case llvm::codeview::RegisterId::ESI:
701*71d778f3SZequan Wu case llvm::codeview::RegisterId::EDI:
702*71d778f3SZequan Wu case llvm::codeview::RegisterId::R8D:
703*71d778f3SZequan Wu case llvm::codeview::RegisterId::R9D:
704*71d778f3SZequan Wu case llvm::codeview::RegisterId::R10D:
705*71d778f3SZequan Wu case llvm::codeview::RegisterId::R11D:
706*71d778f3SZequan Wu case llvm::codeview::RegisterId::R12D:
707*71d778f3SZequan Wu case llvm::codeview::RegisterId::R13D:
708*71d778f3SZequan Wu case llvm::codeview::RegisterId::R14D:
709*71d778f3SZequan Wu case llvm::codeview::RegisterId::R15D:
710*71d778f3SZequan Wu return 4;
711*71d778f3SZequan Wu case llvm::codeview::RegisterId::RAX:
712*71d778f3SZequan Wu case llvm::codeview::RegisterId::RBX:
713*71d778f3SZequan Wu case llvm::codeview::RegisterId::RCX:
714*71d778f3SZequan Wu case llvm::codeview::RegisterId::RDX:
715*71d778f3SZequan Wu case llvm::codeview::RegisterId::RSI:
716*71d778f3SZequan Wu case llvm::codeview::RegisterId::RDI:
717*71d778f3SZequan Wu case llvm::codeview::RegisterId::RBP:
718*71d778f3SZequan Wu case llvm::codeview::RegisterId::RSP:
719*71d778f3SZequan Wu case llvm::codeview::RegisterId::R8:
720*71d778f3SZequan Wu case llvm::codeview::RegisterId::R9:
721*71d778f3SZequan Wu case llvm::codeview::RegisterId::R10:
722*71d778f3SZequan Wu case llvm::codeview::RegisterId::R11:
723*71d778f3SZequan Wu case llvm::codeview::RegisterId::R12:
724*71d778f3SZequan Wu case llvm::codeview::RegisterId::R13:
725*71d778f3SZequan Wu case llvm::codeview::RegisterId::R14:
726*71d778f3SZequan Wu case llvm::codeview::RegisterId::R15:
727*71d778f3SZequan Wu return 8;
728*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM0:
729*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM1:
730*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM2:
731*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM3:
732*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM4:
733*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM5:
734*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM6:
735*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM7:
736*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM8:
737*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM9:
738*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM10:
739*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM11:
740*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM12:
741*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM13:
742*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM14:
743*71d778f3SZequan Wu case llvm::codeview::RegisterId::XMM15:
744*71d778f3SZequan Wu return 16;
745*71d778f3SZequan Wu default:
746*71d778f3SZequan Wu return 0;
747*71d778f3SZequan Wu }
748*71d778f3SZequan Wu }
749