82 lines · cpp
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-exception6//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 20using namespace lldb;21using namespace lldb_private;22 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 29RegisterContextPOSIX_riscv32::~RegisterContextPOSIX_riscv32() = default;30 31void RegisterContextPOSIX_riscv32::invalidate() {}32 33void RegisterContextPOSIX_riscv32::InvalidateAllRegisters() {}34 35size_t RegisterContextPOSIX_riscv32::GetRegisterCount() {36 return m_register_info_up->GetRegisterCount();37}38 39size_t RegisterContextPOSIX_riscv32::GetGPRSize() {40 return m_register_info_up->GetGPRSize();41}42 43unsigned RegisterContextPOSIX_riscv32::GetRegisterSize(unsigned int reg) {44 return m_register_info_up->GetRegisterInfo()[reg].byte_size;45}46 47unsigned RegisterContextPOSIX_riscv32::GetRegisterOffset(unsigned int reg) {48 return m_register_info_up->GetRegisterInfo()[reg].byte_offset;49}50 51const lldb_private::RegisterInfo *52RegisterContextPOSIX_riscv32::GetRegisterInfoAtIndex(size_t reg) {53 if (reg < GetRegisterCount())54 return &GetRegisterInfo()[reg];55 56 return nullptr;57}58 59size_t RegisterContextPOSIX_riscv32::GetRegisterSetCount() {60 return m_register_info_up->GetRegisterCount();61}62 63const lldb_private::RegisterSet *64RegisterContextPOSIX_riscv32::GetRegisterSet(size_t set) {65 return m_register_info_up->GetRegisterSet(set);66}67 68const lldb_private::RegisterInfo *69RegisterContextPOSIX_riscv32::GetRegisterInfo() {70 return m_register_info_up->GetRegisterInfo();71}72 73bool RegisterContextPOSIX_riscv32::IsGPR(unsigned int reg) {74 return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==75 RegisterInfoPOSIX_riscv32::eRegsetMaskDefault;76}77 78bool RegisterContextPOSIX_riscv32::IsFPR(unsigned int reg) {79 return m_register_info_up->GetRegisterSetFromRegisterIndex(reg) ==80 RegisterInfoPOSIX_riscv32::eRegsetMaskFP;81}82