9#ifdef DECLARE_REGISTER_INFOS_PPC64_STRUCT
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) + \
22#define GPR_PPC64_SIZE(regname) (sizeof(((GPR_PPC64 *)NULL)->regname))
28#define DEFINE_GPR_PPC64(reg, alt, lldb_kind) \
32 GPR_PPC64_SIZE(reg), \
33 GPR_PPC64_OFFSET(reg), \
34 lldb::eEncodingUint, \
36 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
37 lldb_kind, LLDB_INVALID_REGNUM, gpr_##reg##_ppc64}, \
42#define DEFINE_FPR_PPC64(reg, alt, lldb_kind) \
47 FPR_PPC64_OFFSET(reg), \
48 lldb::eEncodingIEEE754, \
50 {ppc64_dwarf::dwarf_##reg##_ppc64, ppc64_dwarf::dwarf_##reg##_ppc64, \
51 lldb_kind, LLDB_INVALID_REGNUM, fpr_##reg##_ppc64}, \
56#define DEFINE_VMX_PPC64(reg, lldb_kind) \
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}, \
71#define DEFINE_VSX_PPC64(reg, lldb_kind) \
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}, \
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), \
163 FPR_PPC64_OFFSET(fpscr), \
164 lldb::eEncodingUint, \
166 {ppc64_dwarf::dwarf_fpscr_ppc64, ppc64_dwarf::dwarf_fpscr_ppc64, \
167 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, fpr_fpscr_ppc64}, \
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), \
208 VMX_PPC64_OFFSET(vscr), \
209 lldb::eEncodingUint, \
211 {ppc64_dwarf::dwarf_vscr_ppc64, ppc64_dwarf::dwarf_vscr_ppc64, \
212 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, vmx_vscr_ppc64}, \
221 VMX_PPC64_OFFSET(vrsave), \
222 lldb::eEncodingUint, \
224 {ppc64_dwarf::dwarf_vrsave_ppc64, ppc64_dwarf::dwarf_vrsave_ppc64, \
225 LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, vmx_vrsave_ppc64}, \
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),
295typedef struct _GPR_PPC64 {
337typedef struct _FPR_PPC64 {
373typedef struct _VMX_PPC64 {
411typedef struct _VSX_PPC64 {
480static_assert((
sizeof(g_register_infos_ppc64) /
482 "g_register_infos_powerpc64 has wrong number of register infos");
484#undef DEFINE_FPR_PPC64
485#undef DEFINE_GPR_PPC64
486#undef DEFINE_VMX_PPC64
487#undef DEFINE_VSX_PPC64
Every register is described in detail including its name, alternate name (optional),...