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