LLDB mainline
RegisterContextFreeBSD_powerpc.cpp
Go to the documentation of this file.
1//===-- RegisterContextFreeBSD_powerpc.cpp --------------------------------===//
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
11#include <vector>
12
13using namespace lldb_private;
14using namespace lldb;
15
16// http://svnweb.freebsd.org/base/head/sys/powerpc/include/reg.h
17typedef struct _GPR64 {
18 uint64_t r0;
19 uint64_t r1;
20 uint64_t r2;
21 uint64_t r3;
22 uint64_t r4;
23 uint64_t r5;
24 uint64_t r6;
25 uint64_t r7;
26 uint64_t r8;
27 uint64_t r9;
28 uint64_t r10;
29 uint64_t r11;
30 uint64_t r12;
31 uint64_t r13;
32 uint64_t r14;
33 uint64_t r15;
34 uint64_t r16;
35 uint64_t r17;
36 uint64_t r18;
37 uint64_t r19;
38 uint64_t r20;
39 uint64_t r21;
40 uint64_t r22;
41 uint64_t r23;
42 uint64_t r24;
43 uint64_t r25;
44 uint64_t r26;
45 uint64_t r27;
46 uint64_t r28;
47 uint64_t r29;
48 uint64_t r30;
49 uint64_t r31;
50 uint64_t lr;
51 uint64_t cr;
52 uint64_t xer;
53 uint64_t ctr;
54 uint64_t pc;
56
57typedef struct _GPR32 {
96
97typedef struct _FPR {
98 uint64_t f0;
99 uint64_t f1;
100 uint64_t f2;
101 uint64_t f3;
102 uint64_t f4;
103 uint64_t f5;
104 uint64_t f6;
105 uint64_t f7;
106 uint64_t f8;
107 uint64_t f9;
108 uint64_t f10;
109 uint64_t f11;
110 uint64_t f12;
111 uint64_t f13;
112 uint64_t f14;
113 uint64_t f15;
114 uint64_t f16;
115 uint64_t f17;
116 uint64_t f18;
117 uint64_t f19;
118 uint64_t f20;
119 uint64_t f21;
120 uint64_t f22;
121 uint64_t f23;
122 uint64_t f24;
123 uint64_t f25;
124 uint64_t f26;
125 uint64_t f27;
126 uint64_t f28;
127 uint64_t f29;
128 uint64_t f30;
129 uint64_t f31;
130 uint64_t fpscr;
132
133typedef struct _VMX {
170
171// Include RegisterInfos_powerpc to declare our g_register_infos_powerpc
172// structure.
173#define DECLARE_REGISTER_INFOS_POWERPC_STRUCT
175#undef DECLARE_REGISTER_INFOS_POWERPC_STRUCT
176
178 const ArchSpec &target_arch)
179 : RegisterInfoInterface(target_arch) {}
180
182
184 // This is an 'abstract' base, so no GPR struct.
185 return 0;
186}
187
189 llvm_unreachable("Abstract class!");
190 return nullptr;
191}
192
194
196 const ArchSpec &target_arch)
197 : RegisterContextFreeBSD_powerpc(target_arch) {}
198
200
202 return sizeof(GPR32);
203}
204
206 return g_register_infos_powerpc32;
207}
208
210 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc32) /
211 sizeof(g_register_infos_powerpc32[0]));
212}
213
215 const ArchSpec &target_arch)
216 : RegisterContextFreeBSD_powerpc(target_arch) {}
217
219
221 return sizeof(GPR64);
222}
223
225 if (GetTargetArchitecture().GetMachine() == llvm::Triple::ppc)
226 return g_register_infos_powerpc64_32;
227 return g_register_infos_powerpc64;
228}
229
231 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc64) /
232 sizeof(g_register_infos_powerpc64[0]));
233}
#define GPR64(n)
Definition: ABIX86.cpp:156
struct _FPR FPR
struct _GPR64 GPR64
struct _VMX VMX
struct _GPR32 GPR32
RegisterContextFreeBSD_powerpc32(const lldb_private::ArchSpec &target_arch)
const lldb_private::RegisterInfo * GetRegisterInfo() const override
RegisterContextFreeBSD_powerpc64(const lldb_private::ArchSpec &target_arch)
const lldb_private::RegisterInfo * GetRegisterInfo() const override
~RegisterContextFreeBSD_powerpc() override
const lldb_private::RegisterInfo * GetRegisterInfo() const override
RegisterContextFreeBSD_powerpc(const lldb_private::ArchSpec &target_arch)
An architecture specification class.
Definition: ArchSpec.h:32
RegisterInfo interface to patch RegisterInfo structure for archs.
const lldb_private::ArchSpec & GetTargetArchitecture() const
A class that represents a running process on the host machine.
Definition: SBAttachInfo.h:14
Definition: SBAddress.h:15