LLDB  mainline
RegisterInfoPOSIX_ppc64le.cpp
Go to the documentation of this file.
1 //===-- RegisterInfoPOSIX_ppc64le.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 
9 #include <cassert>
10 #include <cstddef>
11 #include <vector>
12 
13 #include "lldb/lldb-defines.h"
14 #include "llvm/Support/Compiler.h"
15 
17 
18 // Include RegisterInfoPOSIX_ppc64le to declare our g_register_infos_ppc64le
19 #define DECLARE_REGISTER_INFOS_PPC64LE_STRUCT
20 #include "RegisterInfos_ppc64le.h"
21 #undef DECLARE_REGISTER_INFOS_PPC64LE_STRUCT
22 
23 static const lldb_private::RegisterInfo *
25  switch (target_arch.GetMachine()) {
26  case llvm::Triple::ppc64le:
27  return g_register_infos_ppc64le;
28  default:
29  assert(false && "Unhandled target architecture.");
30  return nullptr;
31  }
32 }
33 
34 static uint32_t
36  switch (target_arch.GetMachine()) {
37  case llvm::Triple::ppc64le:
38  return static_cast<uint32_t>(sizeof(g_register_infos_ppc64le) /
39  sizeof(g_register_infos_ppc64le[0]));
40  default:
41  assert(false && "Unhandled target architecture.");
42  return 0;
43  }
44 }
45 
47  const lldb_private::ArchSpec &target_arch)
48  : lldb_private::RegisterInfoInterface(target_arch),
49  m_register_info_p(GetRegisterInfoPtr(target_arch)),
50  m_register_info_count(GetRegisterInfoCount(target_arch)) {}
51 
53  return sizeof(GPR);
54 }
55 
56 const lldb_private::RegisterInfo *
58  return m_register_info_p;
59 }
60 
62  return m_register_info_count;
63 }
RegisterInfoPOSIX_ppc64le::GetRegisterInfo
const lldb_private::RegisterInfo * GetRegisterInfo() const override
Definition: RegisterInfoPOSIX_ppc64le.cpp:57
lldb_private::ArchSpec
Definition: ArchSpec.h:33
lldb_private::ArchSpec::GetMachine
llvm::Triple::ArchType GetMachine() const
Returns a machine family for the current architecture.
Definition: ArchSpec.cpp:667
lldb-defines.h
RegisterInfoPOSIX_ppc64le::GetRegisterCount
uint32_t GetRegisterCount() const override
Definition: RegisterInfoPOSIX_ppc64le.cpp:61
GetRegisterInfoCount
static uint32_t GetRegisterInfoCount(const lldb_private::ArchSpec &target_arch)
Definition: RegisterInfoPOSIX_ppc64le.cpp:35
RegisterInfoPOSIX_ppc64le::m_register_info_count
uint32_t m_register_info_count
Definition: RegisterInfoPOSIX_ppc64le.h:28
RegisterInfoPOSIX_ppc64le::GetGPRSize
size_t GetGPRSize() const override
Definition: RegisterInfoPOSIX_ppc64le.cpp:52
GPR
struct _GPR GPR
RegisterInfoPOSIX_ppc64le.h
uint32_t
RegisterInfoPOSIX_ppc64le::RegisterInfoPOSIX_ppc64le
RegisterInfoPOSIX_ppc64le(const lldb_private::ArchSpec &target_arch)
Definition: RegisterInfoPOSIX_ppc64le.cpp:46
lldb_private
A class that represents a running process on the host machine.
Definition: SBCommandInterpreterRunOptions.h:16
RegisterInfos_ppc64le.h
GetRegisterInfoPtr
static const lldb_private::RegisterInfo * GetRegisterInfoPtr(const lldb_private::ArchSpec &target_arch)
Definition: RegisterInfoPOSIX_ppc64le.cpp:24
RegisterInfoPOSIX_ppc64le::m_register_info_p
const lldb_private::RegisterInfo * m_register_info_p
Definition: RegisterInfoPOSIX_ppc64le.h:27