1 //===-- RegisterContextFreeBSD_powerpc.cpp --------------------------------===//
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
7 //===---------------------------------------------------------------------===//
9 #include "RegisterContextFreeBSD_powerpc.h"
10 #include "RegisterContextPOSIX_powerpc.h"
13 using namespace lldb_private;
16 // http://svnweb.freebsd.org/base/head/sys/powerpc/include/reg.h
17 typedef struct _GPR64 {
57 typedef struct _GPR32 {
133 typedef struct _VMX {
171 // Include RegisterInfos_powerpc to declare our g_register_infos_powerpc
173 #define DECLARE_REGISTER_INFOS_POWERPC_STRUCT
174 #include "RegisterInfos_powerpc.h"
175 #undef DECLARE_REGISTER_INFOS_POWERPC_STRUCT
177 RegisterContextFreeBSD_powerpc::RegisterContextFreeBSD_powerpc(
178 const ArchSpec &target_arch)
179 : RegisterInfoInterface(target_arch) {}
181 RegisterContextFreeBSD_powerpc::~RegisterContextFreeBSD_powerpc() {}
183 size_t RegisterContextFreeBSD_powerpc::GetGPRSize() const {
184 // This is an 'abstract' base, so no GPR struct.
188 const RegisterInfo *RegisterContextFreeBSD_powerpc::GetRegisterInfo() const {
189 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
190 llvm_unreachable("Abstract class!");
194 uint32_t RegisterContextFreeBSD_powerpc::GetRegisterCount() const { return 0; }
196 RegisterContextFreeBSD_powerpc32::RegisterContextFreeBSD_powerpc32(
197 const ArchSpec &target_arch)
198 : RegisterContextFreeBSD_powerpc(target_arch) {}
200 RegisterContextFreeBSD_powerpc32::~RegisterContextFreeBSD_powerpc32() {}
202 size_t RegisterContextFreeBSD_powerpc32::GetGPRSize() const {
203 return sizeof(GPR32);
206 const RegisterInfo *RegisterContextFreeBSD_powerpc32::GetRegisterInfo() const {
207 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
208 return g_register_infos_powerpc32;
211 uint32_t RegisterContextFreeBSD_powerpc32::GetRegisterCount() const {
212 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc32) /
213 sizeof(g_register_infos_powerpc32[0]));
216 RegisterContextFreeBSD_powerpc64::RegisterContextFreeBSD_powerpc64(
217 const ArchSpec &target_arch)
218 : RegisterContextFreeBSD_powerpc(target_arch) {}
220 RegisterContextFreeBSD_powerpc64::~RegisterContextFreeBSD_powerpc64() {}
222 size_t RegisterContextFreeBSD_powerpc64::GetGPRSize() const {
223 return sizeof(GPR64);
226 const RegisterInfo *RegisterContextFreeBSD_powerpc64::GetRegisterInfo() const {
227 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
228 if (m_target_arch.GetMachine() == llvm::Triple::ppc)
229 return g_register_infos_powerpc64_32;
230 return g_register_infos_powerpc64;
233 uint32_t RegisterContextFreeBSD_powerpc64::GetRegisterCount() const {
234 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc64) /
235 sizeof(g_register_infos_powerpc64[0]));