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