1be691f3bSpatrick //===-- NativeRegisterContextFreeBSD_arm.h ----------------------*- C++ -*-===// 2be691f3bSpatrick // 3be691f3bSpatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4be691f3bSpatrick // See https://llvm.org/LICENSE.txt for license information. 5be691f3bSpatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6be691f3bSpatrick // 7be691f3bSpatrick //===----------------------------------------------------------------------===// 8be691f3bSpatrick 9be691f3bSpatrick #if defined(__arm__) 10be691f3bSpatrick 11be691f3bSpatrick #ifndef lldb_NativeRegisterContextFreeBSD_arm_h 12be691f3bSpatrick #define lldb_NativeRegisterContextFreeBSD_arm_h 13be691f3bSpatrick 14be691f3bSpatrick // clang-format off 15be691f3bSpatrick #include <sys/types.h> 16be691f3bSpatrick #include <machine/reg.h> 17be691f3bSpatrick #include <machine/vfp.h> 18be691f3bSpatrick // clang-format on 19be691f3bSpatrick 20be691f3bSpatrick #include "Plugins/Process/FreeBSD/NativeRegisterContextFreeBSD.h" 21be691f3bSpatrick #include "Plugins/Process/Utility/RegisterInfoPOSIX_arm.h" 22be691f3bSpatrick 23be691f3bSpatrick #include <array> 24be691f3bSpatrick 25be691f3bSpatrick namespace lldb_private { 26be691f3bSpatrick namespace process_freebsd { 27be691f3bSpatrick 28be691f3bSpatrick class NativeProcessFreeBSD; 29be691f3bSpatrick 30be691f3bSpatrick class NativeRegisterContextFreeBSD_arm : public NativeRegisterContextFreeBSD { 31be691f3bSpatrick public: 32be691f3bSpatrick NativeRegisterContextFreeBSD_arm(const ArchSpec &target_arch, 33be691f3bSpatrick NativeThreadProtocol &native_thread); 34be691f3bSpatrick 35be691f3bSpatrick uint32_t GetRegisterSetCount() const override; 36be691f3bSpatrick 37be691f3bSpatrick uint32_t GetUserRegisterCount() const override; 38be691f3bSpatrick 39be691f3bSpatrick const RegisterSet *GetRegisterSet(uint32_t set_index) const override; 40be691f3bSpatrick 41be691f3bSpatrick Status ReadRegister(const RegisterInfo *reg_info, 42be691f3bSpatrick RegisterValue ®_value) override; 43be691f3bSpatrick 44be691f3bSpatrick Status WriteRegister(const RegisterInfo *reg_info, 45be691f3bSpatrick const RegisterValue ®_value) override; 46be691f3bSpatrick 47*f6aab3d8Srobert Status ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override; 48be691f3bSpatrick 49be691f3bSpatrick Status WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override; 50be691f3bSpatrick 51be691f3bSpatrick llvm::Error 52be691f3bSpatrick CopyHardwareWatchpointsFrom(NativeRegisterContextFreeBSD &source) override; 53be691f3bSpatrick 54be691f3bSpatrick private: 55be691f3bSpatrick std::array<uint8_t, sizeof(reg) + sizeof(vfp_state)> m_reg_data; 56be691f3bSpatrick 57be691f3bSpatrick Status ReadRegisterSet(uint32_t set); 58be691f3bSpatrick Status WriteRegisterSet(uint32_t set); 59be691f3bSpatrick 60be691f3bSpatrick RegisterInfoPOSIX_arm &GetRegisterInfo() const; 61be691f3bSpatrick }; 62be691f3bSpatrick 63be691f3bSpatrick } // namespace process_freebsd 64be691f3bSpatrick } // namespace lldb_private 65be691f3bSpatrick 66be691f3bSpatrick #endif // #ifndef lldb_NativeRegisterContextFreeBSD_arm_h 67be691f3bSpatrick 68be691f3bSpatrick #endif // defined (__arm__) 69