1 //===-- RegisterContextFreeBSD_powerpc.cpp ----------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===---------------------------------------------------------------------===//
10 #include "RegisterContextFreeBSD_powerpc.h"
11 #include "RegisterContextPOSIX_powerpc.h"
14 using namespace lldb_private;
17 // http://svnweb.freebsd.org/base/head/sys/powerpc/include/reg.h
18 typedef struct _GPR64 {
58 typedef struct _GPR32 {
134 typedef struct _VMX {
172 //---------------------------------------------------------------------------
173 // Include RegisterInfos_powerpc to declare our g_register_infos_powerpc
175 //---------------------------------------------------------------------------
176 #define DECLARE_REGISTER_INFOS_POWERPC_STRUCT
177 #include "RegisterInfos_powerpc.h"
178 #undef DECLARE_REGISTER_INFOS_POWERPC_STRUCT
180 RegisterContextFreeBSD_powerpc::RegisterContextFreeBSD_powerpc(
181 const ArchSpec &target_arch)
182 : RegisterInfoInterface(target_arch) {}
184 RegisterContextFreeBSD_powerpc::~RegisterContextFreeBSD_powerpc() {}
186 size_t RegisterContextFreeBSD_powerpc::GetGPRSize() const {
187 // This is an 'abstract' base, so no GPR struct.
191 const RegisterInfo *RegisterContextFreeBSD_powerpc::GetRegisterInfo() const {
192 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
193 llvm_unreachable("Abstract class!");
197 uint32_t RegisterContextFreeBSD_powerpc::GetRegisterCount() const { return 0; }
199 RegisterContextFreeBSD_powerpc32::RegisterContextFreeBSD_powerpc32(
200 const ArchSpec &target_arch)
201 : RegisterContextFreeBSD_powerpc(target_arch) {}
203 RegisterContextFreeBSD_powerpc32::~RegisterContextFreeBSD_powerpc32() {}
205 size_t RegisterContextFreeBSD_powerpc32::GetGPRSize() const {
206 return sizeof(GPR32);
209 const RegisterInfo *RegisterContextFreeBSD_powerpc32::GetRegisterInfo() const {
210 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
211 return g_register_infos_powerpc32;
214 uint32_t RegisterContextFreeBSD_powerpc32::GetRegisterCount() const {
215 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc32) /
216 sizeof(g_register_infos_powerpc32[0]));
219 RegisterContextFreeBSD_powerpc64::RegisterContextFreeBSD_powerpc64(
220 const ArchSpec &target_arch)
221 : RegisterContextFreeBSD_powerpc(target_arch) {}
223 RegisterContextFreeBSD_powerpc64::~RegisterContextFreeBSD_powerpc64() {}
225 size_t RegisterContextFreeBSD_powerpc64::GetGPRSize() const {
226 return sizeof(GPR64);
229 const RegisterInfo *RegisterContextFreeBSD_powerpc64::GetRegisterInfo() const {
230 // assert (m_target_arch.GetCore() == ArchSpec::eCore_powerpc);
231 if (m_target_arch.GetMachine() == llvm::Triple::ppc)
232 return g_register_infos_powerpc64_32;
233 return g_register_infos_powerpc64;
236 uint32_t RegisterContextFreeBSD_powerpc64::GetRegisterCount() const {
237 return static_cast<uint32_t>(sizeof(g_register_infos_powerpc64) /
238 sizeof(g_register_infos_powerpc64[0]));