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
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(reg_set: 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_index: reg) ==
75 RegisterInfoPOSIX_riscv32::eRegsetMaskDefault;
76}
77
78bool RegisterContextPOSIX_riscv32::IsFPR(unsigned int reg) {
79 return m_register_info_up->GetRegisterSetFromRegisterIndex(reg_index: reg) ==
80 RegisterInfoPOSIX_riscv32::eRegsetMaskFP;
81}
82

source code of lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_riscv32.cpp