1 //===-- RegisterContextPOSIX_riscv64.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_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H 10 #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H 11 12 #include "RegisterInfoInterface.h" 13 #include "RegisterInfoPOSIX_riscv64.h" 14 #include "lldb-riscv-register-enums.h" 15 #include "lldb/Target/RegisterContext.h" 16 #include "lldb/Utility/Log.h" 17 18 class RegisterContextPOSIX_riscv64 : public lldb_private::RegisterContext { 19 public: 20 RegisterContextPOSIX_riscv64( 21 lldb_private::Thread &thread, 22 std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info); 23 24 ~RegisterContextPOSIX_riscv64() override; 25 26 void invalidate(); 27 28 void InvalidateAllRegisters() override; 29 30 size_t GetRegisterCount() override; 31 32 virtual size_t GetGPRSize(); 33 34 virtual unsigned GetRegisterSize(unsigned reg); 35 36 virtual unsigned GetRegisterOffset(unsigned reg); 37 38 const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override; 39 40 size_t GetRegisterSetCount() override; 41 42 const lldb_private::RegisterSet *GetRegisterSet(size_t set) override; 43 44 protected: 45 std::unique_ptr<RegisterInfoPOSIX_riscv64> m_register_info_up; 46 47 virtual const lldb_private::RegisterInfo *GetRegisterInfo(); 48 49 bool IsGPR(unsigned reg); 50 51 bool IsFPR(unsigned reg); 52 GetFPRSize()53 size_t GetFPRSize() { return sizeof(RegisterInfoPOSIX_riscv64::FPR); } 54 GetRegNumFCSR()55 uint32_t GetRegNumFCSR() const { return fpr_fcsr_riscv; } 56 57 virtual bool ReadGPR() = 0; 58 virtual bool ReadFPR() = 0; 59 virtual bool WriteGPR() = 0; 60 virtual bool WriteFPR() = 0; 61 }; 62 63 #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_RISCV64_H 64