1 //===-- RegisterContextPOSIX_riscv64.cpp ------------------------*- 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 #include "lldb/Target/Process.h" 10 #include "lldb/Target/Target.h" 11 #include "lldb/Target/Thread.h" 12 #include "lldb/Utility/DataBufferHeap.h" 13 #include "lldb/Utility/DataExtractor.h" 14 #include "lldb/Utility/Endian.h" 15 #include "lldb/Utility/RegisterValue.h" 16 #include "lldb/Utility/Scalar.h" 17 #include "llvm/Support/Compiler.h" 18 19 #include "RegisterContextPOSIX_riscv64.h" 20 21 using namespace lldb; 22 using namespace lldb_private; 23 RegisterContextPOSIX_riscv64(lldb_private::Thread & thread,std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info)24RegisterContextPOSIX_riscv64::RegisterContextPOSIX_riscv64( 25 lldb_private::Thread &thread, 26 std::unique_ptr<RegisterInfoPOSIX_riscv64> register_info) 27 : lldb_private::RegisterContext(thread, 0), 28 m_register_info_up(std::move(register_info)) {} 29 30 RegisterContextPOSIX_riscv64::~RegisterContextPOSIX_riscv64() = default; 31 invalidate()32void RegisterContextPOSIX_riscv64::invalidate() {} 33 InvalidateAllRegisters()34void RegisterContextPOSIX_riscv64::InvalidateAllRegisters() {} 35 GetRegisterCount()36size_t RegisterContextPOSIX_riscv64::GetRegisterCount() { 37 return m_register_info_up->GetRegisterCount(); 38 } 39 GetGPRSize()40size_t RegisterContextPOSIX_riscv64::GetGPRSize() { 41 return m_register_info_up->GetGPRSize(); 42 } 43 GetRegisterSize(unsigned int reg)44unsigned RegisterContextPOSIX_riscv64::GetRegisterSize(unsigned int reg) { 45 return m_register_info_up->GetRegisterInfo()[reg].byte_size; 46 } 47 GetRegisterOffset(unsigned int reg)48unsigned RegisterContextPOSIX_riscv64::GetRegisterOffset(unsigned int reg) { 49 return m_register_info_up->GetRegisterInfo()[reg].byte_offset; 50 } 51 52 const lldb_private::RegisterInfo * GetRegisterInfoAtIndex(size_t reg)53RegisterContextPOSIX_riscv64::GetRegisterInfoAtIndex(size_t reg) { 54 if (reg < GetRegisterCount()) 55 return &GetRegisterInfo()[reg]; 56 57 return nullptr; 58 } 59 GetRegisterSetCount()60size_t RegisterContextPOSIX_riscv64::GetRegisterSetCount() { 61 return m_register_info_up->GetRegisterCount(); 62 } 63 64 const lldb_private::RegisterSet * GetRegisterSet(size_t set)65RegisterContextPOSIX_riscv64::GetRegisterSet(size_t set) { 66 return m_register_info_up->GetRegisterSet(set); 67 } 68 69 const lldb_private::RegisterInfo * GetRegisterInfo()70RegisterContextPOSIX_riscv64::GetRegisterInfo() { 71 return m_register_info_up->GetRegisterInfo(); 72 } 73 IsGPR(unsigned int reg)74bool RegisterContextPOSIX_riscv64::IsGPR(unsigned int reg) { 75 return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) == 76 RegisterInfoPOSIX_riscv64::GPRegSet; 77 } 78 IsFPR(unsigned int reg)79bool RegisterContextPOSIX_riscv64::IsFPR(unsigned int reg) { 80 return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) == 81 RegisterInfoPOSIX_riscv64::FPRegSet; 82 } 83