xref: /llvm-project/lldb/source/Plugins/Architecture/Mips/ArchitectureMips.h (revision 89c9fee420e1ed099aaa4aab48f3b58e233a3ea9)
1*89c9fee4SDavid Spickett //===-- ArchitectureMips.h --------------------------------------*- C++ -*-===//
27aa9e7bcSTatyana Krasnukha //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
67aa9e7bcSTatyana Krasnukha //
77aa9e7bcSTatyana Krasnukha //===----------------------------------------------------------------------===//
87aa9e7bcSTatyana Krasnukha 
9cdc514e4SJonas Devlieghere #ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H
10cdc514e4SJonas Devlieghere #define LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H
117aa9e7bcSTatyana Krasnukha 
127aa9e7bcSTatyana Krasnukha #include "lldb/Core/Architecture.h"
137aa9e7bcSTatyana Krasnukha #include "lldb/Utility/ArchSpec.h"
147aa9e7bcSTatyana Krasnukha 
157aa9e7bcSTatyana Krasnukha namespace lldb_private {
167aa9e7bcSTatyana Krasnukha 
177aa9e7bcSTatyana Krasnukha class ArchitectureMips : public Architecture {
187aa9e7bcSTatyana Krasnukha public:
GetPluginNameStatic()19b5e9f83eSPavel Labath   static llvm::StringRef GetPluginNameStatic() { return "mips"; }
207aa9e7bcSTatyana Krasnukha   static void Initialize();
217aa9e7bcSTatyana Krasnukha   static void Terminate();
227aa9e7bcSTatyana Krasnukha 
GetPluginName()23b5e9f83eSPavel Labath   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
247aa9e7bcSTatyana Krasnukha 
OverrideStopInfo(Thread & thread)257aa9e7bcSTatyana Krasnukha   void OverrideStopInfo(Thread &thread) const override {}
267aa9e7bcSTatyana Krasnukha 
277aa9e7bcSTatyana Krasnukha   lldb::addr_t GetBreakableLoadAddress(lldb::addr_t addr,
287aa9e7bcSTatyana Krasnukha                                        Target &) const override;
297aa9e7bcSTatyana Krasnukha 
307aa9e7bcSTatyana Krasnukha   lldb::addr_t GetCallableLoadAddress(lldb::addr_t load_addr,
317aa9e7bcSTatyana Krasnukha                                       AddressClass addr_class) const override;
327aa9e7bcSTatyana Krasnukha 
337aa9e7bcSTatyana Krasnukha   lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr,
347aa9e7bcSTatyana Krasnukha                                     AddressClass addr_class) const override;
357aa9e7bcSTatyana Krasnukha 
367aa9e7bcSTatyana Krasnukha private:
371d6fa41fSPavel Labath   Instruction *GetInstructionAtAddress(Target &target,
387aa9e7bcSTatyana Krasnukha                                        const Address &resolved_addr,
397aa9e7bcSTatyana Krasnukha                                        lldb::addr_t symbol_offset) const;
407aa9e7bcSTatyana Krasnukha 
417aa9e7bcSTatyana Krasnukha   static std::unique_ptr<Architecture> Create(const ArchSpec &arch);
ArchitectureMips(const ArchSpec & arch)427aa9e7bcSTatyana Krasnukha   ArchitectureMips(const ArchSpec &arch) : m_arch(arch) {}
437aa9e7bcSTatyana Krasnukha 
447aa9e7bcSTatyana Krasnukha   ArchSpec m_arch;
457aa9e7bcSTatyana Krasnukha };
467aa9e7bcSTatyana Krasnukha 
477aa9e7bcSTatyana Krasnukha } // namespace lldb_private
487aa9e7bcSTatyana Krasnukha 
49cdc514e4SJonas Devlieghere #endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H
50