1//===-- LoongArch_DWARF_Registers.h -----------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_SOURCE_UTILITY_LOONGARCH_DWARF_REGISTERS_H
10#define LLDB_SOURCE_UTILITY_LOONGARCH_DWARF_REGISTERS_H
11
12#include "lldb/lldb-private.h"
13
14namespace loongarch_dwarf {
15
16enum {
17 dwarf_gpr_r0 = 0,
18 dwarf_gpr_r1,
19 dwarf_gpr_r2,
20 dwarf_gpr_r3,
21 dwarf_gpr_r4,
22 dwarf_gpr_r5,
23 dwarf_gpr_r6,
24 dwarf_gpr_r7,
25 dwarf_gpr_r8,
26 dwarf_gpr_r9,
27 dwarf_gpr_r10,
28 dwarf_gpr_r11,
29 dwarf_gpr_r12,
30 dwarf_gpr_r13,
31 dwarf_gpr_r14,
32 dwarf_gpr_r15,
33 dwarf_gpr_r16,
34 dwarf_gpr_r17,
35 dwarf_gpr_r18,
36 dwarf_gpr_r19,
37 dwarf_gpr_r20,
38 dwarf_gpr_r21,
39 dwarf_gpr_r22,
40 dwarf_gpr_r23,
41 dwarf_gpr_r24,
42 dwarf_gpr_r25,
43 dwarf_gpr_r26,
44 dwarf_gpr_r27,
45 dwarf_gpr_r28,
46 dwarf_gpr_r29,
47 dwarf_gpr_r30,
48 dwarf_gpr_r31 = 31,
49
50 dwarf_fpr_f0 = 32,
51 dwarf_fpr_f1,
52 dwarf_fpr_f2,
53 dwarf_fpr_f3,
54 dwarf_fpr_f4,
55 dwarf_fpr_f5,
56 dwarf_fpr_f6,
57 dwarf_fpr_f7,
58 dwarf_fpr_f8,
59 dwarf_fpr_f9,
60 dwarf_fpr_f10,
61 dwarf_fpr_f11,
62 dwarf_fpr_f12,
63 dwarf_fpr_f13,
64 dwarf_fpr_f14,
65 dwarf_fpr_f15,
66 dwarf_fpr_f16,
67 dwarf_fpr_f17,
68 dwarf_fpr_f18,
69 dwarf_fpr_f19,
70 dwarf_fpr_f20,
71 dwarf_fpr_f21,
72 dwarf_fpr_f22,
73 dwarf_fpr_f23,
74 dwarf_fpr_f24,
75 dwarf_fpr_f25,
76 dwarf_fpr_f26,
77 dwarf_fpr_f27,
78 dwarf_fpr_f28,
79 dwarf_fpr_f29,
80 dwarf_fpr_f30,
81 dwarf_fpr_f31 = 63,
82
83 dwarf_fpr_fcc0,
84 dwarf_fpr_fcc1,
85 dwarf_fpr_fcc2,
86 dwarf_fpr_fcc3,
87 dwarf_fpr_fcc4,
88 dwarf_fpr_fcc5,
89 dwarf_fpr_fcc6,
90 dwarf_fpr_fcc7,
91 dwarf_fpr_fcsr,
92
93 dwarf_lsx_vr0,
94 dwarf_lsx_vr1,
95 dwarf_lsx_vr2,
96 dwarf_lsx_vr3,
97 dwarf_lsx_vr4,
98 dwarf_lsx_vr5,
99 dwarf_lsx_vr6,
100 dwarf_lsx_vr7,
101 dwarf_lsx_vr8,
102 dwarf_lsx_vr9,
103 dwarf_lsx_vr10,
104 dwarf_lsx_vr11,
105 dwarf_lsx_vr12,
106 dwarf_lsx_vr13,
107 dwarf_lsx_vr14,
108 dwarf_lsx_vr15,
109 dwarf_lsx_vr16,
110 dwarf_lsx_vr17,
111 dwarf_lsx_vr18,
112 dwarf_lsx_vr19,
113 dwarf_lsx_vr20,
114 dwarf_lsx_vr21,
115 dwarf_lsx_vr22,
116 dwarf_lsx_vr23,
117 dwarf_lsx_vr24,
118 dwarf_lsx_vr25,
119 dwarf_lsx_vr26,
120 dwarf_lsx_vr27,
121 dwarf_lsx_vr28,
122 dwarf_lsx_vr29,
123 dwarf_lsx_vr30,
124 dwarf_lsx_vr31,
125
126 dwarf_lasx_xr0,
127 dwarf_lasx_xr1,
128 dwarf_lasx_xr2,
129 dwarf_lasx_xr3,
130 dwarf_lasx_xr4,
131 dwarf_lasx_xr5,
132 dwarf_lasx_xr6,
133 dwarf_lasx_xr7,
134 dwarf_lasx_xr8,
135 dwarf_lasx_xr9,
136 dwarf_lasx_xr10,
137 dwarf_lasx_xr11,
138 dwarf_lasx_xr12,
139 dwarf_lasx_xr13,
140 dwarf_lasx_xr14,
141 dwarf_lasx_xr15,
142 dwarf_lasx_xr16,
143 dwarf_lasx_xr17,
144 dwarf_lasx_xr18,
145 dwarf_lasx_xr19,
146 dwarf_lasx_xr20,
147 dwarf_lasx_xr21,
148 dwarf_lasx_xr22,
149 dwarf_lasx_xr23,
150 dwarf_lasx_xr24,
151 dwarf_lasx_xr25,
152 dwarf_lasx_xr26,
153 dwarf_lasx_xr27,
154 dwarf_lasx_xr28,
155 dwarf_lasx_xr29,
156 dwarf_lasx_xr30,
157 dwarf_lasx_xr31,
158
159 // register name alias
160 dwarf_gpr_zero = dwarf_gpr_r0,
161 dwarf_gpr_ra = dwarf_gpr_r1,
162 dwarf_gpr_tp = dwarf_gpr_r2,
163 dwarf_gpr_sp = dwarf_gpr_r3,
164 dwarf_gpr_a0 = dwarf_gpr_r4,
165 dwarf_gpr_a1 = dwarf_gpr_r5,
166 dwarf_gpr_a2 = dwarf_gpr_r6,
167 dwarf_gpr_a3 = dwarf_gpr_r7,
168 dwarf_gpr_a4 = dwarf_gpr_r8,
169 dwarf_gpr_a5 = dwarf_gpr_r9,
170 dwarf_gpr_a6 = dwarf_gpr_r10,
171 dwarf_gpr_a7 = dwarf_gpr_r11,
172 dwarf_gpr_t0 = dwarf_gpr_r12,
173 dwarf_gpr_t1 = dwarf_gpr_r13,
174 dwarf_gpr_t2 = dwarf_gpr_r14,
175 dwarf_gpr_t3 = dwarf_gpr_r15,
176 dwarf_gpr_t4 = dwarf_gpr_r16,
177 dwarf_gpr_t5 = dwarf_gpr_r17,
178 dwarf_gpr_t6 = dwarf_gpr_r18,
179 dwarf_gpr_t7 = dwarf_gpr_r19,
180 dwarf_gpr_t8 = dwarf_gpr_r20,
181 dwarf_gpr_fp = dwarf_gpr_r22,
182 dwarf_gpr_s0 = dwarf_gpr_r23,
183 dwarf_gpr_s1 = dwarf_gpr_r24,
184 dwarf_gpr_s2 = dwarf_gpr_r25,
185 dwarf_gpr_s3 = dwarf_gpr_r26,
186 dwarf_gpr_s4 = dwarf_gpr_r27,
187 dwarf_gpr_s5 = dwarf_gpr_r28,
188 dwarf_gpr_s6 = dwarf_gpr_r29,
189 dwarf_gpr_s7 = dwarf_gpr_r30,
190 dwarf_gpr_s8 = dwarf_gpr_r31,
191
192 dwarf_fpr_fa0 = dwarf_fpr_f0,
193 dwarf_fpr_fa1 = dwarf_fpr_f1,
194 dwarf_fpr_fa2 = dwarf_fpr_f2,
195 dwarf_fpr_fa3 = dwarf_fpr_f3,
196 dwarf_fpr_fa4 = dwarf_fpr_f4,
197 dwarf_fpr_fa5 = dwarf_fpr_f5,
198 dwarf_fpr_fa6 = dwarf_fpr_f6,
199 dwarf_fpr_fa7 = dwarf_fpr_f7,
200 dwarf_fpr_ft0 = dwarf_fpr_f8,
201 dwarf_fpr_ft1 = dwarf_fpr_f9,
202 dwarf_fpr_ft2 = dwarf_fpr_f10,
203 dwarf_fpr_ft3 = dwarf_fpr_f11,
204 dwarf_fpr_ft4 = dwarf_fpr_f12,
205 dwarf_fpr_ft5 = dwarf_fpr_f13,
206 dwarf_fpr_ft6 = dwarf_fpr_f14,
207 dwarf_fpr_ft7 = dwarf_fpr_f15,
208 dwarf_fpr_ft8 = dwarf_fpr_f16,
209 dwarf_fpr_ft9 = dwarf_fpr_f17,
210 dwarf_fpr_ft10 = dwarf_fpr_f18,
211 dwarf_fpr_ft11 = dwarf_fpr_f19,
212 dwarf_fpr_ft12 = dwarf_fpr_f20,
213 dwarf_fpr_ft13 = dwarf_fpr_f21,
214 dwarf_fpr_ft14 = dwarf_fpr_f22,
215 dwarf_fpr_ft15 = dwarf_fpr_f23,
216 dwarf_fpr_fs0 = dwarf_fpr_f24,
217 dwarf_fpr_fs1 = dwarf_fpr_f25,
218 dwarf_fpr_fs2 = dwarf_fpr_f26,
219 dwarf_fpr_fs3 = dwarf_fpr_f27,
220 dwarf_fpr_fs4 = dwarf_fpr_f28,
221 dwarf_fpr_fs5 = dwarf_fpr_f29,
222 dwarf_fpr_fs6 = dwarf_fpr_f30,
223 dwarf_fpr_fs7 = dwarf_fpr_f31,
224
225 // mock pc regnum
226 dwarf_gpr_pc = 57005,
227
228 // fake registers are only used to define `RegisterInfo`
229 dwarf_gpr_orig_a0,
230 dwarf_gpr_badv,
231 dwarf_gpr_reserved0,
232 dwarf_gpr_reserved1,
233 dwarf_gpr_reserved2,
234 dwarf_gpr_reserved3,
235 dwarf_gpr_reserved4,
236 dwarf_gpr_reserved5,
237 dwarf_gpr_reserved6,
238 dwarf_gpr_reserved7,
239 dwarf_gpr_reserved8,
240 dwarf_gpr_reserved9,
241};
242
243} // namespace loongarch_dwarf
244
245#endif // LLDB_SOURCE_UTILITY_LOONGARCH_DWARF_REGISTERS_H
246

source code of lldb/source/Utility/LoongArch_DWARF_Registers.h