xref: /freebsd-src/contrib/llvm-project/lldb/source/Utility/RISCV_DWARF_Registers.h (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1bdd1243dSDimitry Andric //===-- RISCV_DWARF_Registers.h ---------------------------------*- C++ -*-===//
2bdd1243dSDimitry Andric //
3bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6bdd1243dSDimitry Andric //
7bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
8bdd1243dSDimitry Andric 
9bdd1243dSDimitry Andric #ifndef LLDB_SOURCE_UTILITY_RISCV_DWARF_REGISTERS_H
10bdd1243dSDimitry Andric #define LLDB_SOURCE_UTILITY_RISCV_DWARF_REGISTERS_H
11bdd1243dSDimitry Andric 
12bdd1243dSDimitry Andric #include "lldb/lldb-private.h"
13bdd1243dSDimitry Andric 
14bdd1243dSDimitry Andric namespace riscv_dwarf {
15bdd1243dSDimitry Andric 
16bdd1243dSDimitry Andric enum {
17bdd1243dSDimitry Andric   dwarf_gpr_x0 = 0,
18bdd1243dSDimitry Andric   dwarf_gpr_x1,
19bdd1243dSDimitry Andric   dwarf_gpr_x2,
20bdd1243dSDimitry Andric   dwarf_gpr_x3,
21bdd1243dSDimitry Andric   dwarf_gpr_x4,
22bdd1243dSDimitry Andric   dwarf_gpr_x5,
23bdd1243dSDimitry Andric   dwarf_gpr_x6,
24bdd1243dSDimitry Andric   dwarf_gpr_x7,
25bdd1243dSDimitry Andric   dwarf_gpr_x8,
26bdd1243dSDimitry Andric   dwarf_gpr_x9,
27bdd1243dSDimitry Andric   dwarf_gpr_x10,
28bdd1243dSDimitry Andric   dwarf_gpr_x11,
29bdd1243dSDimitry Andric   dwarf_gpr_x12,
30bdd1243dSDimitry Andric   dwarf_gpr_x13,
31bdd1243dSDimitry Andric   dwarf_gpr_x14,
32bdd1243dSDimitry Andric   dwarf_gpr_x15,
33bdd1243dSDimitry Andric   dwarf_gpr_x16,
34bdd1243dSDimitry Andric   dwarf_gpr_x17,
35bdd1243dSDimitry Andric   dwarf_gpr_x18,
36bdd1243dSDimitry Andric   dwarf_gpr_x19,
37bdd1243dSDimitry Andric   dwarf_gpr_x20,
38bdd1243dSDimitry Andric   dwarf_gpr_x21,
39bdd1243dSDimitry Andric   dwarf_gpr_x22,
40bdd1243dSDimitry Andric   dwarf_gpr_x23,
41bdd1243dSDimitry Andric   dwarf_gpr_x24,
42bdd1243dSDimitry Andric   dwarf_gpr_x25,
43bdd1243dSDimitry Andric   dwarf_gpr_x26,
44bdd1243dSDimitry Andric   dwarf_gpr_x27,
45bdd1243dSDimitry Andric   dwarf_gpr_x28,
46bdd1243dSDimitry Andric   dwarf_gpr_x29,
47bdd1243dSDimitry Andric   dwarf_gpr_x30,
48bdd1243dSDimitry Andric   dwarf_gpr_x31 = 31,
49bdd1243dSDimitry Andric 
50bdd1243dSDimitry Andric   dwarf_fpr_f0 = 32,
51bdd1243dSDimitry Andric   dwarf_fpr_f1,
52bdd1243dSDimitry Andric   dwarf_fpr_f2,
53bdd1243dSDimitry Andric   dwarf_fpr_f3,
54bdd1243dSDimitry Andric   dwarf_fpr_f4,
55bdd1243dSDimitry Andric   dwarf_fpr_f5,
56bdd1243dSDimitry Andric   dwarf_fpr_f6,
57bdd1243dSDimitry Andric   dwarf_fpr_f7,
58bdd1243dSDimitry Andric   dwarf_fpr_f8,
59bdd1243dSDimitry Andric   dwarf_fpr_f9,
60bdd1243dSDimitry Andric   dwarf_fpr_f10,
61bdd1243dSDimitry Andric   dwarf_fpr_f11,
62bdd1243dSDimitry Andric   dwarf_fpr_f12,
63bdd1243dSDimitry Andric   dwarf_fpr_f13,
64bdd1243dSDimitry Andric   dwarf_fpr_f14,
65bdd1243dSDimitry Andric   dwarf_fpr_f15,
66bdd1243dSDimitry Andric   dwarf_fpr_f16,
67bdd1243dSDimitry Andric   dwarf_fpr_f17,
68bdd1243dSDimitry Andric   dwarf_fpr_f18,
69bdd1243dSDimitry Andric   dwarf_fpr_f19,
70bdd1243dSDimitry Andric   dwarf_fpr_f20,
71bdd1243dSDimitry Andric   dwarf_fpr_f21,
72bdd1243dSDimitry Andric   dwarf_fpr_f22,
73bdd1243dSDimitry Andric   dwarf_fpr_f23,
74bdd1243dSDimitry Andric   dwarf_fpr_f24,
75bdd1243dSDimitry Andric   dwarf_fpr_f25,
76bdd1243dSDimitry Andric   dwarf_fpr_f26,
77bdd1243dSDimitry Andric   dwarf_fpr_f27,
78bdd1243dSDimitry Andric   dwarf_fpr_f28,
79bdd1243dSDimitry Andric   dwarf_fpr_f29,
80bdd1243dSDimitry Andric   dwarf_fpr_f30,
81bdd1243dSDimitry Andric   dwarf_fpr_f31 = 63,
82bdd1243dSDimitry Andric 
83bdd1243dSDimitry Andric   // alternate frame return column
84bdd1243dSDimitry Andric   dwarf_alt_fr_col = 64,
85bdd1243dSDimitry Andric 
86*06c3fb27SDimitry Andric   dwarf_vpr_v0 = 96,
87*06c3fb27SDimitry Andric   dwarf_vpr_v1,
88*06c3fb27SDimitry Andric   dwarf_vpr_v2,
89*06c3fb27SDimitry Andric   dwarf_vpr_v3,
90*06c3fb27SDimitry Andric   dwarf_vpr_v4,
91*06c3fb27SDimitry Andric   dwarf_vpr_v5,
92*06c3fb27SDimitry Andric   dwarf_vpr_v6,
93*06c3fb27SDimitry Andric   dwarf_vpr_v7,
94*06c3fb27SDimitry Andric   dwarf_vpr_v8,
95*06c3fb27SDimitry Andric   dwarf_vpr_v9,
96*06c3fb27SDimitry Andric   dwarf_vpr_v10,
97*06c3fb27SDimitry Andric   dwarf_vpr_v11,
98*06c3fb27SDimitry Andric   dwarf_vpr_v12,
99*06c3fb27SDimitry Andric   dwarf_vpr_v13,
100*06c3fb27SDimitry Andric   dwarf_vpr_v14,
101*06c3fb27SDimitry Andric   dwarf_vpr_v15,
102*06c3fb27SDimitry Andric   dwarf_vpr_v16,
103*06c3fb27SDimitry Andric   dwarf_vpr_v17,
104*06c3fb27SDimitry Andric   dwarf_vpr_v18,
105*06c3fb27SDimitry Andric   dwarf_vpr_v19,
106*06c3fb27SDimitry Andric   dwarf_vpr_v20,
107*06c3fb27SDimitry Andric   dwarf_vpr_v21,
108*06c3fb27SDimitry Andric   dwarf_vpr_v22,
109*06c3fb27SDimitry Andric   dwarf_vpr_v23,
110*06c3fb27SDimitry Andric   dwarf_vpr_v24,
111*06c3fb27SDimitry Andric   dwarf_vpr_v25,
112*06c3fb27SDimitry Andric   dwarf_vpr_v26,
113*06c3fb27SDimitry Andric   dwarf_vpr_v27,
114*06c3fb27SDimitry Andric   dwarf_vpr_v28,
115*06c3fb27SDimitry Andric   dwarf_vpr_v29,
116*06c3fb27SDimitry Andric   dwarf_vpr_v30,
117*06c3fb27SDimitry Andric   dwarf_vpr_v31 = 127,
118bdd1243dSDimitry Andric   dwarf_first_csr = 4096,
119bdd1243dSDimitry Andric   dwarf_fpr_fcsr = dwarf_first_csr + 0x003,
120*06c3fb27SDimitry Andric   // The vector extension adds seven unprivileged CSRs
121*06c3fb27SDimitry Andric   // (vstart, vxsat, vxrm, vcsr, vtype, vl, vlenb)
122*06c3fb27SDimitry Andric   // to a base scalar RISC-V ISA.
123*06c3fb27SDimitry Andric   dwarf_vpr_vstart = dwarf_first_csr + 0x008,
124*06c3fb27SDimitry Andric   dwarf_vpr_vxsat = dwarf_first_csr + 0x009,
125*06c3fb27SDimitry Andric   dwarf_vpr_vxrm = dwarf_first_csr + 0x00A,
126*06c3fb27SDimitry Andric   dwarf_vpr_vcsr = dwarf_first_csr + 0x00F,
127*06c3fb27SDimitry Andric   dwarf_vpr_vl = dwarf_first_csr + 0xC20,
128*06c3fb27SDimitry Andric   dwarf_vpr_vtype = dwarf_first_csr + 0xC21,
129*06c3fb27SDimitry Andric   dwarf_vpr_vlenb = dwarf_first_csr + 0xC22,
130bdd1243dSDimitry Andric   dwarf_last_csr = 8191,
131bdd1243dSDimitry Andric 
132bdd1243dSDimitry Andric   // register ABI name
133bdd1243dSDimitry Andric   dwarf_gpr_zero = dwarf_gpr_x0,
134bdd1243dSDimitry Andric   dwarf_gpr_ra = dwarf_gpr_x1,
135bdd1243dSDimitry Andric   dwarf_gpr_sp = dwarf_gpr_x2,
136bdd1243dSDimitry Andric   dwarf_gpr_gp = dwarf_gpr_x3,
137bdd1243dSDimitry Andric   dwarf_gpr_tp = dwarf_gpr_x4,
138bdd1243dSDimitry Andric   dwarf_gpr_t0 = dwarf_gpr_x5,
139bdd1243dSDimitry Andric   dwarf_gpr_t1 = dwarf_gpr_x6,
140bdd1243dSDimitry Andric   dwarf_gpr_t2 = dwarf_gpr_x7,
141bdd1243dSDimitry Andric   dwarf_gpr_fp = dwarf_gpr_x8,
142bdd1243dSDimitry Andric   dwarf_gpr_s1 = dwarf_gpr_x9,
143bdd1243dSDimitry Andric   dwarf_gpr_a0 = dwarf_gpr_x10,
144bdd1243dSDimitry Andric   dwarf_gpr_a1 = dwarf_gpr_x11,
145bdd1243dSDimitry Andric   dwarf_gpr_a2 = dwarf_gpr_x12,
146bdd1243dSDimitry Andric   dwarf_gpr_a3 = dwarf_gpr_x13,
147bdd1243dSDimitry Andric   dwarf_gpr_a4 = dwarf_gpr_x14,
148bdd1243dSDimitry Andric   dwarf_gpr_a5 = dwarf_gpr_x15,
149bdd1243dSDimitry Andric   dwarf_gpr_a6 = dwarf_gpr_x16,
150bdd1243dSDimitry Andric   dwarf_gpr_a7 = dwarf_gpr_x17,
151bdd1243dSDimitry Andric   dwarf_gpr_s2 = dwarf_gpr_x18,
152bdd1243dSDimitry Andric   dwarf_gpr_s3 = dwarf_gpr_x19,
153bdd1243dSDimitry Andric   dwarf_gpr_s4 = dwarf_gpr_x20,
154bdd1243dSDimitry Andric   dwarf_gpr_s5 = dwarf_gpr_x21,
155bdd1243dSDimitry Andric   dwarf_gpr_s6 = dwarf_gpr_x22,
156bdd1243dSDimitry Andric   dwarf_gpr_s7 = dwarf_gpr_x23,
157bdd1243dSDimitry Andric   dwarf_gpr_s8 = dwarf_gpr_x24,
158bdd1243dSDimitry Andric   dwarf_gpr_s9 = dwarf_gpr_x25,
159bdd1243dSDimitry Andric   dwarf_gpr_s10 = dwarf_gpr_x26,
160bdd1243dSDimitry Andric   dwarf_gpr_s11 = dwarf_gpr_x27,
161bdd1243dSDimitry Andric   dwarf_gpr_t3 = dwarf_gpr_x28,
162bdd1243dSDimitry Andric   dwarf_gpr_t4 = dwarf_gpr_x29,
163bdd1243dSDimitry Andric   dwarf_gpr_t5 = dwarf_gpr_x30,
164bdd1243dSDimitry Andric   dwarf_gpr_t6 = dwarf_gpr_x31,
165bdd1243dSDimitry Andric 
166bdd1243dSDimitry Andric   dwarf_fpr_ft0 = dwarf_fpr_f0,
167bdd1243dSDimitry Andric   dwarf_fpr_ft1 = dwarf_fpr_f1,
168bdd1243dSDimitry Andric   dwarf_fpr_ft2 = dwarf_fpr_f2,
169bdd1243dSDimitry Andric   dwarf_fpr_ft3 = dwarf_fpr_f3,
170bdd1243dSDimitry Andric   dwarf_fpr_ft4 = dwarf_fpr_f4,
171bdd1243dSDimitry Andric   dwarf_fpr_ft5 = dwarf_fpr_f5,
172bdd1243dSDimitry Andric   dwarf_fpr_ft6 = dwarf_fpr_f6,
173bdd1243dSDimitry Andric   dwarf_fpr_ft7 = dwarf_fpr_f7,
174bdd1243dSDimitry Andric   dwarf_fpr_fs0 = dwarf_fpr_f8,
175bdd1243dSDimitry Andric   dwarf_fpr_fs1 = dwarf_fpr_f9,
176bdd1243dSDimitry Andric   dwarf_fpr_fa0 = dwarf_fpr_f10,
177bdd1243dSDimitry Andric   dwarf_fpr_fa1 = dwarf_fpr_f11,
178bdd1243dSDimitry Andric   dwarf_fpr_fa2 = dwarf_fpr_f12,
179bdd1243dSDimitry Andric   dwarf_fpr_fa3 = dwarf_fpr_f13,
180bdd1243dSDimitry Andric   dwarf_fpr_fa4 = dwarf_fpr_f14,
181bdd1243dSDimitry Andric   dwarf_fpr_fa5 = dwarf_fpr_f15,
182bdd1243dSDimitry Andric   dwarf_fpr_fa6 = dwarf_fpr_f16,
183bdd1243dSDimitry Andric   dwarf_fpr_fa7 = dwarf_fpr_f17,
184bdd1243dSDimitry Andric   dwarf_fpr_fs2 = dwarf_fpr_f18,
185bdd1243dSDimitry Andric   dwarf_fpr_fs3 = dwarf_fpr_f19,
186bdd1243dSDimitry Andric   dwarf_fpr_fs4 = dwarf_fpr_f20,
187bdd1243dSDimitry Andric   dwarf_fpr_fs5 = dwarf_fpr_f21,
188bdd1243dSDimitry Andric   dwarf_fpr_fs6 = dwarf_fpr_f22,
189bdd1243dSDimitry Andric   dwarf_fpr_fs7 = dwarf_fpr_f23,
190bdd1243dSDimitry Andric   dwarf_fpr_fs8 = dwarf_fpr_f24,
191bdd1243dSDimitry Andric   dwarf_fpr_fs9 = dwarf_fpr_f25,
192bdd1243dSDimitry Andric   dwarf_fpr_fs10 = dwarf_fpr_f26,
193bdd1243dSDimitry Andric   dwarf_fpr_fs11 = dwarf_fpr_f27,
194bdd1243dSDimitry Andric   dwarf_fpr_ft8 = dwarf_fpr_f28,
195bdd1243dSDimitry Andric   dwarf_fpr_ft9 = dwarf_fpr_f29,
196bdd1243dSDimitry Andric   dwarf_fpr_ft10 = dwarf_fpr_f30,
197bdd1243dSDimitry Andric   dwarf_fpr_ft11 = dwarf_fpr_f31,
198bdd1243dSDimitry Andric 
199bdd1243dSDimitry Andric   // mock pc regnum
200bdd1243dSDimitry Andric   dwarf_gpr_pc = 11451,
201bdd1243dSDimitry Andric };
202bdd1243dSDimitry Andric 
203bdd1243dSDimitry Andric } // namespace riscv_dwarf
204bdd1243dSDimitry Andric 
205bdd1243dSDimitry Andric #endif // LLDB_SOURCE_UTILITY_RISCV_DWARF_REGISTERS_H
206