1cfca06d7SDimitry Andric //===-- CodeViewRegisterMapping.cpp ---------------------------------------===//
25f29bb8aSDimitry Andric //
35f29bb8aSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45f29bb8aSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
55f29bb8aSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65f29bb8aSDimitry Andric //
75f29bb8aSDimitry Andric //===----------------------------------------------------------------------===//
85f29bb8aSDimitry Andric
95f29bb8aSDimitry Andric #include "CodeViewRegisterMapping.h"
105f29bb8aSDimitry Andric
115f29bb8aSDimitry Andric #include "lldb/lldb-defines.h"
125f29bb8aSDimitry Andric
13145449b1SDimitry Andric #include "Plugins/Process/Utility/lldb-arm64-register-enums.h"
145f29bb8aSDimitry Andric #include "Plugins/Process/Utility/lldb-x86-register-enums.h"
155f29bb8aSDimitry Andric
165f29bb8aSDimitry Andric using namespace lldb_private;
175f29bb8aSDimitry Andric
18145449b1SDimitry Andric static const uint32_t g_code_view_to_lldb_registers_arm64[] = {
19145449b1SDimitry Andric LLDB_INVALID_REGNUM, // NONE
20145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
21145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
22145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
23145449b1SDimitry Andric gpr_w0_arm64, // ARM64_W0, 10)
24145449b1SDimitry Andric gpr_w1_arm64, // ARM64_W1, 11)
25145449b1SDimitry Andric gpr_w2_arm64, // ARM64_W2, 12)
26145449b1SDimitry Andric gpr_w3_arm64, // ARM64_W3, 13)
27145449b1SDimitry Andric gpr_w4_arm64, // ARM64_W4, 14)
28145449b1SDimitry Andric gpr_w5_arm64, // ARM64_W5, 15)
29145449b1SDimitry Andric gpr_w6_arm64, // ARM64_W6, 16)
30145449b1SDimitry Andric gpr_w7_arm64, // ARM64_W7, 17)
31145449b1SDimitry Andric gpr_w8_arm64, // ARM64_W8, 18)
32145449b1SDimitry Andric gpr_w9_arm64, // ARM64_W9, 19)
33145449b1SDimitry Andric gpr_w10_arm64, // ARM64_W10, 20)
34145449b1SDimitry Andric gpr_w11_arm64, // ARM64_W11, 21)
35145449b1SDimitry Andric gpr_w12_arm64, // ARM64_W12, 22)
36145449b1SDimitry Andric gpr_w13_arm64, // ARM64_W13, 23)
37145449b1SDimitry Andric gpr_w14_arm64, // ARM64_W14, 24)
38145449b1SDimitry Andric gpr_w15_arm64, // ARM64_W15, 25)
39145449b1SDimitry Andric gpr_w16_arm64, // ARM64_W16, 26)
40145449b1SDimitry Andric gpr_w17_arm64, // ARM64_W17, 27)
41145449b1SDimitry Andric gpr_w18_arm64, // ARM64_W18, 28)
42145449b1SDimitry Andric gpr_w19_arm64, // ARM64_W19, 29)
43145449b1SDimitry Andric gpr_w20_arm64, // ARM64_W20, 30)
44145449b1SDimitry Andric gpr_w21_arm64, // ARM64_W21, 31)
45145449b1SDimitry Andric gpr_w22_arm64, // ARM64_W22, 32)
46145449b1SDimitry Andric gpr_w23_arm64, // ARM64_W23, 33)
47145449b1SDimitry Andric gpr_w24_arm64, // ARM64_W24, 34)
48145449b1SDimitry Andric gpr_w25_arm64, // ARM64_W25, 35)
49145449b1SDimitry Andric gpr_w26_arm64, // ARM64_W26, 36)
50145449b1SDimitry Andric gpr_w27_arm64, // ARM64_W27, 37)
51145449b1SDimitry Andric gpr_w28_arm64, // ARM64_W28, 38)
52145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
53145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
54145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
55145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
56145449b1SDimitry Andric gpr_x0_arm64, // ARM64_X0, 50)
57145449b1SDimitry Andric gpr_x1_arm64, // ARM64_X1, 51)
58145449b1SDimitry Andric gpr_x2_arm64, // ARM64_X2, 52)
59145449b1SDimitry Andric gpr_x3_arm64, // ARM64_X3, 53)
60145449b1SDimitry Andric gpr_x4_arm64, // ARM64_X4, 54)
61145449b1SDimitry Andric gpr_x5_arm64, // ARM64_X5, 55)
62145449b1SDimitry Andric gpr_x6_arm64, // ARM64_X6, 56)
63145449b1SDimitry Andric gpr_x7_arm64, // ARM64_X7, 57)
64145449b1SDimitry Andric gpr_x8_arm64, // ARM64_X8, 58)
65145449b1SDimitry Andric gpr_x9_arm64, // ARM64_X9, 59)
66145449b1SDimitry Andric gpr_x10_arm64, // ARM64_X10, 60)
67145449b1SDimitry Andric gpr_x11_arm64, // ARM64_X11, 61)
68145449b1SDimitry Andric gpr_x12_arm64, // ARM64_X12, 62)
69145449b1SDimitry Andric gpr_x13_arm64, // ARM64_X13, 63)
70145449b1SDimitry Andric gpr_x14_arm64, // ARM64_X14, 64)
71145449b1SDimitry Andric gpr_x15_arm64, // ARM64_X15, 65)
72145449b1SDimitry Andric gpr_x16_arm64, // ARM64_X16, 66)
73145449b1SDimitry Andric gpr_x17_arm64, // ARM64_X17, 67)
74145449b1SDimitry Andric gpr_x18_arm64, // ARM64_X18, 68)
75145449b1SDimitry Andric gpr_x19_arm64, // ARM64_X19, 69)
76145449b1SDimitry Andric gpr_x20_arm64, // ARM64_X20, 70)
77145449b1SDimitry Andric gpr_x21_arm64, // ARM64_X21, 71)
78145449b1SDimitry Andric gpr_x22_arm64, // ARM64_X22, 72)
79145449b1SDimitry Andric gpr_x23_arm64, // ARM64_X23, 73)
80145449b1SDimitry Andric gpr_x24_arm64, // ARM64_X24, 74)
81145449b1SDimitry Andric gpr_x25_arm64, // ARM64_X25, 75)
82145449b1SDimitry Andric gpr_x26_arm64, // ARM64_X26, 76)
83145449b1SDimitry Andric gpr_x27_arm64, // ARM64_X27, 77)
84145449b1SDimitry Andric gpr_x28_arm64, // ARM64_X28, 78)
85145449b1SDimitry Andric gpr_fp_arm64, // ARM64_FP, 79)
86145449b1SDimitry Andric gpr_lr_arm64, // ARM64_LR, 80)
87145449b1SDimitry Andric gpr_sp_arm64, // ARM64_SP, 81)
88145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
89145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
90145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
91145449b1SDimitry Andric gpr_cpsr_arm64, // ARM64_NZCV, 90)
92145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
93145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
94145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
95145449b1SDimitry Andric fpu_s0_arm64, // (ARM64_S0, 100)
96145449b1SDimitry Andric fpu_s1_arm64, // (ARM64_S1, 101)
97145449b1SDimitry Andric fpu_s2_arm64, // (ARM64_S2, 102)
98145449b1SDimitry Andric fpu_s3_arm64, // (ARM64_S3, 103)
99145449b1SDimitry Andric fpu_s4_arm64, // (ARM64_S4, 104)
100145449b1SDimitry Andric fpu_s5_arm64, // (ARM64_S5, 105)
101145449b1SDimitry Andric fpu_s6_arm64, // (ARM64_S6, 106)
102145449b1SDimitry Andric fpu_s7_arm64, // (ARM64_S7, 107)
103145449b1SDimitry Andric fpu_s8_arm64, // (ARM64_S8, 108)
104145449b1SDimitry Andric fpu_s9_arm64, // (ARM64_S9, 109)
105145449b1SDimitry Andric fpu_s10_arm64, // (ARM64_S10, 110)
106145449b1SDimitry Andric fpu_s11_arm64, // (ARM64_S11, 111)
107145449b1SDimitry Andric fpu_s12_arm64, // (ARM64_S12, 112)
108145449b1SDimitry Andric fpu_s13_arm64, // (ARM64_S13, 113)
109145449b1SDimitry Andric fpu_s14_arm64, // (ARM64_S14, 114)
110145449b1SDimitry Andric fpu_s15_arm64, // (ARM64_S15, 115)
111145449b1SDimitry Andric fpu_s16_arm64, // (ARM64_S16, 116)
112145449b1SDimitry Andric fpu_s17_arm64, // (ARM64_S17, 117)
113145449b1SDimitry Andric fpu_s18_arm64, // (ARM64_S18, 118)
114145449b1SDimitry Andric fpu_s19_arm64, // (ARM64_S19, 119)
115145449b1SDimitry Andric fpu_s20_arm64, // (ARM64_S20, 120)
116145449b1SDimitry Andric fpu_s21_arm64, // (ARM64_S21, 121)
117145449b1SDimitry Andric fpu_s22_arm64, // (ARM64_S22, 122)
118145449b1SDimitry Andric fpu_s23_arm64, // (ARM64_S23, 123)
119145449b1SDimitry Andric fpu_s24_arm64, // (ARM64_S24, 124)
120145449b1SDimitry Andric fpu_s25_arm64, // (ARM64_S25, 125)
121145449b1SDimitry Andric fpu_s26_arm64, // (ARM64_S26, 126)
122145449b1SDimitry Andric fpu_s27_arm64, // (ARM64_S27, 127)
123145449b1SDimitry Andric fpu_s28_arm64, // (ARM64_S28, 128)
124145449b1SDimitry Andric fpu_s29_arm64, // (ARM64_S29, 129)
125145449b1SDimitry Andric fpu_s30_arm64, // (ARM64_S30, 130)
126145449b1SDimitry Andric fpu_s31_arm64, // (ARM64_S31, 131)
127145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
128145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
129145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
130145449b1SDimitry Andric fpu_d0_arm64, // (ARM64_D0, 140)
131145449b1SDimitry Andric fpu_d1_arm64, // (ARM64_D1, 141)
132145449b1SDimitry Andric fpu_d2_arm64, // (ARM64_D2, 142)
133145449b1SDimitry Andric fpu_d3_arm64, // (ARM64_D3, 143)
134145449b1SDimitry Andric fpu_d4_arm64, // (ARM64_D4, 144)
135145449b1SDimitry Andric fpu_d5_arm64, // (ARM64_D5, 145)
136145449b1SDimitry Andric fpu_d6_arm64, // (ARM64_D6, 146)
137145449b1SDimitry Andric fpu_d7_arm64, // (ARM64_D7, 147)
138145449b1SDimitry Andric fpu_d8_arm64, // (ARM64_D8, 148)
139145449b1SDimitry Andric fpu_d9_arm64, // (ARM64_D9, 149)
140145449b1SDimitry Andric fpu_d10_arm64, // (ARM64_D10, 150)
141145449b1SDimitry Andric fpu_d11_arm64, // (ARM64_D11, 151)
142145449b1SDimitry Andric fpu_d12_arm64, // (ARM64_D12, 152)
143145449b1SDimitry Andric fpu_d13_arm64, // (ARM64_D13, 153)
144145449b1SDimitry Andric fpu_d14_arm64, // (ARM64_D14, 154)
145145449b1SDimitry Andric fpu_d15_arm64, // (ARM64_D15, 155)
146145449b1SDimitry Andric fpu_d16_arm64, // (ARM64_D16, 156)
147145449b1SDimitry Andric fpu_d17_arm64, // (ARM64_D17, 157)
148145449b1SDimitry Andric fpu_d18_arm64, // (ARM64_D18, 158)
149145449b1SDimitry Andric fpu_d19_arm64, // (ARM64_D19, 159)
150145449b1SDimitry Andric fpu_d20_arm64, // (ARM64_D20, 160)
151145449b1SDimitry Andric fpu_d21_arm64, // (ARM64_D21, 161)
152145449b1SDimitry Andric fpu_d22_arm64, // (ARM64_D22, 162)
153145449b1SDimitry Andric fpu_d23_arm64, // (ARM64_D23, 163)
154145449b1SDimitry Andric fpu_d24_arm64, // (ARM64_D24, 164)
155145449b1SDimitry Andric fpu_d25_arm64, // (ARM64_D25, 165)
156145449b1SDimitry Andric fpu_d26_arm64, // (ARM64_D26, 166)
157145449b1SDimitry Andric fpu_d27_arm64, // (ARM64_D27, 167)
158145449b1SDimitry Andric fpu_d28_arm64, // (ARM64_D28, 168)
159145449b1SDimitry Andric fpu_d29_arm64, // (ARM64_D29, 169)
160145449b1SDimitry Andric fpu_d30_arm64, // (ARM64_D30, 170)
161145449b1SDimitry Andric fpu_d31_arm64, // (ARM64_D31, 171)
162145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
163145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
164145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
165145449b1SDimitry Andric fpu_v0_arm64, // (ARM64_Q0, 180)
166145449b1SDimitry Andric fpu_v1_arm64, // (ARM64_Q1, 181)
167145449b1SDimitry Andric fpu_v2_arm64, // (ARM64_Q2, 182)
168145449b1SDimitry Andric fpu_v3_arm64, // (ARM64_Q3, 183)
169145449b1SDimitry Andric fpu_v4_arm64, // (ARM64_Q4, 184)
170145449b1SDimitry Andric fpu_v5_arm64, // (ARM64_Q5, 185)
171145449b1SDimitry Andric fpu_v6_arm64, // (ARM64_Q6, 186)
172145449b1SDimitry Andric fpu_v7_arm64, // (ARM64_Q7, 187)
173145449b1SDimitry Andric fpu_v8_arm64, // (ARM64_Q8, 188)
174145449b1SDimitry Andric fpu_v9_arm64, // (ARM64_Q9, 189)
175145449b1SDimitry Andric fpu_v10_arm64, // (ARM64_Q10, 190)
176145449b1SDimitry Andric fpu_v11_arm64, // (ARM64_Q11, 191)
177145449b1SDimitry Andric fpu_v12_arm64, // (ARM64_Q12, 192)
178145449b1SDimitry Andric fpu_v13_arm64, // (ARM64_Q13, 193)
179145449b1SDimitry Andric fpu_v14_arm64, // (ARM64_Q14, 194)
180145449b1SDimitry Andric fpu_v15_arm64, // (ARM64_Q15, 195)
181145449b1SDimitry Andric fpu_v16_arm64, // (ARM64_Q16, 196)
182145449b1SDimitry Andric fpu_v17_arm64, // (ARM64_Q17, 197)
183145449b1SDimitry Andric fpu_v18_arm64, // (ARM64_Q18, 198)
184145449b1SDimitry Andric fpu_v19_arm64, // (ARM64_Q19, 199)
185145449b1SDimitry Andric fpu_v20_arm64, // (ARM64_Q20, 200)
186145449b1SDimitry Andric fpu_v21_arm64, // (ARM64_Q21, 201)
187145449b1SDimitry Andric fpu_v22_arm64, // (ARM64_Q22, 202)
188145449b1SDimitry Andric fpu_v23_arm64, // (ARM64_Q23, 203)
189145449b1SDimitry Andric fpu_v24_arm64, // (ARM64_Q24, 204)
190145449b1SDimitry Andric fpu_v25_arm64, // (ARM64_Q25, 205)
191145449b1SDimitry Andric fpu_v26_arm64, // (ARM64_Q26, 206)
192145449b1SDimitry Andric fpu_v27_arm64, // (ARM64_Q27, 207)
193145449b1SDimitry Andric fpu_v28_arm64, // (ARM64_Q28, 208)
194145449b1SDimitry Andric fpu_v29_arm64, // (ARM64_Q29, 209)
195145449b1SDimitry Andric fpu_v30_arm64, // (ARM64_Q30, 210)
196145449b1SDimitry Andric fpu_v31_arm64, // (ARM64_Q31, 211)
197145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
198145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
199145449b1SDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
200145449b1SDimitry Andric fpu_fpsr_arm64 // ARM64_FPSR, 220)
201145449b1SDimitry Andric };
202145449b1SDimitry Andric
2035f29bb8aSDimitry Andric static const uint32_t g_code_view_to_lldb_registers_x86[] = {
2045f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // NONE
2055f29bb8aSDimitry Andric lldb_al_i386, // AL
2065f29bb8aSDimitry Andric lldb_cl_i386, // CL
2075f29bb8aSDimitry Andric lldb_dl_i386, // DL
2085f29bb8aSDimitry Andric lldb_bl_i386, // BL
2095f29bb8aSDimitry Andric lldb_ah_i386, // AH
2105f29bb8aSDimitry Andric lldb_ch_i386, // CH
2115f29bb8aSDimitry Andric lldb_dh_i386, // DH
2125f29bb8aSDimitry Andric lldb_bh_i386, // BH
2135f29bb8aSDimitry Andric lldb_ax_i386, // AX
2145f29bb8aSDimitry Andric lldb_cx_i386, // CX
2155f29bb8aSDimitry Andric lldb_dx_i386, // DX
2165f29bb8aSDimitry Andric lldb_bx_i386, // BX
2175f29bb8aSDimitry Andric lldb_sp_i386, // SP
2185f29bb8aSDimitry Andric lldb_bp_i386, // BP
2195f29bb8aSDimitry Andric lldb_si_i386, // SI
2205f29bb8aSDimitry Andric lldb_di_i386, // DI
2215f29bb8aSDimitry Andric lldb_eax_i386, // EAX
2225f29bb8aSDimitry Andric lldb_ecx_i386, // ECX
2235f29bb8aSDimitry Andric lldb_edx_i386, // EDX
2245f29bb8aSDimitry Andric lldb_ebx_i386, // EBX
2255f29bb8aSDimitry Andric lldb_esp_i386, // ESP
2265f29bb8aSDimitry Andric lldb_ebp_i386, // EBP
2275f29bb8aSDimitry Andric lldb_esi_i386, // ESI
2285f29bb8aSDimitry Andric lldb_edi_i386, // EDI
2295f29bb8aSDimitry Andric lldb_es_i386, // ES
2305f29bb8aSDimitry Andric lldb_cs_i386, // CS
2315f29bb8aSDimitry Andric lldb_ss_i386, // SS
2325f29bb8aSDimitry Andric lldb_ds_i386, // DS
2335f29bb8aSDimitry Andric lldb_fs_i386, // FS
2345f29bb8aSDimitry Andric lldb_gs_i386, // GS
2355f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IP
2365f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FLAGS
2375f29bb8aSDimitry Andric lldb_eip_i386, // EIP
2385f29bb8aSDimitry Andric lldb_eflags_i386, // EFLAGS
2395f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2405f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2415f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TEMP
2425f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TEMPH
2435f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // QUOTE
2445f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR3
2455f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR4
2465f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR5
2475f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR6
2485f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR7
2495f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2505f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2515f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2525f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2535f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2545f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2555f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2565f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2575f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2585f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2595f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2605f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR0
2615f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR1
2625f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR2
2635f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR3
2645f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR4
2655f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2665f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2675f29bb8aSDimitry Andric lldb_dr0_i386, // DR0
2685f29bb8aSDimitry Andric lldb_dr1_i386, // DR1
2695f29bb8aSDimitry Andric lldb_dr2_i386, // DR2
2705f29bb8aSDimitry Andric lldb_dr3_i386, // DR3
2715f29bb8aSDimitry Andric lldb_dr4_i386, // DR4
2725f29bb8aSDimitry Andric lldb_dr5_i386, // DR5
2735f29bb8aSDimitry Andric lldb_dr6_i386, // DR6
2745f29bb8aSDimitry Andric lldb_dr7_i386, // DR7
2755f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2765f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2775f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2785f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2795f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // GDTR
2805f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // GDTL
2815f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IDTR
2825f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IDTL
2835f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // LDTR
2845f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TR
2855f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO1
2865f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO2
2875f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO3
2885f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO4
2895f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO5
2905f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO6
2915f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO7
2925f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO8
2935f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO9
2945f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
2955f29bb8aSDimitry Andric lldb_st0_i386, // ST0
2965f29bb8aSDimitry Andric lldb_st1_i386, // ST1
2975f29bb8aSDimitry Andric lldb_st2_i386, // ST2
2985f29bb8aSDimitry Andric lldb_st3_i386, // ST3
2995f29bb8aSDimitry Andric lldb_st4_i386, // ST4
3005f29bb8aSDimitry Andric lldb_st5_i386, // ST5
3015f29bb8aSDimitry Andric lldb_st6_i386, // ST6
3025f29bb8aSDimitry Andric lldb_st7_i386, // ST7
3035f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CTRL
3045f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // STAT
3055f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TAG
3065f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPIP
3075f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPCS
3085f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPDO
3095f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPDS
3105f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // ISEM
3115f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPEIP
3125f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPEDO
3135f29bb8aSDimitry Andric lldb_mm0_i386, // MM0
3145f29bb8aSDimitry Andric lldb_mm1_i386, // MM1
3155f29bb8aSDimitry Andric lldb_mm2_i386, // MM2
3165f29bb8aSDimitry Andric lldb_mm3_i386, // MM3
3175f29bb8aSDimitry Andric lldb_mm4_i386, // MM4
3185f29bb8aSDimitry Andric lldb_mm5_i386, // MM5
3195f29bb8aSDimitry Andric lldb_mm6_i386, // MM6
3205f29bb8aSDimitry Andric lldb_mm7_i386, // MM7
3215f29bb8aSDimitry Andric lldb_xmm0_i386, // XMM0
3225f29bb8aSDimitry Andric lldb_xmm1_i386, // XMM1
3235f29bb8aSDimitry Andric lldb_xmm2_i386, // XMM2
3245f29bb8aSDimitry Andric lldb_xmm3_i386, // XMM3
3255f29bb8aSDimitry Andric lldb_xmm4_i386, // XMM4
3265f29bb8aSDimitry Andric lldb_xmm5_i386, // XMM5
3275f29bb8aSDimitry Andric lldb_xmm6_i386, // XMM6
3285f29bb8aSDimitry Andric lldb_xmm7_i386 // XMM7
3295f29bb8aSDimitry Andric };
3305f29bb8aSDimitry Andric
3315f29bb8aSDimitry Andric static const uint32_t g_code_view_to_lldb_registers_x86_64[] = {
3325f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // NONE
3335f29bb8aSDimitry Andric lldb_al_x86_64, // AL
3345f29bb8aSDimitry Andric lldb_cl_x86_64, // CL
3355f29bb8aSDimitry Andric lldb_dl_x86_64, // DL
3365f29bb8aSDimitry Andric lldb_bl_x86_64, // BL
3375f29bb8aSDimitry Andric lldb_ah_x86_64, // AH
3385f29bb8aSDimitry Andric lldb_ch_x86_64, // CH
3395f29bb8aSDimitry Andric lldb_dh_x86_64, // DH
3405f29bb8aSDimitry Andric lldb_bh_x86_64, // BH
3415f29bb8aSDimitry Andric lldb_ax_x86_64, // AX
3425f29bb8aSDimitry Andric lldb_cx_x86_64, // CX
3435f29bb8aSDimitry Andric lldb_dx_x86_64, // DX
3445f29bb8aSDimitry Andric lldb_bx_x86_64, // BX
3455f29bb8aSDimitry Andric lldb_sp_x86_64, // SP
3465f29bb8aSDimitry Andric lldb_bp_x86_64, // BP
3475f29bb8aSDimitry Andric lldb_si_x86_64, // SI
3485f29bb8aSDimitry Andric lldb_di_x86_64, // DI
3495f29bb8aSDimitry Andric lldb_eax_x86_64, // EAX
3505f29bb8aSDimitry Andric lldb_ecx_x86_64, // ECX
3515f29bb8aSDimitry Andric lldb_edx_x86_64, // EDX
3525f29bb8aSDimitry Andric lldb_ebx_x86_64, // EBX
3535f29bb8aSDimitry Andric lldb_esp_x86_64, // ESP
3545f29bb8aSDimitry Andric lldb_ebp_x86_64, // EBP
3555f29bb8aSDimitry Andric lldb_esi_x86_64, // ESI
3565f29bb8aSDimitry Andric lldb_edi_x86_64, // EDI
3575f29bb8aSDimitry Andric lldb_es_x86_64, // ES
3585f29bb8aSDimitry Andric lldb_cs_x86_64, // CS
3595f29bb8aSDimitry Andric lldb_ss_x86_64, // SS
3605f29bb8aSDimitry Andric lldb_ds_x86_64, // DS
3615f29bb8aSDimitry Andric lldb_fs_x86_64, // FS
3625f29bb8aSDimitry Andric lldb_gs_x86_64, // GS
3635f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IP
3645f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FLAGS
3655f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EIP
3665f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EFLAGS
3675f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3685f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3695f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TEMP
3705f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TEMPH
3715f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // QUOTE
3725f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR3
3735f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR4
3745f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR5
3755f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR6
3765f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PCDR7
3775f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3785f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3795f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3805f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3815f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3825f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3835f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3845f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3855f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3865f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3875f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3885f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR0
3895f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR1
3905f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR2
3915f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR3
3925f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CR4
3935f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3945f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
3955f29bb8aSDimitry Andric lldb_dr0_x86_64, // DR0
3965f29bb8aSDimitry Andric lldb_dr1_x86_64, // DR1
3975f29bb8aSDimitry Andric lldb_dr2_x86_64, // DR2
3985f29bb8aSDimitry Andric lldb_dr3_x86_64, // DR3
3995f29bb8aSDimitry Andric lldb_dr4_x86_64, // DR4
4005f29bb8aSDimitry Andric lldb_dr5_x86_64, // DR5
4015f29bb8aSDimitry Andric lldb_dr6_x86_64, // DR6
4025f29bb8aSDimitry Andric lldb_dr7_x86_64, // DR7
4035f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4045f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4055f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4065f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4075f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // GDTR
4085f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // GDTL
4095f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IDTR
4105f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // IDTL
4115f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // LDTR
4125f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TR
4135f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO1
4145f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO2
4155f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO3
4165f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO4
4175f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO5
4185f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO6
4195f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO7
4205f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO8
4215f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // PSEUDO9
4225f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4235f29bb8aSDimitry Andric lldb_st0_x86_64, // ST0
4245f29bb8aSDimitry Andric lldb_st1_x86_64, // ST1
4255f29bb8aSDimitry Andric lldb_st2_x86_64, // ST2
4265f29bb8aSDimitry Andric lldb_st3_x86_64, // ST3
4275f29bb8aSDimitry Andric lldb_st4_x86_64, // ST4
4285f29bb8aSDimitry Andric lldb_st5_x86_64, // ST5
4295f29bb8aSDimitry Andric lldb_st6_x86_64, // ST6
4305f29bb8aSDimitry Andric lldb_st7_x86_64, // ST7
4315f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // CTRL
4325f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // STAT
4335f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // TAG
4345f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPIP
4355f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPCS
4365f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPDO
4375f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPDS
4385f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // ISEM
4395f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPEIP
4405f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // FPEDO
4415f29bb8aSDimitry Andric lldb_mm0_x86_64, // MM0
4425f29bb8aSDimitry Andric lldb_mm1_x86_64, // MM1
4435f29bb8aSDimitry Andric lldb_mm2_x86_64, // MM2
4445f29bb8aSDimitry Andric lldb_mm3_x86_64, // MM3
4455f29bb8aSDimitry Andric lldb_mm4_x86_64, // MM4
4465f29bb8aSDimitry Andric lldb_mm5_x86_64, // MM5
4475f29bb8aSDimitry Andric lldb_mm6_x86_64, // MM6
4485f29bb8aSDimitry Andric lldb_mm7_x86_64, // MM7
4495f29bb8aSDimitry Andric lldb_xmm0_x86_64, // XMM0
4505f29bb8aSDimitry Andric lldb_xmm1_x86_64, // XMM1
4515f29bb8aSDimitry Andric lldb_xmm2_x86_64, // XMM2
4525f29bb8aSDimitry Andric lldb_xmm3_x86_64, // XMM3
4535f29bb8aSDimitry Andric lldb_xmm4_x86_64, // XMM4
4545f29bb8aSDimitry Andric lldb_xmm5_x86_64, // XMM5
4555f29bb8aSDimitry Andric lldb_xmm6_x86_64, // XMM6
4565f29bb8aSDimitry Andric lldb_xmm7_x86_64, // XMM7
4575f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4585f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4595f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4605f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4615f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4625f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4635f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4645f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4655f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4665f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4675f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4685f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4695f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4705f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4715f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4725f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4735f29bb8aSDimitry Andric LLDB_INVALID_REGNUM,
4745f29bb8aSDimitry Andric lldb_mxcsr_x86_64, // MXCSR
4755f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EDXEAX
4765f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4775f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
4785f29bb8aSDimitry Andric LLDB_INVALID_REGNUM,
4795f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM0L
4805f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM1L
4815f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM2L
4825f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM3L
4835f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM4L
4845f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM5L
4855f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM6L
4865f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM7L
4875f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM0H
4885f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM1H
4895f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM2H
4905f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM3H
4915f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM4H
4925f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM5H
4935f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM6H
4945f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // EMM7H
4955f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM00
4965f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM01
4975f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM10
4985f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM11
4995f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM20
5005f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM21
5015f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM30
5025f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM31
5035f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM40
5045f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM41
5055f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM50
5065f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM51
5075f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM60
5085f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM61
5095f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM70
5105f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, // MM71
5115f29bb8aSDimitry Andric lldb_xmm8_x86_64, // XMM8
5125f29bb8aSDimitry Andric lldb_xmm9_x86_64, // XMM9
5135f29bb8aSDimitry Andric lldb_xmm10_x86_64, // XMM10
5145f29bb8aSDimitry Andric lldb_xmm11_x86_64, // XMM11
5155f29bb8aSDimitry Andric lldb_xmm12_x86_64, // XMM12
5165f29bb8aSDimitry Andric lldb_xmm13_x86_64, // XMM13
5175f29bb8aSDimitry Andric lldb_xmm14_x86_64, // XMM14
5185f29bb8aSDimitry Andric lldb_xmm15_x86_64, // XMM15
5195f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5205f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5215f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5225f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5235f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5245f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5255f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5265f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5275f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5285f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5295f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5305f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5315f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5325f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5335f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5345f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5355f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5365f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5375f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5385f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5395f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
5405f29bb8aSDimitry Andric LLDB_INVALID_REGNUM,
5415f29bb8aSDimitry Andric lldb_sil_x86_64, // SIL
5425f29bb8aSDimitry Andric lldb_dil_x86_64, // DIL
5435f29bb8aSDimitry Andric lldb_bpl_x86_64, // BPL
5445f29bb8aSDimitry Andric lldb_spl_x86_64, // SPL
5455f29bb8aSDimitry Andric lldb_rax_x86_64, // RAX
5465f29bb8aSDimitry Andric lldb_rbx_x86_64, // RBX
5475f29bb8aSDimitry Andric lldb_rcx_x86_64, // RCX
5485f29bb8aSDimitry Andric lldb_rdx_x86_64, // RDX
5495f29bb8aSDimitry Andric lldb_rsi_x86_64, // RSI
5505f29bb8aSDimitry Andric lldb_rdi_x86_64, // RDI
5515f29bb8aSDimitry Andric lldb_rbp_x86_64, // RBP
5525f29bb8aSDimitry Andric lldb_rsp_x86_64, // RSP
5535f29bb8aSDimitry Andric lldb_r8_x86_64, // R8
5545f29bb8aSDimitry Andric lldb_r9_x86_64, // R9
5555f29bb8aSDimitry Andric lldb_r10_x86_64, // R10
5565f29bb8aSDimitry Andric lldb_r11_x86_64, // R11
5575f29bb8aSDimitry Andric lldb_r12_x86_64, // R12
5585f29bb8aSDimitry Andric lldb_r13_x86_64, // R13
5595f29bb8aSDimitry Andric lldb_r14_x86_64, // R14
5605f29bb8aSDimitry Andric lldb_r15_x86_64, // R15
5615f29bb8aSDimitry Andric lldb_r8l_x86_64, // R8B
5625f29bb8aSDimitry Andric lldb_r9l_x86_64, // R9B
5635f29bb8aSDimitry Andric lldb_r10l_x86_64, // R10B
5645f29bb8aSDimitry Andric lldb_r11l_x86_64, // R11B
5655f29bb8aSDimitry Andric lldb_r12l_x86_64, // R12B
5665f29bb8aSDimitry Andric lldb_r13l_x86_64, // R13B
5675f29bb8aSDimitry Andric lldb_r14l_x86_64, // R14B
5685f29bb8aSDimitry Andric lldb_r15l_x86_64, // R15B
5695f29bb8aSDimitry Andric lldb_r8w_x86_64, // R8W
5705f29bb8aSDimitry Andric lldb_r9w_x86_64, // R9W
5715f29bb8aSDimitry Andric lldb_r10w_x86_64, // R10W
5725f29bb8aSDimitry Andric lldb_r11w_x86_64, // R11W
5735f29bb8aSDimitry Andric lldb_r12w_x86_64, // R12W
5745f29bb8aSDimitry Andric lldb_r13w_x86_64, // R13W
5755f29bb8aSDimitry Andric lldb_r14w_x86_64, // R14W
5765f29bb8aSDimitry Andric lldb_r15w_x86_64, // R15W
5775f29bb8aSDimitry Andric lldb_r8d_x86_64, // R8D
5785f29bb8aSDimitry Andric lldb_r9d_x86_64, // R9D
5795f29bb8aSDimitry Andric lldb_r10d_x86_64, // R10D
5805f29bb8aSDimitry Andric lldb_r11d_x86_64, // R11D
5815f29bb8aSDimitry Andric lldb_r12d_x86_64, // R12D
5825f29bb8aSDimitry Andric lldb_r13d_x86_64, // R13D
5835f29bb8aSDimitry Andric lldb_r14d_x86_64, // R14D
5845f29bb8aSDimitry Andric lldb_r15d_x86_64, // R15D
5855f29bb8aSDimitry Andric lldb_ymm0_x86_64, // AMD64_YMM0
5865f29bb8aSDimitry Andric lldb_ymm1_x86_64, // AMD64_YMM1
5875f29bb8aSDimitry Andric lldb_ymm2_x86_64, // AMD64_YMM2
5885f29bb8aSDimitry Andric lldb_ymm3_x86_64, // AMD64_YMM3
5895f29bb8aSDimitry Andric lldb_ymm4_x86_64, // AMD64_YMM4
5905f29bb8aSDimitry Andric lldb_ymm5_x86_64, // AMD64_YMM5
5915f29bb8aSDimitry Andric lldb_ymm6_x86_64, // AMD64_YMM6
5925f29bb8aSDimitry Andric lldb_ymm7_x86_64, // AMD64_YMM7
5935f29bb8aSDimitry Andric lldb_ymm8_x86_64, // AMD64_YMM8
5945f29bb8aSDimitry Andric lldb_ymm9_x86_64, // AMD64_YMM9
5955f29bb8aSDimitry Andric lldb_ymm10_x86_64, // AMD64_YMM10
5965f29bb8aSDimitry Andric lldb_ymm11_x86_64, // AMD64_YMM11
5975f29bb8aSDimitry Andric lldb_ymm12_x86_64, // AMD64_YMM12
5985f29bb8aSDimitry Andric lldb_ymm13_x86_64, // AMD64_YMM13
5995f29bb8aSDimitry Andric lldb_ymm14_x86_64, // AMD64_YMM14
6005f29bb8aSDimitry Andric lldb_ymm15_x86_64, // AMD64_YMM15
6015f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
6025f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
6035f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
6045f29bb8aSDimitry Andric LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
6055f29bb8aSDimitry Andric lldb_bnd0_x86_64, // BND0
6065f29bb8aSDimitry Andric lldb_bnd1_x86_64, // BND1
6075f29bb8aSDimitry Andric lldb_bnd2_x86_64 // BND2
6085f29bb8aSDimitry Andric };
6095f29bb8aSDimitry Andric
GetLLDBRegisterNumber(llvm::Triple::ArchType arch_type,llvm::codeview::RegisterId register_id)6105f29bb8aSDimitry Andric uint32_t lldb_private::npdb::GetLLDBRegisterNumber(
6115f29bb8aSDimitry Andric llvm::Triple::ArchType arch_type, llvm::codeview::RegisterId register_id) {
6125f29bb8aSDimitry Andric switch (arch_type) {
613145449b1SDimitry Andric case llvm::Triple::aarch64:
614145449b1SDimitry Andric if (static_cast<uint16_t>(register_id) <
615145449b1SDimitry Andric sizeof(g_code_view_to_lldb_registers_arm64) /
616145449b1SDimitry Andric sizeof(g_code_view_to_lldb_registers_arm64[0]))
617145449b1SDimitry Andric return g_code_view_to_lldb_registers_arm64[static_cast<uint16_t>(
618145449b1SDimitry Andric register_id)];
619145449b1SDimitry Andric
620145449b1SDimitry Andric return LLDB_INVALID_REGNUM;
6215f29bb8aSDimitry Andric case llvm::Triple::x86:
6225f29bb8aSDimitry Andric if (static_cast<uint16_t>(register_id) <
6235f29bb8aSDimitry Andric sizeof(g_code_view_to_lldb_registers_x86) /
6245f29bb8aSDimitry Andric sizeof(g_code_view_to_lldb_registers_x86[0]))
6255f29bb8aSDimitry Andric return g_code_view_to_lldb_registers_x86[static_cast<uint16_t>(
6265f29bb8aSDimitry Andric register_id)];
6275f29bb8aSDimitry Andric
6285f29bb8aSDimitry Andric switch (register_id) {
6295f29bb8aSDimitry Andric case llvm::codeview::RegisterId::MXCSR:
6305f29bb8aSDimitry Andric return lldb_mxcsr_i386;
6315f29bb8aSDimitry Andric case llvm::codeview::RegisterId::BND0:
6325f29bb8aSDimitry Andric return lldb_bnd0_i386;
6335f29bb8aSDimitry Andric case llvm::codeview::RegisterId::BND1:
6345f29bb8aSDimitry Andric return lldb_bnd1_i386;
6355f29bb8aSDimitry Andric case llvm::codeview::RegisterId::BND2:
6365f29bb8aSDimitry Andric return lldb_bnd2_i386;
6375f29bb8aSDimitry Andric default:
6385f29bb8aSDimitry Andric return LLDB_INVALID_REGNUM;
6395f29bb8aSDimitry Andric }
6405f29bb8aSDimitry Andric case llvm::Triple::x86_64:
6415f29bb8aSDimitry Andric if (static_cast<uint16_t>(register_id) <
6425f29bb8aSDimitry Andric sizeof(g_code_view_to_lldb_registers_x86_64) /
6435f29bb8aSDimitry Andric sizeof(g_code_view_to_lldb_registers_x86_64[0]))
6445f29bb8aSDimitry Andric return g_code_view_to_lldb_registers_x86_64[static_cast<uint16_t>(
6455f29bb8aSDimitry Andric register_id)];
6465f29bb8aSDimitry Andric
6475f29bb8aSDimitry Andric return LLDB_INVALID_REGNUM;
6485f29bb8aSDimitry Andric default:
6495f29bb8aSDimitry Andric return LLDB_INVALID_REGNUM;
6505f29bb8aSDimitry Andric }
6515f29bb8aSDimitry Andric }
652e3b55780SDimitry Andric
653e3b55780SDimitry Andric uint32_t
GetRegisterSize(llvm::codeview::RegisterId register_id)654e3b55780SDimitry Andric lldb_private::npdb::GetRegisterSize(llvm::codeview::RegisterId register_id) {
655e3b55780SDimitry Andric switch(register_id) {
656e3b55780SDimitry Andric case llvm::codeview::RegisterId::AL:
657e3b55780SDimitry Andric case llvm::codeview::RegisterId::BL:
658e3b55780SDimitry Andric case llvm::codeview::RegisterId::CL:
659e3b55780SDimitry Andric case llvm::codeview::RegisterId::DL:
660e3b55780SDimitry Andric case llvm::codeview::RegisterId::AH:
661e3b55780SDimitry Andric case llvm::codeview::RegisterId::BH:
662e3b55780SDimitry Andric case llvm::codeview::RegisterId::CH:
663e3b55780SDimitry Andric case llvm::codeview::RegisterId::DH:
664e3b55780SDimitry Andric case llvm::codeview::RegisterId::SIL:
665e3b55780SDimitry Andric case llvm::codeview::RegisterId::DIL:
666e3b55780SDimitry Andric case llvm::codeview::RegisterId::BPL:
667e3b55780SDimitry Andric case llvm::codeview::RegisterId::SPL:
668e3b55780SDimitry Andric case llvm::codeview::RegisterId::R8B:
669e3b55780SDimitry Andric case llvm::codeview::RegisterId::R9B:
670e3b55780SDimitry Andric case llvm::codeview::RegisterId::R10B:
671e3b55780SDimitry Andric case llvm::codeview::RegisterId::R11B:
672e3b55780SDimitry Andric case llvm::codeview::RegisterId::R12B:
673e3b55780SDimitry Andric case llvm::codeview::RegisterId::R13B:
674e3b55780SDimitry Andric case llvm::codeview::RegisterId::R14B:
675e3b55780SDimitry Andric case llvm::codeview::RegisterId::R15B:
676e3b55780SDimitry Andric return 1;
677e3b55780SDimitry Andric case llvm::codeview::RegisterId::AX:
678e3b55780SDimitry Andric case llvm::codeview::RegisterId::BX:
679e3b55780SDimitry Andric case llvm::codeview::RegisterId::CX:
680e3b55780SDimitry Andric case llvm::codeview::RegisterId::DX:
681e3b55780SDimitry Andric case llvm::codeview::RegisterId::SP:
682e3b55780SDimitry Andric case llvm::codeview::RegisterId::BP:
683e3b55780SDimitry Andric case llvm::codeview::RegisterId::SI:
684e3b55780SDimitry Andric case llvm::codeview::RegisterId::DI:
685e3b55780SDimitry Andric case llvm::codeview::RegisterId::R8W:
686e3b55780SDimitry Andric case llvm::codeview::RegisterId::R9W:
687e3b55780SDimitry Andric case llvm::codeview::RegisterId::R10W:
688e3b55780SDimitry Andric case llvm::codeview::RegisterId::R11W:
689e3b55780SDimitry Andric case llvm::codeview::RegisterId::R12W:
690e3b55780SDimitry Andric case llvm::codeview::RegisterId::R13W:
691e3b55780SDimitry Andric case llvm::codeview::RegisterId::R14W:
692e3b55780SDimitry Andric case llvm::codeview::RegisterId::R15W:
693e3b55780SDimitry Andric return 2;
694e3b55780SDimitry Andric case llvm::codeview::RegisterId::EAX:
695e3b55780SDimitry Andric case llvm::codeview::RegisterId::EBX:
696e3b55780SDimitry Andric case llvm::codeview::RegisterId::ECX:
697e3b55780SDimitry Andric case llvm::codeview::RegisterId::EDX:
698e3b55780SDimitry Andric case llvm::codeview::RegisterId::ESP:
699e3b55780SDimitry Andric case llvm::codeview::RegisterId::EBP:
700e3b55780SDimitry Andric case llvm::codeview::RegisterId::ESI:
701e3b55780SDimitry Andric case llvm::codeview::RegisterId::EDI:
702e3b55780SDimitry Andric case llvm::codeview::RegisterId::R8D:
703e3b55780SDimitry Andric case llvm::codeview::RegisterId::R9D:
704e3b55780SDimitry Andric case llvm::codeview::RegisterId::R10D:
705e3b55780SDimitry Andric case llvm::codeview::RegisterId::R11D:
706e3b55780SDimitry Andric case llvm::codeview::RegisterId::R12D:
707e3b55780SDimitry Andric case llvm::codeview::RegisterId::R13D:
708e3b55780SDimitry Andric case llvm::codeview::RegisterId::R14D:
709e3b55780SDimitry Andric case llvm::codeview::RegisterId::R15D:
710e3b55780SDimitry Andric return 4;
711e3b55780SDimitry Andric case llvm::codeview::RegisterId::RAX:
712e3b55780SDimitry Andric case llvm::codeview::RegisterId::RBX:
713e3b55780SDimitry Andric case llvm::codeview::RegisterId::RCX:
714e3b55780SDimitry Andric case llvm::codeview::RegisterId::RDX:
715e3b55780SDimitry Andric case llvm::codeview::RegisterId::RSI:
716e3b55780SDimitry Andric case llvm::codeview::RegisterId::RDI:
717e3b55780SDimitry Andric case llvm::codeview::RegisterId::RBP:
718e3b55780SDimitry Andric case llvm::codeview::RegisterId::RSP:
719e3b55780SDimitry Andric case llvm::codeview::RegisterId::R8:
720e3b55780SDimitry Andric case llvm::codeview::RegisterId::R9:
721e3b55780SDimitry Andric case llvm::codeview::RegisterId::R10:
722e3b55780SDimitry Andric case llvm::codeview::RegisterId::R11:
723e3b55780SDimitry Andric case llvm::codeview::RegisterId::R12:
724e3b55780SDimitry Andric case llvm::codeview::RegisterId::R13:
725e3b55780SDimitry Andric case llvm::codeview::RegisterId::R14:
726e3b55780SDimitry Andric case llvm::codeview::RegisterId::R15:
727e3b55780SDimitry Andric return 8;
728e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM0:
729e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM1:
730e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM2:
731e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM3:
732e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM4:
733e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM5:
734e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM6:
735e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM7:
736e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM8:
737e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM9:
738e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM10:
739e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM11:
740e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM12:
741e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM13:
742e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM14:
743e3b55780SDimitry Andric case llvm::codeview::RegisterId::XMM15:
744e3b55780SDimitry Andric return 16;
745e3b55780SDimitry Andric default:
746e3b55780SDimitry Andric return 0;
747e3b55780SDimitry Andric }
748e3b55780SDimitry Andric }
749