1 //===-- RegisterContextPOSIX_mips64.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_MIPS64_H 10 #define LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_MIPS64_H 11 12 #include "RegisterContext_mips.h" 13 #include "RegisterInfoInterface.h" 14 #include "lldb/Target/RegisterContext.h" 15 #include "lldb/Utility/Log.h" 16 17 class RegisterContextPOSIX_mips64 : public lldb_private::RegisterContext { 18 public: 19 20 enum Register_count{ 21 gpr_registers_count = 0, 22 fpr_registers_count, 23 msa_registers_count, 24 register_set_count 25 }; 26 27 RegisterContextPOSIX_mips64( 28 lldb_private::Thread &thread, uint32_t concrete_frame_idx, 29 lldb_private::RegisterInfoInterface *register_info); 30 31 ~RegisterContextPOSIX_mips64() override; 32 33 void Invalidate(); 34 35 void InvalidateAllRegisters() override; 36 37 size_t GetRegisterCount() override; 38 39 virtual size_t GetGPRSize(); 40 41 virtual unsigned GetRegisterSize(unsigned reg); 42 43 virtual unsigned GetRegisterOffset(unsigned reg); 44 45 const lldb_private::RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override; 46 47 size_t GetRegisterSetCount() override; 48 49 const lldb_private::RegisterSet *GetRegisterSet(size_t set) override; 50 51 const char *GetRegisterName(unsigned reg); 52 53 uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind, 54 uint32_t num) override; 55 56 protected: 57 uint32_t m_num_registers; 58 uint8_t m_registers_count[register_set_count]; 59 std::unique_ptr<lldb_private::RegisterInfoInterface> 60 m_register_info_up; // Register Info Interface (FreeBSD or Linux) 61 62 // Determines if an extended register set is supported on the processor 63 // running the inferior process. 64 virtual bool IsRegisterSetAvailable(size_t set_index); 65 66 virtual const lldb_private::RegisterInfo *GetRegisterInfo(); 67 68 bool IsGPR(unsigned reg); 69 70 bool IsFPR(unsigned reg); 71 72 virtual bool ReadGPR() = 0; 73 virtual bool ReadFPR() = 0; 74 virtual bool WriteGPR() = 0; 75 virtual bool WriteFPR() = 0; 76 }; 77 78 #endif // LLDB_SOURCE_PLUGINS_PROCESS_UTILITY_REGISTERCONTEXTPOSIX_MIPS64_H 79