1 //===-- RegisterContextFreeBSDKernel_arm64.h --------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_ARM64_H 10 #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_ARM64_H 11 12 #include "Plugins/Process/Utility/RegisterContextPOSIX_arm64.h" 13 #include "Plugins/Process/elf-core/RegisterUtilities.h" 14 15 class RegisterContextFreeBSDKernel_arm64 : public RegisterContextPOSIX_arm64 { 16 public: 17 RegisterContextFreeBSDKernel_arm64( 18 lldb_private::Thread &thread, 19 std::unique_ptr<RegisterInfoPOSIX_arm64> register_info_up, 20 lldb::addr_t pcb_addr); 21 22 bool ReadRegister(const lldb_private::RegisterInfo *reg_info, 23 lldb_private::RegisterValue &value) override; 24 25 bool WriteRegister(const lldb_private::RegisterInfo *reg_info, 26 const lldb_private::RegisterValue &value) override; 27 28 protected: 29 bool ReadGPR() override; 30 31 bool ReadFPR() override; 32 33 bool WriteGPR() override; 34 35 bool WriteFPR() override; 36 37 private: 38 lldb::addr_t m_pcb_addr; 39 }; 40 41 #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_ARM64_H 42