1 //===-- RegisterContextLinux_mips64.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 #if defined (__mips__)
15 // For GDB, GCC and DWARF Register numbers
16 #include "RegisterContextLinux_mips64.h"
18 // Internal codes for all mips64 registers
19 #include "lldb-mips64-register-enums.h"
20 #include "RegisterContext_mips64.h"
23 using namespace lldb_private;
70 //---------------------------------------------------------------------------
71 // Include RegisterInfos_mips64 to declare our g_register_infos_mips64 structure.
72 //---------------------------------------------------------------------------
73 #define DECLARE_REGISTER_INFOS_MIPS64_STRUCT
74 #include "RegisterInfos_mips64.h"
75 #undef DECLARE_REGISTER_INFOS_MIPS64_STRUCT
77 //---------------------------------------------------------------------------
78 // Include RegisterInfos_mips to declare our g_register_infos_mips structure.
79 //---------------------------------------------------------------------------
80 #define DECLARE_REGISTER_INFOS_MIPS_STRUCT
81 #include "RegisterInfos_mips.h"
82 #undef DECLARE_REGISTER_INFOS_MIPS_STRUCT
84 static const RegisterInfo *
85 GetRegisterInfoPtr (const ArchSpec &target_arch)
87 switch (target_arch.GetMachine())
89 case llvm::Triple::mips64:
90 case llvm::Triple::mips64el:
91 return g_register_infos_mips64;
92 case llvm::Triple::mips:
93 case llvm::Triple::mipsel:
94 return g_register_infos_mips;
96 assert(false && "Unhandled target architecture.");
102 GetRegisterInfoCount (const ArchSpec &target_arch)
104 switch (target_arch.GetMachine())
106 case llvm::Triple::mips64:
107 case llvm::Triple::mips64el:
108 return static_cast<uint32_t> (sizeof (g_register_infos_mips64) / sizeof (g_register_infos_mips64 [0]));
109 case llvm::Triple::mips:
110 case llvm::Triple::mipsel:
111 return static_cast<uint32_t> (sizeof (g_register_infos_mips) / sizeof (g_register_infos_mips [0]));
113 assert(false && "Unhandled target architecture.");
118 RegisterContextLinux_mips64::RegisterContextLinux_mips64(const ArchSpec &target_arch) :
119 lldb_private::RegisterInfoInterface(target_arch),
120 m_register_info_p (GetRegisterInfoPtr (target_arch)),
121 m_register_info_count (GetRegisterInfoCount (target_arch))
126 RegisterContextLinux_mips64::GetGPRSize() const
132 RegisterContextLinux_mips64::GetRegisterInfo() const
134 return m_register_info_p;
138 RegisterContextLinux_mips64::GetRegisterCount () const
140 return m_register_info_count;