LLDB mainline
RegisterInfos_ppc64.h
Go to the documentation of this file.
1//===-- RegisterInfos_ppc64.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#ifdef DECLARE_REGISTER_INFOS_PPC64_STRUCT
10
11#include <cstddef>
12
13// Computes the offset of the given GPR_PPC64 in the user data area.
14#define GPR_PPC64_OFFSET(regname) (offsetof(GPR_PPC64, regname))
15#define FPR_PPC64_OFFSET(regname) \
16 (offsetof(FPR_PPC64, regname) + sizeof(GPR_PPC64))
17#define VMX_PPC64_OFFSET(regname) \
18 (offsetof(VMX_PPC64, regname) + sizeof(GPR_PPC64) + sizeof(FPR_PPC64))
19#define VSX_PPC64_OFFSET(regname) \
20 (offsetof(VSX_PPC64, regname) + sizeof(GPR_PPC64) + sizeof(FPR_PPC64) + \
21 sizeof(VMX_PPC64))
22#define GPR_PPC64_SIZE(regname) (sizeof(((GPR_PPC64 *)NULL)->regname))
23
26
27// Note that the size and offset will be updated by platform-specific classes.
28#define DEFINE_GPR_PPC64(reg, alt, lldb_kind) \
29 { \
30 #reg, \
31 alt, \
32 GPR_PPC64_SIZE(reg), \
33 GPR_PPC64_OFFSET(reg), \
34 lldb::eEncodingUint, \
35 lldb::eFormatHex, \
36 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
37 lldb_kind, LLDB_INVALID_REGNUM, gpr_##reg##_ppc64}, \
38 NULL, \
39 NULL, \
40 NULL, \
41 }
42#define DEFINE_FPR_PPC64(reg, alt, lldb_kind) \
43 { \
44 #reg, \
45 alt, \
46 8, \
47 FPR_PPC64_OFFSET(reg), \
48 lldb::eEncodingIEEE754, \
49 lldb::eFormatFloat, \
50 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
51 lldb_kind, LLDB_INVALID_REGNUM, fpr_##reg##_ppc64}, \
52 NULL, \
53 NULL, \
54 NULL, \
55 }
56#define DEFINE_VMX_PPC64(reg, lldb_kind) \
57 { \
58 #reg, \
59 NULL, \
60 16, \
61 VMX_PPC64_OFFSET(reg), \
62 lldb::eEncodingVector, \
63 lldb::eFormatVectorOfUInt32, \
64 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
65 lldb_kind, LLDB_INVALID_REGNUM, vmx_##reg##_ppc64}, \
66 NULL, \
67 NULL, \
68 NULL, \
69 }
70
71#define DEFINE_VSX_PPC64(reg, lldb_kind) \
72 { \
73 #reg, \
74 NULL, \
75 16, \
76 VSX_PPC64_OFFSET(reg), \
77 lldb::eEncodingVector, \
78 lldb::eFormatVectorOfUInt32, \
79 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
80 lldb_kind, LLDB_INVALID_REGNUM, vsx_##reg##_ppc64}, \
81 NULL, \
82 NULL, \
83 NULL, \
84 }
85
86// General purpose registers.
87// EH_Frame, Generic, Process Plugin
88#define PPC64_REGS \
89 DEFINE_GPR_PPC64(r0, NULL, LLDB_INVALID_REGNUM) \
90 , DEFINE_GPR_PPC64(r1, NULL, LLDB_REGNUM_GENERIC_SP), \
91 DEFINE_GPR_PPC64(r2, NULL, LLDB_INVALID_REGNUM), \
92 DEFINE_GPR_PPC64(r3, NULL, LLDB_REGNUM_GENERIC_ARG1), \
93 DEFINE_GPR_PPC64(r4, NULL, LLDB_REGNUM_GENERIC_ARG2), \
94 DEFINE_GPR_PPC64(r5, NULL, LLDB_REGNUM_GENERIC_ARG3), \
95 DEFINE_GPR_PPC64(r6, NULL, LLDB_REGNUM_GENERIC_ARG4), \
96 DEFINE_GPR_PPC64(r7, NULL, LLDB_REGNUM_GENERIC_ARG5), \
97 DEFINE_GPR_PPC64(r8, NULL, LLDB_REGNUM_GENERIC_ARG6), \
98 DEFINE_GPR_PPC64(r9, NULL, LLDB_REGNUM_GENERIC_ARG7), \
99 DEFINE_GPR_PPC64(r10, NULL, LLDB_REGNUM_GENERIC_ARG8), \
100 DEFINE_GPR_PPC64(r11, NULL, LLDB_INVALID_REGNUM), \
101 DEFINE_GPR_PPC64(r12, NULL, LLDB_INVALID_REGNUM), \
102 DEFINE_GPR_PPC64(r13, NULL, LLDB_INVALID_REGNUM), \
103 DEFINE_GPR_PPC64(r14, NULL, LLDB_INVALID_REGNUM), \
104 DEFINE_GPR_PPC64(r15, NULL, LLDB_INVALID_REGNUM), \
105 DEFINE_GPR_PPC64(r16, NULL, LLDB_INVALID_REGNUM), \
106 DEFINE_GPR_PPC64(r17, NULL, LLDB_INVALID_REGNUM), \
107 DEFINE_GPR_PPC64(r18, NULL, LLDB_INVALID_REGNUM), \
108 DEFINE_GPR_PPC64(r19, NULL, LLDB_INVALID_REGNUM), \
109 DEFINE_GPR_PPC64(r20, NULL, LLDB_INVALID_REGNUM), \
110 DEFINE_GPR_PPC64(r21, NULL, LLDB_INVALID_REGNUM), \
111 DEFINE_GPR_PPC64(r22, NULL, LLDB_INVALID_REGNUM), \
112 DEFINE_GPR_PPC64(r23, NULL, LLDB_INVALID_REGNUM), \
113 DEFINE_GPR_PPC64(r24, NULL, LLDB_INVALID_REGNUM), \
114 DEFINE_GPR_PPC64(r25, NULL, LLDB_INVALID_REGNUM), \
115 DEFINE_GPR_PPC64(r26, NULL, LLDB_INVALID_REGNUM), \
116 DEFINE_GPR_PPC64(r27, NULL, LLDB_INVALID_REGNUM), \
117 DEFINE_GPR_PPC64(r28, NULL, LLDB_INVALID_REGNUM), \
118 DEFINE_GPR_PPC64(r29, NULL, LLDB_INVALID_REGNUM), \
119 DEFINE_GPR_PPC64(r30, NULL, LLDB_INVALID_REGNUM), \
120 DEFINE_GPR_PPC64(r31, NULL, LLDB_INVALID_REGNUM), \
121 DEFINE_GPR_PPC64(cr, NULL, LLDB_REGNUM_GENERIC_FLAGS), \
122 DEFINE_GPR_PPC64(msr, NULL, LLDB_INVALID_REGNUM), \
123 DEFINE_GPR_PPC64(xer, NULL, LLDB_INVALID_REGNUM), \
124 DEFINE_GPR_PPC64(lr, NULL, LLDB_REGNUM_GENERIC_RA), \
125 DEFINE_GPR_PPC64(ctr, NULL, LLDB_INVALID_REGNUM), \
126 DEFINE_GPR_PPC64(pc, NULL, LLDB_REGNUM_GENERIC_PC), \
127 DEFINE_FPR_PPC64(f0, NULL, LLDB_INVALID_REGNUM), \
128 DEFINE_FPR_PPC64(f1, NULL, LLDB_INVALID_REGNUM), \
129 DEFINE_FPR_PPC64(f2, NULL, LLDB_INVALID_REGNUM), \
130 DEFINE_FPR_PPC64(f3, NULL, LLDB_INVALID_REGNUM), \
131 DEFINE_FPR_PPC64(f4, NULL, LLDB_INVALID_REGNUM), \
132 DEFINE_FPR_PPC64(f5, NULL, LLDB_INVALID_REGNUM), \
133 DEFINE_FPR_PPC64(f6, NULL, LLDB_INVALID_REGNUM), \
134 DEFINE_FPR_PPC64(f7, NULL, LLDB_INVALID_REGNUM), \
135 DEFINE_FPR_PPC64(f8, NULL, LLDB_INVALID_REGNUM), \
136 DEFINE_FPR_PPC64(f9, NULL, LLDB_INVALID_REGNUM), \
137 DEFINE_FPR_PPC64(f10, NULL, LLDB_INVALID_REGNUM), \
138 DEFINE_FPR_PPC64(f11, NULL, LLDB_INVALID_REGNUM), \
139 DEFINE_FPR_PPC64(f12, NULL, LLDB_INVALID_REGNUM), \
140 DEFINE_FPR_PPC64(f13, NULL, LLDB_INVALID_REGNUM), \
141 DEFINE_FPR_PPC64(f14, NULL, LLDB_INVALID_REGNUM), \
142 DEFINE_FPR_PPC64(f15, NULL, LLDB_INVALID_REGNUM), \
143 DEFINE_FPR_PPC64(f16, NULL, LLDB_INVALID_REGNUM), \
144 DEFINE_FPR_PPC64(f17, NULL, LLDB_INVALID_REGNUM), \
145 DEFINE_FPR_PPC64(f18, NULL, LLDB_INVALID_REGNUM), \
146 DEFINE_FPR_PPC64(f19, NULL, LLDB_INVALID_REGNUM), \
147 DEFINE_FPR_PPC64(f20, NULL, LLDB_INVALID_REGNUM), \
148 DEFINE_FPR_PPC64(f21, NULL, LLDB_INVALID_REGNUM), \
149 DEFINE_FPR_PPC64(f22, NULL, LLDB_INVALID_REGNUM), \
150 DEFINE_FPR_PPC64(f23, NULL, LLDB_INVALID_REGNUM), \
151 DEFINE_FPR_PPC64(f24, NULL, LLDB_INVALID_REGNUM), \
152 DEFINE_FPR_PPC64(f25, NULL, LLDB_INVALID_REGNUM), \
153 DEFINE_FPR_PPC64(f26, NULL, LLDB_INVALID_REGNUM), \
154 DEFINE_FPR_PPC64(f27, NULL, LLDB_INVALID_REGNUM), \
155 DEFINE_FPR_PPC64(f28, NULL, LLDB_INVALID_REGNUM), \
156 DEFINE_FPR_PPC64(f29, NULL, LLDB_INVALID_REGNUM), \
157 DEFINE_FPR_PPC64(f30, NULL, LLDB_INVALID_REGNUM), \
158 DEFINE_FPR_PPC64(f31, NULL, LLDB_INVALID_REGNUM), \
159 { \
160 "fpscr", \
161 NULL, \
162 8, \
163 FPR_PPC64_OFFSET(fpscr), \
164 lldb::eEncodingUint, \
165 lldb::eFormatHex, \
166 {ppc64_dwarf::dwarf_fpscr_ppc64, ppc64_dwarf::dwarf_fpscr_ppc64, \
167 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpr_fpscr_ppc64}, \
168 NULL, \
169 NULL, \
170 NULL, \
171 }, \
172 DEFINE_VMX_PPC64(vr0, LLDB_INVALID_REGNUM), \
173 DEFINE_VMX_PPC64(vr1, LLDB_INVALID_REGNUM), \
174 DEFINE_VMX_PPC64(vr2, LLDB_INVALID_REGNUM), \
175 DEFINE_VMX_PPC64(vr3, LLDB_INVALID_REGNUM), \
176 DEFINE_VMX_PPC64(vr4, LLDB_INVALID_REGNUM), \
177 DEFINE_VMX_PPC64(vr5, LLDB_INVALID_REGNUM), \
178 DEFINE_VMX_PPC64(vr6, LLDB_INVALID_REGNUM), \
179 DEFINE_VMX_PPC64(vr7, LLDB_INVALID_REGNUM), \
180 DEFINE_VMX_PPC64(vr8, LLDB_INVALID_REGNUM), \
181 DEFINE_VMX_PPC64(vr9, LLDB_INVALID_REGNUM), \
182 DEFINE_VMX_PPC64(vr10, LLDB_INVALID_REGNUM), \
183 DEFINE_VMX_PPC64(vr11, LLDB_INVALID_REGNUM), \
184 DEFINE_VMX_PPC64(vr12, LLDB_INVALID_REGNUM), \
185 DEFINE_VMX_PPC64(vr13, LLDB_INVALID_REGNUM), \
186 DEFINE_VMX_PPC64(vr14, LLDB_INVALID_REGNUM), \
187 DEFINE_VMX_PPC64(vr15, LLDB_INVALID_REGNUM), \
188 DEFINE_VMX_PPC64(vr16, LLDB_INVALID_REGNUM), \
189 DEFINE_VMX_PPC64(vr17, LLDB_INVALID_REGNUM), \
190 DEFINE_VMX_PPC64(vr18, LLDB_INVALID_REGNUM), \
191 DEFINE_VMX_PPC64(vr19, LLDB_INVALID_REGNUM), \
192 DEFINE_VMX_PPC64(vr20, LLDB_INVALID_REGNUM), \
193 DEFINE_VMX_PPC64(vr21, LLDB_INVALID_REGNUM), \
194 DEFINE_VMX_PPC64(vr22, LLDB_INVALID_REGNUM), \
195 DEFINE_VMX_PPC64(vr23, LLDB_INVALID_REGNUM), \
196 DEFINE_VMX_PPC64(vr24, LLDB_INVALID_REGNUM), \
197 DEFINE_VMX_PPC64(vr25, LLDB_INVALID_REGNUM), \
198 DEFINE_VMX_PPC64(vr26, LLDB_INVALID_REGNUM), \
199 DEFINE_VMX_PPC64(vr27, LLDB_INVALID_REGNUM), \
200 DEFINE_VMX_PPC64(vr28, LLDB_INVALID_REGNUM), \
201 DEFINE_VMX_PPC64(vr29, LLDB_INVALID_REGNUM), \
202 DEFINE_VMX_PPC64(vr30, LLDB_INVALID_REGNUM), \
203 DEFINE_VMX_PPC64(vr31, LLDB_INVALID_REGNUM), \
204 { \
205 "vscr", \
206 NULL, \
207 4, \
208 VMX_PPC64_OFFSET(vscr), \
209 lldb::eEncodingUint, \
210 lldb::eFormatHex, \
211 {ppc64_dwarf::dwarf_vscr_ppc64, ppc64_dwarf::dwarf_vscr_ppc64, \
212 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, vmx_vscr_ppc64}, \
213 NULL, \
214 NULL, \
215 NULL, \
216 }, \
217 { \
218 "vrsave", \
219 NULL, \
220 4, \
221 VMX_PPC64_OFFSET(vrsave), \
222 lldb::eEncodingUint, \
223 lldb::eFormatHex, \
224 {ppc64_dwarf::dwarf_vrsave_ppc64, ppc64_dwarf::dwarf_vrsave_ppc64, \
225 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, vmx_vrsave_ppc64}, \
226 NULL, \
227 NULL, \
228 NULL, \
229 }, \
230 DEFINE_VSX_PPC64(vs0, LLDB_INVALID_REGNUM), \
231 DEFINE_VSX_PPC64(vs1, LLDB_INVALID_REGNUM), \
232 DEFINE_VSX_PPC64(vs2, LLDB_INVALID_REGNUM), \
233 DEFINE_VSX_PPC64(vs3, LLDB_INVALID_REGNUM), \
234 DEFINE_VSX_PPC64(vs4, LLDB_INVALID_REGNUM), \
235 DEFINE_VSX_PPC64(vs5, LLDB_INVALID_REGNUM), \
236 DEFINE_VSX_PPC64(vs6, LLDB_INVALID_REGNUM), \
237 DEFINE_VSX_PPC64(vs7, LLDB_INVALID_REGNUM), \
238 DEFINE_VSX_PPC64(vs8, LLDB_INVALID_REGNUM), \
239 DEFINE_VSX_PPC64(vs9, LLDB_INVALID_REGNUM), \
240 DEFINE_VSX_PPC64(vs10, LLDB_INVALID_REGNUM), \
241 DEFINE_VSX_PPC64(vs11, LLDB_INVALID_REGNUM), \
242 DEFINE_VSX_PPC64(vs12, LLDB_INVALID_REGNUM), \
243 DEFINE_VSX_PPC64(vs13, LLDB_INVALID_REGNUM), \
244 DEFINE_VSX_PPC64(vs14, LLDB_INVALID_REGNUM), \
245 DEFINE_VSX_PPC64(vs15, LLDB_INVALID_REGNUM), \
246 DEFINE_VSX_PPC64(vs16, LLDB_INVALID_REGNUM), \
247 DEFINE_VSX_PPC64(vs17, LLDB_INVALID_REGNUM), \
248 DEFINE_VSX_PPC64(vs18, LLDB_INVALID_REGNUM), \
249 DEFINE_VSX_PPC64(vs19, LLDB_INVALID_REGNUM), \
250 DEFINE_VSX_PPC64(vs20, LLDB_INVALID_REGNUM), \
251 DEFINE_VSX_PPC64(vs21, LLDB_INVALID_REGNUM), \
252 DEFINE_VSX_PPC64(vs22, LLDB_INVALID_REGNUM), \
253 DEFINE_VSX_PPC64(vs23, LLDB_INVALID_REGNUM), \
254 DEFINE_VSX_PPC64(vs24, LLDB_INVALID_REGNUM), \
255 DEFINE_VSX_PPC64(vs25, LLDB_INVALID_REGNUM), \
256 DEFINE_VSX_PPC64(vs26, LLDB_INVALID_REGNUM), \
257 DEFINE_VSX_PPC64(vs27, LLDB_INVALID_REGNUM), \
258 DEFINE_VSX_PPC64(vs28, LLDB_INVALID_REGNUM), \
259 DEFINE_VSX_PPC64(vs29, LLDB_INVALID_REGNUM), \
260 DEFINE_VSX_PPC64(vs30, LLDB_INVALID_REGNUM), \
261 DEFINE_VSX_PPC64(vs31, LLDB_INVALID_REGNUM), \
262 DEFINE_VSX_PPC64(vs32, LLDB_INVALID_REGNUM), \
263 DEFINE_VSX_PPC64(vs33, LLDB_INVALID_REGNUM), \
264 DEFINE_VSX_PPC64(vs34, LLDB_INVALID_REGNUM), \
265 DEFINE_VSX_PPC64(vs35, LLDB_INVALID_REGNUM), \
266 DEFINE_VSX_PPC64(vs36, LLDB_INVALID_REGNUM), \
267 DEFINE_VSX_PPC64(vs37, LLDB_INVALID_REGNUM), \
268 DEFINE_VSX_PPC64(vs38, LLDB_INVALID_REGNUM), \
269 DEFINE_VSX_PPC64(vs39, LLDB_INVALID_REGNUM), \
270 DEFINE_VSX_PPC64(vs40, LLDB_INVALID_REGNUM), \
271 DEFINE_VSX_PPC64(vs41, LLDB_INVALID_REGNUM), \
272 DEFINE_VSX_PPC64(vs42, LLDB_INVALID_REGNUM), \
273 DEFINE_VSX_PPC64(vs43, LLDB_INVALID_REGNUM), \
274 DEFINE_VSX_PPC64(vs44, LLDB_INVALID_REGNUM), \
275 DEFINE_VSX_PPC64(vs45, LLDB_INVALID_REGNUM), \
276 DEFINE_VSX_PPC64(vs46, LLDB_INVALID_REGNUM), \
277 DEFINE_VSX_PPC64(vs47, LLDB_INVALID_REGNUM), \
278 DEFINE_VSX_PPC64(vs48, LLDB_INVALID_REGNUM), \
279 DEFINE_VSX_PPC64(vs49, LLDB_INVALID_REGNUM), \
280 DEFINE_VSX_PPC64(vs50, LLDB_INVALID_REGNUM), \
281 DEFINE_VSX_PPC64(vs51, LLDB_INVALID_REGNUM), \
282 DEFINE_VSX_PPC64(vs52, LLDB_INVALID_REGNUM), \
283 DEFINE_VSX_PPC64(vs53, LLDB_INVALID_REGNUM), \
284 DEFINE_VSX_PPC64(vs54, LLDB_INVALID_REGNUM), \
285 DEFINE_VSX_PPC64(vs55, LLDB_INVALID_REGNUM), \
286 DEFINE_VSX_PPC64(vs56, LLDB_INVALID_REGNUM), \
287 DEFINE_VSX_PPC64(vs57, LLDB_INVALID_REGNUM), \
288 DEFINE_VSX_PPC64(vs58, LLDB_INVALID_REGNUM), \
289 DEFINE_VSX_PPC64(vs59, LLDB_INVALID_REGNUM), \
290 DEFINE_VSX_PPC64(vs60, LLDB_INVALID_REGNUM), \
291 DEFINE_VSX_PPC64(vs61, LLDB_INVALID_REGNUM), \
292 DEFINE_VSX_PPC64(vs62, LLDB_INVALID_REGNUM), \
293 DEFINE_VSX_PPC64(vs63, LLDB_INVALID_REGNUM), /* */
294
295typedef struct _GPR_PPC64 {
296 uint64_t r0;
297 uint64_t r1;
298 uint64_t r2;
299 uint64_t r3;
300 uint64_t r4;
301 uint64_t r5;
302 uint64_t r6;
303 uint64_t r7;
304 uint64_t r8;
305 uint64_t r9;
306 uint64_t r10;
307 uint64_t r11;
308 uint64_t r12;
309 uint64_t r13;
310 uint64_t r14;
311 uint64_t r15;
312 uint64_t r16;
313 uint64_t r17;
314 uint64_t r18;
315 uint64_t r19;
316 uint64_t r20;
317 uint64_t r21;
318 uint64_t r22;
319 uint64_t r23;
320 uint64_t r24;
321 uint64_t r25;
322 uint64_t r26;
323 uint64_t r27;
324 uint64_t r28;
325 uint64_t r29;
326 uint64_t r30;
327 uint64_t r31;
328 uint64_t cr;
329 uint64_t msr;
330 uint64_t xer;
331 uint64_t lr;
332 uint64_t ctr;
333 uint64_t pc;
334 uint64_t pad[3];
335} GPR_PPC64;
336
337typedef struct _FPR_PPC64 {
338 uint64_t f0;
339 uint64_t f1;
340 uint64_t f2;
341 uint64_t f3;
342 uint64_t f4;
343 uint64_t f5;
344 uint64_t f6;
345 uint64_t f7;
346 uint64_t f8;
347 uint64_t f9;
348 uint64_t f10;
349 uint64_t f11;
350 uint64_t f12;
351 uint64_t f13;
352 uint64_t f14;
353 uint64_t f15;
354 uint64_t f16;
355 uint64_t f17;
356 uint64_t f18;
357 uint64_t f19;
358 uint64_t f20;
359 uint64_t f21;
360 uint64_t f22;
361 uint64_t f23;
362 uint64_t f24;
363 uint64_t f25;
364 uint64_t f26;
365 uint64_t f27;
366 uint64_t f28;
367 uint64_t f29;
368 uint64_t f30;
369 uint64_t f31;
370 uint64_t fpscr;
371} FPR_PPC64;
372
373typedef struct _VMX_PPC64 {
374 uint32_t vr0[4];
375 uint32_t vr1[4];
376 uint32_t vr2[4];
377 uint32_t vr3[4];
378 uint32_t vr4[4];
379 uint32_t vr5[4];
380 uint32_t vr6[4];
381 uint32_t vr7[4];
382 uint32_t vr8[4];
383 uint32_t vr9[4];
384 uint32_t vr10[4];
385 uint32_t vr11[4];
386 uint32_t vr12[4];
387 uint32_t vr13[4];
388 uint32_t vr14[4];
389 uint32_t vr15[4];
390 uint32_t vr16[4];
391 uint32_t vr17[4];
392 uint32_t vr18[4];
393 uint32_t vr19[4];
394 uint32_t vr20[4];
395 uint32_t vr21[4];
396 uint32_t vr22[4];
397 uint32_t vr23[4];
398 uint32_t vr24[4];
399 uint32_t vr25[4];
400 uint32_t vr26[4];
401 uint32_t vr27[4];
402 uint32_t vr28[4];
403 uint32_t vr29[4];
404 uint32_t vr30[4];
405 uint32_t vr31[4];
406 uint32_t pad[2];
407 uint32_t vscr[2];
408 uint32_t vrsave;
409} VMX_PPC64;
410
411typedef struct _VSX_PPC64 {
412 uint32_t vs0[4];
413 uint32_t vs1[4];
414 uint32_t vs2[4];
415 uint32_t vs3[4];
416 uint32_t vs4[4];
417 uint32_t vs5[4];
418 uint32_t vs6[4];
419 uint32_t vs7[4];
420 uint32_t vs8[4];
421 uint32_t vs9[4];
422 uint32_t vs10[4];
423 uint32_t vs11[4];
424 uint32_t vs12[4];
425 uint32_t vs13[4];
426 uint32_t vs14[4];
427 uint32_t vs15[4];
428 uint32_t vs16[4];
429 uint32_t vs17[4];
430 uint32_t vs18[4];
431 uint32_t vs19[4];
432 uint32_t vs20[4];
433 uint32_t vs21[4];
434 uint32_t vs22[4];
435 uint32_t vs23[4];
436 uint32_t vs24[4];
437 uint32_t vs25[4];
438 uint32_t vs26[4];
439 uint32_t vs27[4];
440 uint32_t vs28[4];
441 uint32_t vs29[4];
442 uint32_t vs30[4];
443 uint32_t vs31[4];
444 uint32_t vs32[4];
445 uint32_t vs33[4];
446 uint32_t vs34[4];
447 uint32_t vs35[4];
448 uint32_t vs36[4];
449 uint32_t vs37[4];
450 uint32_t vs38[4];
451 uint32_t vs39[4];
452 uint32_t vs40[4];
453 uint32_t vs41[4];
454 uint32_t vs42[4];
455 uint32_t vs43[4];
456 uint32_t vs44[4];
457 uint32_t vs45[4];
458 uint32_t vs46[4];
459 uint32_t vs47[4];
460 uint32_t vs48[4];
461 uint32_t vs49[4];
462 uint32_t vs50[4];
463 uint32_t vs51[4];
464 uint32_t vs52[4];
465 uint32_t vs53[4];
466 uint32_t vs54[4];
467 uint32_t vs55[4];
468 uint32_t vs56[4];
469 uint32_t vs57[4];
470 uint32_t vs58[4];
471 uint32_t vs59[4];
472 uint32_t vs60[4];
473 uint32_t vs61[4];
474 uint32_t vs62[4];
475 uint32_t vs63[4];
476} VSX_PPC64;
477
478static lldb_private::RegisterInfo g_register_infos_ppc64[] = {PPC64_REGS};
479
480static_assert((sizeof(g_register_infos_ppc64) /
481 sizeof(g_register_infos_ppc64[0])) == k_num_registers_ppc64,
482 "g_register_infos_powerpc64 has wrong number of register infos");
483
484#undef DEFINE_FPR_PPC64
485#undef DEFINE_GPR_PPC64
486#undef DEFINE_VMX_PPC64
487#undef DEFINE_VSX_PPC64
488
489#endif // DECLARE_REGISTER_INFOS_PPC64_STRUCT
Every register is described in detail including its name, alternate name (optional),...