1061da546Spatrick //===-- ArchitectureMips.h ---------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H 10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H 11061da546Spatrick 12061da546Spatrick #include "lldb/Core/Architecture.h" 13061da546Spatrick #include "lldb/Utility/ArchSpec.h" 14061da546Spatrick 15061da546Spatrick namespace lldb_private { 16061da546Spatrick 17061da546Spatrick class ArchitectureMips : public Architecture { 18061da546Spatrick public: GetPluginNameStatic()19*f6aab3d8Srobert static llvm::StringRef GetPluginNameStatic() { return "mips"; } 20061da546Spatrick static void Initialize(); 21061da546Spatrick static void Terminate(); 22061da546Spatrick GetPluginName()23*f6aab3d8Srobert llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 24061da546Spatrick OverrideStopInfo(Thread & thread)25061da546Spatrick void OverrideStopInfo(Thread &thread) const override {} 26061da546Spatrick 27061da546Spatrick lldb::addr_t GetBreakableLoadAddress(lldb::addr_t addr, 28061da546Spatrick Target &) const override; 29061da546Spatrick 30061da546Spatrick lldb::addr_t GetCallableLoadAddress(lldb::addr_t load_addr, 31061da546Spatrick AddressClass addr_class) const override; 32061da546Spatrick 33061da546Spatrick lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr, 34061da546Spatrick AddressClass addr_class) const override; 35061da546Spatrick 36061da546Spatrick private: 37dda28197Spatrick Instruction *GetInstructionAtAddress(Target &target, 38061da546Spatrick const Address &resolved_addr, 39061da546Spatrick lldb::addr_t symbol_offset) const; 40061da546Spatrick 41061da546Spatrick static std::unique_ptr<Architecture> Create(const ArchSpec &arch); ArchitectureMips(const ArchSpec & arch)42061da546Spatrick ArchitectureMips(const ArchSpec &arch) : m_arch(arch) {} 43061da546Spatrick 44061da546Spatrick ArchSpec m_arch; 45061da546Spatrick }; 46061da546Spatrick 47061da546Spatrick } // namespace lldb_private 48061da546Spatrick 49dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_MIPS_ARCHITECTUREMIPS_H 50