1061da546Spatrick //===-- ArchitectureArm.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_ARM_ARCHITECTUREARM_H 10dda28197Spatrick #define LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H 11061da546Spatrick 12061da546Spatrick #include "lldb/Core/Architecture.h" 13061da546Spatrick 14061da546Spatrick namespace lldb_private { 15061da546Spatrick 16061da546Spatrick class ArchitectureArm : public Architecture { 17061da546Spatrick public: GetPluginNameStatic()18*f6aab3d8Srobert static llvm::StringRef GetPluginNameStatic() { return "arm"; } 19061da546Spatrick static void Initialize(); 20061da546Spatrick static void Terminate(); 21061da546Spatrick GetPluginName()22*f6aab3d8Srobert llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); } 23061da546Spatrick 24061da546Spatrick void OverrideStopInfo(Thread &thread) const override; 25061da546Spatrick 26061da546Spatrick lldb::addr_t GetCallableLoadAddress(lldb::addr_t load_addr, 27061da546Spatrick AddressClass addr_class) const override; 28061da546Spatrick 29061da546Spatrick lldb::addr_t GetOpcodeLoadAddress(lldb::addr_t load_addr, 30061da546Spatrick AddressClass addr_class) const override; 31061da546Spatrick 32061da546Spatrick private: 33061da546Spatrick static std::unique_ptr<Architecture> Create(const ArchSpec &arch); 34061da546Spatrick ArchitectureArm() = default; 35061da546Spatrick }; 36061da546Spatrick 37061da546Spatrick } // namespace lldb_private 38061da546Spatrick 39dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_ARCHITECTURE_ARM_ARCHITECTUREARM_H 40