LLDB  mainline
RegisterInfoPOSIX_ppc64le.cpp
Go to the documentation of this file.
1 //===-- RegisterInfoPOSIX_ppc64le.cpp --------------------------*- C++ -*-===//
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 <stddef.h>
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 NULL;
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 }
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
const lldb_private::RegisterInfo * GetRegisterInfo() const override
An architecture specification class.
Definition: ArchSpec.h:32
static uint32_t GetRegisterInfoCount(const lldb_private::ArchSpec &target_arch)
RegisterInfoPOSIX_ppc64le(const lldb_private::ArchSpec &target_arch)
struct _GPR GPR
size_t GetGPRSize() const override
static const lldb_private::RegisterInfo * GetRegisterInfoPtr(const lldb_private::ArchSpec &target_arch)
llvm::Triple::ArchType GetMachine() const
Returns a machine family for the current architecture.
Definition: ArchSpec.cpp:726
uint32_t GetRegisterCount() const override