xref: /openbsd-src/gnu/llvm/lldb/source/Plugins/SymbolFile/NativePDB/CodeViewRegisterMapping.cpp (revision f6aab3d83b51b91c24247ad2c2573574de475a82)
1dda28197Spatrick //===-- CodeViewRegisterMapping.cpp ---------------------------------------===//
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 #include "CodeViewRegisterMapping.h"
10061da546Spatrick 
11061da546Spatrick #include "lldb/lldb-defines.h"
12061da546Spatrick 
13*f6aab3d8Srobert #include "Plugins/Process/Utility/lldb-arm64-register-enums.h"
14061da546Spatrick #include "Plugins/Process/Utility/lldb-x86-register-enums.h"
15061da546Spatrick 
16061da546Spatrick using namespace lldb_private;
17061da546Spatrick 
18*f6aab3d8Srobert static const uint32_t g_code_view_to_lldb_registers_arm64[] = {
19*f6aab3d8Srobert     LLDB_INVALID_REGNUM, // NONE
20*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
21*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
22*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
23*f6aab3d8Srobert     gpr_w0_arm64,  // ARM64_W0, 10)
24*f6aab3d8Srobert     gpr_w1_arm64,  // ARM64_W1, 11)
25*f6aab3d8Srobert     gpr_w2_arm64,  // ARM64_W2, 12)
26*f6aab3d8Srobert     gpr_w3_arm64,  // ARM64_W3, 13)
27*f6aab3d8Srobert     gpr_w4_arm64,  // ARM64_W4, 14)
28*f6aab3d8Srobert     gpr_w5_arm64,  // ARM64_W5, 15)
29*f6aab3d8Srobert     gpr_w6_arm64,  // ARM64_W6, 16)
30*f6aab3d8Srobert     gpr_w7_arm64,  // ARM64_W7, 17)
31*f6aab3d8Srobert     gpr_w8_arm64,  // ARM64_W8, 18)
32*f6aab3d8Srobert     gpr_w9_arm64,  // ARM64_W9, 19)
33*f6aab3d8Srobert     gpr_w10_arm64, // ARM64_W10, 20)
34*f6aab3d8Srobert     gpr_w11_arm64, // ARM64_W11, 21)
35*f6aab3d8Srobert     gpr_w12_arm64, // ARM64_W12, 22)
36*f6aab3d8Srobert     gpr_w13_arm64, // ARM64_W13, 23)
37*f6aab3d8Srobert     gpr_w14_arm64, // ARM64_W14, 24)
38*f6aab3d8Srobert     gpr_w15_arm64, // ARM64_W15, 25)
39*f6aab3d8Srobert     gpr_w16_arm64, // ARM64_W16, 26)
40*f6aab3d8Srobert     gpr_w17_arm64, // ARM64_W17, 27)
41*f6aab3d8Srobert     gpr_w18_arm64, // ARM64_W18, 28)
42*f6aab3d8Srobert     gpr_w19_arm64, // ARM64_W19, 29)
43*f6aab3d8Srobert     gpr_w20_arm64, // ARM64_W20, 30)
44*f6aab3d8Srobert     gpr_w21_arm64, // ARM64_W21, 31)
45*f6aab3d8Srobert     gpr_w22_arm64, // ARM64_W22, 32)
46*f6aab3d8Srobert     gpr_w23_arm64, // ARM64_W23, 33)
47*f6aab3d8Srobert     gpr_w24_arm64, // ARM64_W24, 34)
48*f6aab3d8Srobert     gpr_w25_arm64, // ARM64_W25, 35)
49*f6aab3d8Srobert     gpr_w26_arm64, // ARM64_W26, 36)
50*f6aab3d8Srobert     gpr_w27_arm64, // ARM64_W27, 37)
51*f6aab3d8Srobert     gpr_w28_arm64, // ARM64_W28, 38)
52*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
53*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
54*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
55*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
56*f6aab3d8Srobert     gpr_x0_arm64,  // ARM64_X0, 50)
57*f6aab3d8Srobert     gpr_x1_arm64,  // ARM64_X1, 51)
58*f6aab3d8Srobert     gpr_x2_arm64,  // ARM64_X2, 52)
59*f6aab3d8Srobert     gpr_x3_arm64,  // ARM64_X3, 53)
60*f6aab3d8Srobert     gpr_x4_arm64,  // ARM64_X4, 54)
61*f6aab3d8Srobert     gpr_x5_arm64,  // ARM64_X5, 55)
62*f6aab3d8Srobert     gpr_x6_arm64,  // ARM64_X6, 56)
63*f6aab3d8Srobert     gpr_x7_arm64,  // ARM64_X7, 57)
64*f6aab3d8Srobert     gpr_x8_arm64,  // ARM64_X8, 58)
65*f6aab3d8Srobert     gpr_x9_arm64,  // ARM64_X9, 59)
66*f6aab3d8Srobert     gpr_x10_arm64, // ARM64_X10, 60)
67*f6aab3d8Srobert     gpr_x11_arm64, // ARM64_X11, 61)
68*f6aab3d8Srobert     gpr_x12_arm64, // ARM64_X12, 62)
69*f6aab3d8Srobert     gpr_x13_arm64, // ARM64_X13, 63)
70*f6aab3d8Srobert     gpr_x14_arm64, // ARM64_X14, 64)
71*f6aab3d8Srobert     gpr_x15_arm64, // ARM64_X15, 65)
72*f6aab3d8Srobert     gpr_x16_arm64, // ARM64_X16, 66)
73*f6aab3d8Srobert     gpr_x17_arm64, // ARM64_X17, 67)
74*f6aab3d8Srobert     gpr_x18_arm64, // ARM64_X18, 68)
75*f6aab3d8Srobert     gpr_x19_arm64, // ARM64_X19, 69)
76*f6aab3d8Srobert     gpr_x20_arm64, // ARM64_X20, 70)
77*f6aab3d8Srobert     gpr_x21_arm64, // ARM64_X21, 71)
78*f6aab3d8Srobert     gpr_x22_arm64, // ARM64_X22, 72)
79*f6aab3d8Srobert     gpr_x23_arm64, // ARM64_X23, 73)
80*f6aab3d8Srobert     gpr_x24_arm64, // ARM64_X24, 74)
81*f6aab3d8Srobert     gpr_x25_arm64, // ARM64_X25, 75)
82*f6aab3d8Srobert     gpr_x26_arm64, // ARM64_X26, 76)
83*f6aab3d8Srobert     gpr_x27_arm64, // ARM64_X27, 77)
84*f6aab3d8Srobert     gpr_x28_arm64, // ARM64_X28, 78)
85*f6aab3d8Srobert     gpr_fp_arm64,  // ARM64_FP, 79)
86*f6aab3d8Srobert     gpr_lr_arm64,  // ARM64_LR, 80)
87*f6aab3d8Srobert     gpr_sp_arm64,  // ARM64_SP, 81)
88*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
89*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
90*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
91*f6aab3d8Srobert     gpr_cpsr_arm64, // ARM64_NZCV, 90)
92*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
93*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
94*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
95*f6aab3d8Srobert     fpu_s0_arm64,  // (ARM64_S0, 100)
96*f6aab3d8Srobert     fpu_s1_arm64,  // (ARM64_S1, 101)
97*f6aab3d8Srobert     fpu_s2_arm64,  // (ARM64_S2, 102)
98*f6aab3d8Srobert     fpu_s3_arm64,  // (ARM64_S3, 103)
99*f6aab3d8Srobert     fpu_s4_arm64,  // (ARM64_S4, 104)
100*f6aab3d8Srobert     fpu_s5_arm64,  // (ARM64_S5, 105)
101*f6aab3d8Srobert     fpu_s6_arm64,  // (ARM64_S6, 106)
102*f6aab3d8Srobert     fpu_s7_arm64,  // (ARM64_S7, 107)
103*f6aab3d8Srobert     fpu_s8_arm64,  // (ARM64_S8, 108)
104*f6aab3d8Srobert     fpu_s9_arm64,  // (ARM64_S9, 109)
105*f6aab3d8Srobert     fpu_s10_arm64, // (ARM64_S10, 110)
106*f6aab3d8Srobert     fpu_s11_arm64, // (ARM64_S11, 111)
107*f6aab3d8Srobert     fpu_s12_arm64, // (ARM64_S12, 112)
108*f6aab3d8Srobert     fpu_s13_arm64, // (ARM64_S13, 113)
109*f6aab3d8Srobert     fpu_s14_arm64, // (ARM64_S14, 114)
110*f6aab3d8Srobert     fpu_s15_arm64, // (ARM64_S15, 115)
111*f6aab3d8Srobert     fpu_s16_arm64, // (ARM64_S16, 116)
112*f6aab3d8Srobert     fpu_s17_arm64, // (ARM64_S17, 117)
113*f6aab3d8Srobert     fpu_s18_arm64, // (ARM64_S18, 118)
114*f6aab3d8Srobert     fpu_s19_arm64, // (ARM64_S19, 119)
115*f6aab3d8Srobert     fpu_s20_arm64, // (ARM64_S20, 120)
116*f6aab3d8Srobert     fpu_s21_arm64, // (ARM64_S21, 121)
117*f6aab3d8Srobert     fpu_s22_arm64, // (ARM64_S22, 122)
118*f6aab3d8Srobert     fpu_s23_arm64, // (ARM64_S23, 123)
119*f6aab3d8Srobert     fpu_s24_arm64, // (ARM64_S24, 124)
120*f6aab3d8Srobert     fpu_s25_arm64, // (ARM64_S25, 125)
121*f6aab3d8Srobert     fpu_s26_arm64, // (ARM64_S26, 126)
122*f6aab3d8Srobert     fpu_s27_arm64, // (ARM64_S27, 127)
123*f6aab3d8Srobert     fpu_s28_arm64, // (ARM64_S28, 128)
124*f6aab3d8Srobert     fpu_s29_arm64, // (ARM64_S29, 129)
125*f6aab3d8Srobert     fpu_s30_arm64, // (ARM64_S30, 130)
126*f6aab3d8Srobert     fpu_s31_arm64, // (ARM64_S31, 131)
127*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
128*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
129*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
130*f6aab3d8Srobert     fpu_d0_arm64,  // (ARM64_D0, 140)
131*f6aab3d8Srobert     fpu_d1_arm64,  // (ARM64_D1, 141)
132*f6aab3d8Srobert     fpu_d2_arm64,  // (ARM64_D2, 142)
133*f6aab3d8Srobert     fpu_d3_arm64,  // (ARM64_D3, 143)
134*f6aab3d8Srobert     fpu_d4_arm64,  // (ARM64_D4, 144)
135*f6aab3d8Srobert     fpu_d5_arm64,  // (ARM64_D5, 145)
136*f6aab3d8Srobert     fpu_d6_arm64,  // (ARM64_D6, 146)
137*f6aab3d8Srobert     fpu_d7_arm64,  // (ARM64_D7, 147)
138*f6aab3d8Srobert     fpu_d8_arm64,  // (ARM64_D8, 148)
139*f6aab3d8Srobert     fpu_d9_arm64,  // (ARM64_D9, 149)
140*f6aab3d8Srobert     fpu_d10_arm64, // (ARM64_D10, 150)
141*f6aab3d8Srobert     fpu_d11_arm64, // (ARM64_D11, 151)
142*f6aab3d8Srobert     fpu_d12_arm64, // (ARM64_D12, 152)
143*f6aab3d8Srobert     fpu_d13_arm64, // (ARM64_D13, 153)
144*f6aab3d8Srobert     fpu_d14_arm64, // (ARM64_D14, 154)
145*f6aab3d8Srobert     fpu_d15_arm64, // (ARM64_D15, 155)
146*f6aab3d8Srobert     fpu_d16_arm64, // (ARM64_D16, 156)
147*f6aab3d8Srobert     fpu_d17_arm64, // (ARM64_D17, 157)
148*f6aab3d8Srobert     fpu_d18_arm64, // (ARM64_D18, 158)
149*f6aab3d8Srobert     fpu_d19_arm64, // (ARM64_D19, 159)
150*f6aab3d8Srobert     fpu_d20_arm64, // (ARM64_D20, 160)
151*f6aab3d8Srobert     fpu_d21_arm64, // (ARM64_D21, 161)
152*f6aab3d8Srobert     fpu_d22_arm64, // (ARM64_D22, 162)
153*f6aab3d8Srobert     fpu_d23_arm64, // (ARM64_D23, 163)
154*f6aab3d8Srobert     fpu_d24_arm64, // (ARM64_D24, 164)
155*f6aab3d8Srobert     fpu_d25_arm64, // (ARM64_D25, 165)
156*f6aab3d8Srobert     fpu_d26_arm64, // (ARM64_D26, 166)
157*f6aab3d8Srobert     fpu_d27_arm64, // (ARM64_D27, 167)
158*f6aab3d8Srobert     fpu_d28_arm64, // (ARM64_D28, 168)
159*f6aab3d8Srobert     fpu_d29_arm64, // (ARM64_D29, 169)
160*f6aab3d8Srobert     fpu_d30_arm64, // (ARM64_D30, 170)
161*f6aab3d8Srobert     fpu_d31_arm64, // (ARM64_D31, 171)
162*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
163*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
164*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
165*f6aab3d8Srobert     fpu_v0_arm64,  // (ARM64_Q0, 180)
166*f6aab3d8Srobert     fpu_v1_arm64,  // (ARM64_Q1, 181)
167*f6aab3d8Srobert     fpu_v2_arm64,  // (ARM64_Q2, 182)
168*f6aab3d8Srobert     fpu_v3_arm64,  // (ARM64_Q3, 183)
169*f6aab3d8Srobert     fpu_v4_arm64,  // (ARM64_Q4, 184)
170*f6aab3d8Srobert     fpu_v5_arm64,  // (ARM64_Q5, 185)
171*f6aab3d8Srobert     fpu_v6_arm64,  // (ARM64_Q6, 186)
172*f6aab3d8Srobert     fpu_v7_arm64,  // (ARM64_Q7, 187)
173*f6aab3d8Srobert     fpu_v8_arm64,  // (ARM64_Q8, 188)
174*f6aab3d8Srobert     fpu_v9_arm64,  // (ARM64_Q9, 189)
175*f6aab3d8Srobert     fpu_v10_arm64, // (ARM64_Q10, 190)
176*f6aab3d8Srobert     fpu_v11_arm64, // (ARM64_Q11, 191)
177*f6aab3d8Srobert     fpu_v12_arm64, // (ARM64_Q12, 192)
178*f6aab3d8Srobert     fpu_v13_arm64, // (ARM64_Q13, 193)
179*f6aab3d8Srobert     fpu_v14_arm64, // (ARM64_Q14, 194)
180*f6aab3d8Srobert     fpu_v15_arm64, // (ARM64_Q15, 195)
181*f6aab3d8Srobert     fpu_v16_arm64, // (ARM64_Q16, 196)
182*f6aab3d8Srobert     fpu_v17_arm64, // (ARM64_Q17, 197)
183*f6aab3d8Srobert     fpu_v18_arm64, // (ARM64_Q18, 198)
184*f6aab3d8Srobert     fpu_v19_arm64, // (ARM64_Q19, 199)
185*f6aab3d8Srobert     fpu_v20_arm64, // (ARM64_Q20, 200)
186*f6aab3d8Srobert     fpu_v21_arm64, // (ARM64_Q21, 201)
187*f6aab3d8Srobert     fpu_v22_arm64, // (ARM64_Q22, 202)
188*f6aab3d8Srobert     fpu_v23_arm64, // (ARM64_Q23, 203)
189*f6aab3d8Srobert     fpu_v24_arm64, // (ARM64_Q24, 204)
190*f6aab3d8Srobert     fpu_v25_arm64, // (ARM64_Q25, 205)
191*f6aab3d8Srobert     fpu_v26_arm64, // (ARM64_Q26, 206)
192*f6aab3d8Srobert     fpu_v27_arm64, // (ARM64_Q27, 207)
193*f6aab3d8Srobert     fpu_v28_arm64, // (ARM64_Q28, 208)
194*f6aab3d8Srobert     fpu_v29_arm64, // (ARM64_Q29, 209)
195*f6aab3d8Srobert     fpu_v30_arm64, // (ARM64_Q30, 210)
196*f6aab3d8Srobert     fpu_v31_arm64, // (ARM64_Q31, 211)
197*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
198*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
199*f6aab3d8Srobert     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
200*f6aab3d8Srobert     fpu_fpsr_arm64 // ARM64_FPSR, 220)
201*f6aab3d8Srobert };
202*f6aab3d8Srobert 
203061da546Spatrick static const uint32_t g_code_view_to_lldb_registers_x86[] = {
204061da546Spatrick     LLDB_INVALID_REGNUM, // NONE
205061da546Spatrick     lldb_al_i386,        // AL
206061da546Spatrick     lldb_cl_i386,        // CL
207061da546Spatrick     lldb_dl_i386,        // DL
208061da546Spatrick     lldb_bl_i386,        // BL
209061da546Spatrick     lldb_ah_i386,        // AH
210061da546Spatrick     lldb_ch_i386,        // CH
211061da546Spatrick     lldb_dh_i386,        // DH
212061da546Spatrick     lldb_bh_i386,        // BH
213061da546Spatrick     lldb_ax_i386,        // AX
214061da546Spatrick     lldb_cx_i386,        // CX
215061da546Spatrick     lldb_dx_i386,        // DX
216061da546Spatrick     lldb_bx_i386,        // BX
217061da546Spatrick     lldb_sp_i386,        // SP
218061da546Spatrick     lldb_bp_i386,        // BP
219061da546Spatrick     lldb_si_i386,        // SI
220061da546Spatrick     lldb_di_i386,        // DI
221061da546Spatrick     lldb_eax_i386,       // EAX
222061da546Spatrick     lldb_ecx_i386,       // ECX
223061da546Spatrick     lldb_edx_i386,       // EDX
224061da546Spatrick     lldb_ebx_i386,       // EBX
225061da546Spatrick     lldb_esp_i386,       // ESP
226061da546Spatrick     lldb_ebp_i386,       // EBP
227061da546Spatrick     lldb_esi_i386,       // ESI
228061da546Spatrick     lldb_edi_i386,       // EDI
229061da546Spatrick     lldb_es_i386,        // ES
230061da546Spatrick     lldb_cs_i386,        // CS
231061da546Spatrick     lldb_ss_i386,        // SS
232061da546Spatrick     lldb_ds_i386,        // DS
233061da546Spatrick     lldb_fs_i386,        // FS
234061da546Spatrick     lldb_gs_i386,        // GS
235061da546Spatrick     LLDB_INVALID_REGNUM, // IP
236061da546Spatrick     LLDB_INVALID_REGNUM, // FLAGS
237061da546Spatrick     lldb_eip_i386,       // EIP
238061da546Spatrick     lldb_eflags_i386,    // EFLAGS
239061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
240061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
241061da546Spatrick     LLDB_INVALID_REGNUM, // TEMP
242061da546Spatrick     LLDB_INVALID_REGNUM, // TEMPH
243061da546Spatrick     LLDB_INVALID_REGNUM, // QUOTE
244061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR3
245061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR4
246061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR5
247061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR6
248061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR7
249061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
250061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
251061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
252061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
253061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
254061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
255061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
256061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
257061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
258061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
259061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
260061da546Spatrick     LLDB_INVALID_REGNUM, // CR0
261061da546Spatrick     LLDB_INVALID_REGNUM, // CR1
262061da546Spatrick     LLDB_INVALID_REGNUM, // CR2
263061da546Spatrick     LLDB_INVALID_REGNUM, // CR3
264061da546Spatrick     LLDB_INVALID_REGNUM, // CR4
265061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
266061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
267061da546Spatrick     lldb_dr0_i386, // DR0
268061da546Spatrick     lldb_dr1_i386, // DR1
269061da546Spatrick     lldb_dr2_i386, // DR2
270061da546Spatrick     lldb_dr3_i386, // DR3
271061da546Spatrick     lldb_dr4_i386, // DR4
272061da546Spatrick     lldb_dr5_i386, // DR5
273061da546Spatrick     lldb_dr6_i386, // DR6
274061da546Spatrick     lldb_dr7_i386, // DR7
275061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
276061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
277061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
278061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
279061da546Spatrick     LLDB_INVALID_REGNUM, // GDTR
280061da546Spatrick     LLDB_INVALID_REGNUM, // GDTL
281061da546Spatrick     LLDB_INVALID_REGNUM, // IDTR
282061da546Spatrick     LLDB_INVALID_REGNUM, // IDTL
283061da546Spatrick     LLDB_INVALID_REGNUM, // LDTR
284061da546Spatrick     LLDB_INVALID_REGNUM, // TR
285061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO1
286061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO2
287061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO3
288061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO4
289061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO5
290061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO6
291061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO7
292061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO8
293061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO9
294061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
295061da546Spatrick     lldb_st0_i386,       // ST0
296061da546Spatrick     lldb_st1_i386,       // ST1
297061da546Spatrick     lldb_st2_i386,       // ST2
298061da546Spatrick     lldb_st3_i386,       // ST3
299061da546Spatrick     lldb_st4_i386,       // ST4
300061da546Spatrick     lldb_st5_i386,       // ST5
301061da546Spatrick     lldb_st6_i386,       // ST6
302061da546Spatrick     lldb_st7_i386,       // ST7
303061da546Spatrick     LLDB_INVALID_REGNUM, // CTRL
304061da546Spatrick     LLDB_INVALID_REGNUM, // STAT
305061da546Spatrick     LLDB_INVALID_REGNUM, // TAG
306061da546Spatrick     LLDB_INVALID_REGNUM, // FPIP
307061da546Spatrick     LLDB_INVALID_REGNUM, // FPCS
308061da546Spatrick     LLDB_INVALID_REGNUM, // FPDO
309061da546Spatrick     LLDB_INVALID_REGNUM, // FPDS
310061da546Spatrick     LLDB_INVALID_REGNUM, // ISEM
311061da546Spatrick     LLDB_INVALID_REGNUM, // FPEIP
312061da546Spatrick     LLDB_INVALID_REGNUM, // FPEDO
313061da546Spatrick     lldb_mm0_i386,       // MM0
314061da546Spatrick     lldb_mm1_i386,       // MM1
315061da546Spatrick     lldb_mm2_i386,       // MM2
316061da546Spatrick     lldb_mm3_i386,       // MM3
317061da546Spatrick     lldb_mm4_i386,       // MM4
318061da546Spatrick     lldb_mm5_i386,       // MM5
319061da546Spatrick     lldb_mm6_i386,       // MM6
320061da546Spatrick     lldb_mm7_i386,       // MM7
321061da546Spatrick     lldb_xmm0_i386,      // XMM0
322061da546Spatrick     lldb_xmm1_i386,      // XMM1
323061da546Spatrick     lldb_xmm2_i386,      // XMM2
324061da546Spatrick     lldb_xmm3_i386,      // XMM3
325061da546Spatrick     lldb_xmm4_i386,      // XMM4
326061da546Spatrick     lldb_xmm5_i386,      // XMM5
327061da546Spatrick     lldb_xmm6_i386,      // XMM6
328061da546Spatrick     lldb_xmm7_i386       // XMM7
329061da546Spatrick };
330061da546Spatrick 
331061da546Spatrick static const uint32_t g_code_view_to_lldb_registers_x86_64[] = {
332061da546Spatrick     LLDB_INVALID_REGNUM, // NONE
333061da546Spatrick     lldb_al_x86_64,      // AL
334061da546Spatrick     lldb_cl_x86_64,      // CL
335061da546Spatrick     lldb_dl_x86_64,      // DL
336061da546Spatrick     lldb_bl_x86_64,      // BL
337061da546Spatrick     lldb_ah_x86_64,      // AH
338061da546Spatrick     lldb_ch_x86_64,      // CH
339061da546Spatrick     lldb_dh_x86_64,      // DH
340061da546Spatrick     lldb_bh_x86_64,      // BH
341061da546Spatrick     lldb_ax_x86_64,      // AX
342061da546Spatrick     lldb_cx_x86_64,      // CX
343061da546Spatrick     lldb_dx_x86_64,      // DX
344061da546Spatrick     lldb_bx_x86_64,      // BX
345061da546Spatrick     lldb_sp_x86_64,      // SP
346061da546Spatrick     lldb_bp_x86_64,      // BP
347061da546Spatrick     lldb_si_x86_64,      // SI
348061da546Spatrick     lldb_di_x86_64,      // DI
349061da546Spatrick     lldb_eax_x86_64,     // EAX
350061da546Spatrick     lldb_ecx_x86_64,     // ECX
351061da546Spatrick     lldb_edx_x86_64,     // EDX
352061da546Spatrick     lldb_ebx_x86_64,     // EBX
353061da546Spatrick     lldb_esp_x86_64,     // ESP
354061da546Spatrick     lldb_ebp_x86_64,     // EBP
355061da546Spatrick     lldb_esi_x86_64,     // ESI
356061da546Spatrick     lldb_edi_x86_64,     // EDI
357061da546Spatrick     lldb_es_x86_64,      // ES
358061da546Spatrick     lldb_cs_x86_64,      // CS
359061da546Spatrick     lldb_ss_x86_64,      // SS
360061da546Spatrick     lldb_ds_x86_64,      // DS
361061da546Spatrick     lldb_fs_x86_64,      // FS
362061da546Spatrick     lldb_gs_x86_64,      // GS
363061da546Spatrick     LLDB_INVALID_REGNUM, // IP
364061da546Spatrick     LLDB_INVALID_REGNUM, // FLAGS
365061da546Spatrick     LLDB_INVALID_REGNUM, // EIP
366061da546Spatrick     LLDB_INVALID_REGNUM, // EFLAGS
367061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
368061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
369061da546Spatrick     LLDB_INVALID_REGNUM, // TEMP
370061da546Spatrick     LLDB_INVALID_REGNUM, // TEMPH
371061da546Spatrick     LLDB_INVALID_REGNUM, // QUOTE
372061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR3
373061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR4
374061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR5
375061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR6
376061da546Spatrick     LLDB_INVALID_REGNUM, // PCDR7
377061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
378061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
379061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
380061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
381061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
382061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
383061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
384061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
385061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
386061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
387061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
388061da546Spatrick     LLDB_INVALID_REGNUM, // CR0
389061da546Spatrick     LLDB_INVALID_REGNUM, // CR1
390061da546Spatrick     LLDB_INVALID_REGNUM, // CR2
391061da546Spatrick     LLDB_INVALID_REGNUM, // CR3
392061da546Spatrick     LLDB_INVALID_REGNUM, // CR4
393061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
394061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
395061da546Spatrick     lldb_dr0_x86_64, // DR0
396061da546Spatrick     lldb_dr1_x86_64, // DR1
397061da546Spatrick     lldb_dr2_x86_64, // DR2
398061da546Spatrick     lldb_dr3_x86_64, // DR3
399061da546Spatrick     lldb_dr4_x86_64, // DR4
400061da546Spatrick     lldb_dr5_x86_64, // DR5
401061da546Spatrick     lldb_dr6_x86_64, // DR6
402061da546Spatrick     lldb_dr7_x86_64, // DR7
403061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
404061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
405061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
406061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
407061da546Spatrick     LLDB_INVALID_REGNUM, // GDTR
408061da546Spatrick     LLDB_INVALID_REGNUM, // GDTL
409061da546Spatrick     LLDB_INVALID_REGNUM, // IDTR
410061da546Spatrick     LLDB_INVALID_REGNUM, // IDTL
411061da546Spatrick     LLDB_INVALID_REGNUM, // LDTR
412061da546Spatrick     LLDB_INVALID_REGNUM, // TR
413061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO1
414061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO2
415061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO3
416061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO4
417061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO5
418061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO6
419061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO7
420061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO8
421061da546Spatrick     LLDB_INVALID_REGNUM, // PSEUDO9
422061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
423061da546Spatrick     lldb_st0_x86_64,     // ST0
424061da546Spatrick     lldb_st1_x86_64,     // ST1
425061da546Spatrick     lldb_st2_x86_64,     // ST2
426061da546Spatrick     lldb_st3_x86_64,     // ST3
427061da546Spatrick     lldb_st4_x86_64,     // ST4
428061da546Spatrick     lldb_st5_x86_64,     // ST5
429061da546Spatrick     lldb_st6_x86_64,     // ST6
430061da546Spatrick     lldb_st7_x86_64,     // ST7
431061da546Spatrick     LLDB_INVALID_REGNUM, // CTRL
432061da546Spatrick     LLDB_INVALID_REGNUM, // STAT
433061da546Spatrick     LLDB_INVALID_REGNUM, // TAG
434061da546Spatrick     LLDB_INVALID_REGNUM, // FPIP
435061da546Spatrick     LLDB_INVALID_REGNUM, // FPCS
436061da546Spatrick     LLDB_INVALID_REGNUM, // FPDO
437061da546Spatrick     LLDB_INVALID_REGNUM, // FPDS
438061da546Spatrick     LLDB_INVALID_REGNUM, // ISEM
439061da546Spatrick     LLDB_INVALID_REGNUM, // FPEIP
440061da546Spatrick     LLDB_INVALID_REGNUM, // FPEDO
441061da546Spatrick     lldb_mm0_x86_64,     // MM0
442061da546Spatrick     lldb_mm1_x86_64,     // MM1
443061da546Spatrick     lldb_mm2_x86_64,     // MM2
444061da546Spatrick     lldb_mm3_x86_64,     // MM3
445061da546Spatrick     lldb_mm4_x86_64,     // MM4
446061da546Spatrick     lldb_mm5_x86_64,     // MM5
447061da546Spatrick     lldb_mm6_x86_64,     // MM6
448061da546Spatrick     lldb_mm7_x86_64,     // MM7
449061da546Spatrick     lldb_xmm0_x86_64,    // XMM0
450061da546Spatrick     lldb_xmm1_x86_64,    // XMM1
451061da546Spatrick     lldb_xmm2_x86_64,    // XMM2
452061da546Spatrick     lldb_xmm3_x86_64,    // XMM3
453061da546Spatrick     lldb_xmm4_x86_64,    // XMM4
454061da546Spatrick     lldb_xmm5_x86_64,    // XMM5
455061da546Spatrick     lldb_xmm6_x86_64,    // XMM6
456061da546Spatrick     lldb_xmm7_x86_64,    // XMM7
457061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
458061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
459061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
460061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
461061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
462061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
463061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
464061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
465061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
466061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
467061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
468061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
469061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
470061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
471061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
472061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
473061da546Spatrick     LLDB_INVALID_REGNUM,
474061da546Spatrick     lldb_mxcsr_x86_64,   // MXCSR
475061da546Spatrick     LLDB_INVALID_REGNUM, // EDXEAX
476061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
477061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
478061da546Spatrick     LLDB_INVALID_REGNUM,
479061da546Spatrick     LLDB_INVALID_REGNUM, // EMM0L
480061da546Spatrick     LLDB_INVALID_REGNUM, // EMM1L
481061da546Spatrick     LLDB_INVALID_REGNUM, // EMM2L
482061da546Spatrick     LLDB_INVALID_REGNUM, // EMM3L
483061da546Spatrick     LLDB_INVALID_REGNUM, // EMM4L
484061da546Spatrick     LLDB_INVALID_REGNUM, // EMM5L
485061da546Spatrick     LLDB_INVALID_REGNUM, // EMM6L
486061da546Spatrick     LLDB_INVALID_REGNUM, // EMM7L
487061da546Spatrick     LLDB_INVALID_REGNUM, // EMM0H
488061da546Spatrick     LLDB_INVALID_REGNUM, // EMM1H
489061da546Spatrick     LLDB_INVALID_REGNUM, // EMM2H
490061da546Spatrick     LLDB_INVALID_REGNUM, // EMM3H
491061da546Spatrick     LLDB_INVALID_REGNUM, // EMM4H
492061da546Spatrick     LLDB_INVALID_REGNUM, // EMM5H
493061da546Spatrick     LLDB_INVALID_REGNUM, // EMM6H
494061da546Spatrick     LLDB_INVALID_REGNUM, // EMM7H
495061da546Spatrick     LLDB_INVALID_REGNUM, // MM00
496061da546Spatrick     LLDB_INVALID_REGNUM, // MM01
497061da546Spatrick     LLDB_INVALID_REGNUM, // MM10
498061da546Spatrick     LLDB_INVALID_REGNUM, // MM11
499061da546Spatrick     LLDB_INVALID_REGNUM, // MM20
500061da546Spatrick     LLDB_INVALID_REGNUM, // MM21
501061da546Spatrick     LLDB_INVALID_REGNUM, // MM30
502061da546Spatrick     LLDB_INVALID_REGNUM, // MM31
503061da546Spatrick     LLDB_INVALID_REGNUM, // MM40
504061da546Spatrick     LLDB_INVALID_REGNUM, // MM41
505061da546Spatrick     LLDB_INVALID_REGNUM, // MM50
506061da546Spatrick     LLDB_INVALID_REGNUM, // MM51
507061da546Spatrick     LLDB_INVALID_REGNUM, // MM60
508061da546Spatrick     LLDB_INVALID_REGNUM, // MM61
509061da546Spatrick     LLDB_INVALID_REGNUM, // MM70
510061da546Spatrick     LLDB_INVALID_REGNUM, // MM71
511061da546Spatrick     lldb_xmm8_x86_64,    // XMM8
512061da546Spatrick     lldb_xmm9_x86_64,    // XMM9
513061da546Spatrick     lldb_xmm10_x86_64,   // XMM10
514061da546Spatrick     lldb_xmm11_x86_64,   // XMM11
515061da546Spatrick     lldb_xmm12_x86_64,   // XMM12
516061da546Spatrick     lldb_xmm13_x86_64,   // XMM13
517061da546Spatrick     lldb_xmm14_x86_64,   // XMM14
518061da546Spatrick     lldb_xmm15_x86_64,   // XMM15
519061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
520061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
521061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
522061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
523061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
524061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
525061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
526061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
527061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
528061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
529061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
530061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
531061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
532061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
533061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
534061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
535061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
536061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
537061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
538061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
539061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
540061da546Spatrick     LLDB_INVALID_REGNUM,
541061da546Spatrick     lldb_sil_x86_64,   // SIL
542061da546Spatrick     lldb_dil_x86_64,   // DIL
543061da546Spatrick     lldb_bpl_x86_64,   // BPL
544061da546Spatrick     lldb_spl_x86_64,   // SPL
545061da546Spatrick     lldb_rax_x86_64,   // RAX
546061da546Spatrick     lldb_rbx_x86_64,   // RBX
547061da546Spatrick     lldb_rcx_x86_64,   // RCX
548061da546Spatrick     lldb_rdx_x86_64,   // RDX
549061da546Spatrick     lldb_rsi_x86_64,   // RSI
550061da546Spatrick     lldb_rdi_x86_64,   // RDI
551061da546Spatrick     lldb_rbp_x86_64,   // RBP
552061da546Spatrick     lldb_rsp_x86_64,   // RSP
553061da546Spatrick     lldb_r8_x86_64,    // R8
554061da546Spatrick     lldb_r9_x86_64,    // R9
555061da546Spatrick     lldb_r10_x86_64,   // R10
556061da546Spatrick     lldb_r11_x86_64,   // R11
557061da546Spatrick     lldb_r12_x86_64,   // R12
558061da546Spatrick     lldb_r13_x86_64,   // R13
559061da546Spatrick     lldb_r14_x86_64,   // R14
560061da546Spatrick     lldb_r15_x86_64,   // R15
561061da546Spatrick     lldb_r8l_x86_64,   // R8B
562061da546Spatrick     lldb_r9l_x86_64,   // R9B
563061da546Spatrick     lldb_r10l_x86_64,  // R10B
564061da546Spatrick     lldb_r11l_x86_64,  // R11B
565061da546Spatrick     lldb_r12l_x86_64,  // R12B
566061da546Spatrick     lldb_r13l_x86_64,  // R13B
567061da546Spatrick     lldb_r14l_x86_64,  // R14B
568061da546Spatrick     lldb_r15l_x86_64,  // R15B
569061da546Spatrick     lldb_r8w_x86_64,   // R8W
570061da546Spatrick     lldb_r9w_x86_64,   // R9W
571061da546Spatrick     lldb_r10w_x86_64,  // R10W
572061da546Spatrick     lldb_r11w_x86_64,  // R11W
573061da546Spatrick     lldb_r12w_x86_64,  // R12W
574061da546Spatrick     lldb_r13w_x86_64,  // R13W
575061da546Spatrick     lldb_r14w_x86_64,  // R14W
576061da546Spatrick     lldb_r15w_x86_64,  // R15W
577061da546Spatrick     lldb_r8d_x86_64,   // R8D
578061da546Spatrick     lldb_r9d_x86_64,   // R9D
579061da546Spatrick     lldb_r10d_x86_64,  // R10D
580061da546Spatrick     lldb_r11d_x86_64,  // R11D
581061da546Spatrick     lldb_r12d_x86_64,  // R12D
582061da546Spatrick     lldb_r13d_x86_64,  // R13D
583061da546Spatrick     lldb_r14d_x86_64,  // R14D
584061da546Spatrick     lldb_r15d_x86_64,  // R15D
585061da546Spatrick     lldb_ymm0_x86_64,  // AMD64_YMM0
586061da546Spatrick     lldb_ymm1_x86_64,  // AMD64_YMM1
587061da546Spatrick     lldb_ymm2_x86_64,  // AMD64_YMM2
588061da546Spatrick     lldb_ymm3_x86_64,  // AMD64_YMM3
589061da546Spatrick     lldb_ymm4_x86_64,  // AMD64_YMM4
590061da546Spatrick     lldb_ymm5_x86_64,  // AMD64_YMM5
591061da546Spatrick     lldb_ymm6_x86_64,  // AMD64_YMM6
592061da546Spatrick     lldb_ymm7_x86_64,  // AMD64_YMM7
593061da546Spatrick     lldb_ymm8_x86_64,  // AMD64_YMM8
594061da546Spatrick     lldb_ymm9_x86_64,  // AMD64_YMM9
595061da546Spatrick     lldb_ymm10_x86_64, // AMD64_YMM10
596061da546Spatrick     lldb_ymm11_x86_64, // AMD64_YMM11
597061da546Spatrick     lldb_ymm12_x86_64, // AMD64_YMM12
598061da546Spatrick     lldb_ymm13_x86_64, // AMD64_YMM13
599061da546Spatrick     lldb_ymm14_x86_64, // AMD64_YMM14
600061da546Spatrick     lldb_ymm15_x86_64, // AMD64_YMM15
601061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
602061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
603061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
604061da546Spatrick     LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
605061da546Spatrick     lldb_bnd0_x86_64, // BND0
606061da546Spatrick     lldb_bnd1_x86_64, // BND1
607061da546Spatrick     lldb_bnd2_x86_64  // BND2
608061da546Spatrick };
609061da546Spatrick 
GetLLDBRegisterNumber(llvm::Triple::ArchType arch_type,llvm::codeview::RegisterId register_id)610061da546Spatrick uint32_t lldb_private::npdb::GetLLDBRegisterNumber(
611061da546Spatrick     llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) {
612061da546Spatrick   switch (arch_type) {
613*f6aab3d8Srobert   case llvm::Triple::aarch64:
614*f6aab3d8Srobert     if (static_cast<uint16_t>(register_id) <
615*f6aab3d8Srobert         sizeof(g_code_view_to_lldb_registers_arm64) /
616*f6aab3d8Srobert             sizeof(g_code_view_to_lldb_registers_arm64[0]))
617*f6aab3d8Srobert       return g_code_view_to_lldb_registers_arm64[static_cast<uint16_t>(
618*f6aab3d8Srobert           register_id)];
619*f6aab3d8Srobert 
620*f6aab3d8Srobert     return LLDB_INVALID_REGNUM;
621061da546Spatrick   case llvm::Triple::x86:
622061da546Spatrick     if (static_cast<uint16_t>(register_id) <
623061da546Spatrick         sizeof(g_code_view_to_lldb_registers_x86) /
624061da546Spatrick             sizeof(g_code_view_to_lldb_registers_x86[0]))
625061da546Spatrick       return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>(
626061da546Spatrick           register_id)];
627061da546Spatrick 
628061da546Spatrick     switch (register_id) {
629061da546Spatrick     case llvm::codeview::RegisterId::MXCSR:
630061da546Spatrick       return lldb_mxcsr_i386;
631061da546Spatrick     case llvm::codeview::RegisterId::BND0:
632061da546Spatrick       return lldb_bnd0_i386;
633061da546Spatrick     case llvm::codeview::RegisterId::BND1:
634061da546Spatrick       return lldb_bnd1_i386;
635061da546Spatrick     case llvm::codeview::RegisterId::BND2:
636061da546Spatrick       return lldb_bnd2_i386;
637061da546Spatrick     default:
638061da546Spatrick       return LLDB_INVALID_REGNUM;
639061da546Spatrick     }
640061da546Spatrick   case llvm::Triple::x86_64:
641061da546Spatrick     if (static_cast<uint16_t>(register_id) <
642061da546Spatrick         sizeof(g_code_view_to_lldb_registers_x86_64) /
643061da546Spatrick             sizeof(g_code_view_to_lldb_registers_x86_64[0]))
644061da546Spatrick       return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>(
645061da546Spatrick           register_id)];
646061da546Spatrick 
647061da546Spatrick     return LLDB_INVALID_REGNUM;
648061da546Spatrick   default:
649061da546Spatrick     return LLDB_INVALID_REGNUM;
650061da546Spatrick   }
651061da546Spatrick }
652*f6aab3d8Srobert 
653*f6aab3d8Srobert uint32_t
GetRegisterSize(llvm::codeview::RegisterId register_id)654*f6aab3d8Srobert lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) {
655*f6aab3d8Srobert   switch(register_id) {
656*f6aab3d8Srobert     case llvm::codeview::RegisterId::AL:
657*f6aab3d8Srobert     case llvm::codeview::RegisterId::BL:
658*f6aab3d8Srobert     case llvm::codeview::RegisterId::CL:
659*f6aab3d8Srobert     case llvm::codeview::RegisterId::DL:
660*f6aab3d8Srobert     case llvm::codeview::RegisterId::AH:
661*f6aab3d8Srobert     case llvm::codeview::RegisterId::BH:
662*f6aab3d8Srobert     case llvm::codeview::RegisterId::CH:
663*f6aab3d8Srobert     case llvm::codeview::RegisterId::DH:
664*f6aab3d8Srobert     case llvm::codeview::RegisterId::SIL:
665*f6aab3d8Srobert     case llvm::codeview::RegisterId::DIL:
666*f6aab3d8Srobert     case llvm::codeview::RegisterId::BPL:
667*f6aab3d8Srobert     case llvm::codeview::RegisterId::SPL:
668*f6aab3d8Srobert     case llvm::codeview::RegisterId::R8B:
669*f6aab3d8Srobert     case llvm::codeview::RegisterId::R9B:
670*f6aab3d8Srobert     case llvm::codeview::RegisterId::R10B:
671*f6aab3d8Srobert     case llvm::codeview::RegisterId::R11B:
672*f6aab3d8Srobert     case llvm::codeview::RegisterId::R12B:
673*f6aab3d8Srobert     case llvm::codeview::RegisterId::R13B:
674*f6aab3d8Srobert     case llvm::codeview::RegisterId::R14B:
675*f6aab3d8Srobert     case llvm::codeview::RegisterId::R15B:
676*f6aab3d8Srobert       return 1;
677*f6aab3d8Srobert     case llvm::codeview::RegisterId::AX:
678*f6aab3d8Srobert     case llvm::codeview::RegisterId::BX:
679*f6aab3d8Srobert     case llvm::codeview::RegisterId::CX:
680*f6aab3d8Srobert     case llvm::codeview::RegisterId::DX:
681*f6aab3d8Srobert     case llvm::codeview::RegisterId::SP:
682*f6aab3d8Srobert     case llvm::codeview::RegisterId::BP:
683*f6aab3d8Srobert     case llvm::codeview::RegisterId::SI:
684*f6aab3d8Srobert     case llvm::codeview::RegisterId::DI:
685*f6aab3d8Srobert     case llvm::codeview::RegisterId::R8W:
686*f6aab3d8Srobert     case llvm::codeview::RegisterId::R9W:
687*f6aab3d8Srobert     case llvm::codeview::RegisterId::R10W:
688*f6aab3d8Srobert     case llvm::codeview::RegisterId::R11W:
689*f6aab3d8Srobert     case llvm::codeview::RegisterId::R12W:
690*f6aab3d8Srobert     case llvm::codeview::RegisterId::R13W:
691*f6aab3d8Srobert     case llvm::codeview::RegisterId::R14W:
692*f6aab3d8Srobert     case llvm::codeview::RegisterId::R15W:
693*f6aab3d8Srobert       return 2;
694*f6aab3d8Srobert     case llvm::codeview::RegisterId::EAX:
695*f6aab3d8Srobert     case llvm::codeview::RegisterId::EBX:
696*f6aab3d8Srobert     case llvm::codeview::RegisterId::ECX:
697*f6aab3d8Srobert     case llvm::codeview::RegisterId::EDX:
698*f6aab3d8Srobert     case llvm::codeview::RegisterId::ESP:
699*f6aab3d8Srobert     case llvm::codeview::RegisterId::EBP:
700*f6aab3d8Srobert     case llvm::codeview::RegisterId::ESI:
701*f6aab3d8Srobert     case llvm::codeview::RegisterId::EDI:
702*f6aab3d8Srobert     case llvm::codeview::RegisterId::R8D:
703*f6aab3d8Srobert     case llvm::codeview::RegisterId::R9D:
704*f6aab3d8Srobert     case llvm::codeview::RegisterId::R10D:
705*f6aab3d8Srobert     case llvm::codeview::RegisterId::R11D:
706*f6aab3d8Srobert     case llvm::codeview::RegisterId::R12D:
707*f6aab3d8Srobert     case llvm::codeview::RegisterId::R13D:
708*f6aab3d8Srobert     case llvm::codeview::RegisterId::R14D:
709*f6aab3d8Srobert     case llvm::codeview::RegisterId::R15D:
710*f6aab3d8Srobert       return 4;
711*f6aab3d8Srobert     case llvm::codeview::RegisterId::RAX:
712*f6aab3d8Srobert     case llvm::codeview::RegisterId::RBX:
713*f6aab3d8Srobert     case llvm::codeview::RegisterId::RCX:
714*f6aab3d8Srobert     case llvm::codeview::RegisterId::RDX:
715*f6aab3d8Srobert     case llvm::codeview::RegisterId::RSI:
716*f6aab3d8Srobert     case llvm::codeview::RegisterId::RDI:
717*f6aab3d8Srobert     case llvm::codeview::RegisterId::RBP:
718*f6aab3d8Srobert     case llvm::codeview::RegisterId::RSP:
719*f6aab3d8Srobert     case llvm::codeview::RegisterId::R8:
720*f6aab3d8Srobert     case llvm::codeview::RegisterId::R9:
721*f6aab3d8Srobert     case llvm::codeview::RegisterId::R10:
722*f6aab3d8Srobert     case llvm::codeview::RegisterId::R11:
723*f6aab3d8Srobert     case llvm::codeview::RegisterId::R12:
724*f6aab3d8Srobert     case llvm::codeview::RegisterId::R13:
725*f6aab3d8Srobert     case llvm::codeview::RegisterId::R14:
726*f6aab3d8Srobert     case llvm::codeview::RegisterId::R15:
727*f6aab3d8Srobert       return 8;
728*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM0:
729*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM1:
730*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM2:
731*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM3:
732*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM4:
733*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM5:
734*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM6:
735*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM7:
736*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM8:
737*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM9:
738*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM10:
739*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM11:
740*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM12:
741*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM13:
742*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM14:
743*f6aab3d8Srobert     case llvm::codeview::RegisterId::XMM15:
744*f6aab3d8Srobert       return 16;
745*f6aab3d8Srobert     default:
746*f6aab3d8Srobert       return 0;
747*f6aab3d8Srobert   }
748*f6aab3d8Srobert }
749