]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm.h
Update llvm, clang, lld and lldb to release_39 branch r288513.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / Process / FreeBSD / RegisterContextPOSIXProcessMonitor_arm.h
1 //===-- RegisterContextPOSIXProcessMonitor_arm.h --------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef liblldb_RegisterContextPOSIXProcessMonitor_arm_H_
11 #define liblldb_RegisterContextPOSIXProcessMonitor_arm_H_
12
13 #include "RegisterContextPOSIX.h"
14 #include "Plugins/Process/Utility/RegisterContextPOSIX_arm.h"
15
16 class RegisterContextPOSIXProcessMonitor_arm:
17     public RegisterContextPOSIX_arm,
18     public POSIXBreakpointProtocol
19 {
20 public:
21     RegisterContextPOSIXProcessMonitor_arm(lldb_private::Thread &thread,
22                                              uint32_t concrete_frame_idx,
23                                              lldb_private::RegisterInfoInterface *register_info);
24
25 protected:
26     bool
27     ReadGPR();
28
29     bool
30     ReadFPR();
31
32     bool
33     WriteGPR();
34
35     bool
36     WriteFPR();
37
38     // lldb_private::RegisterContext
39     bool
40     ReadRegister(const unsigned reg, lldb_private::RegisterValue &value);
41
42     bool
43     WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value);
44
45     bool
46     ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
47
48     bool
49     WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
50
51     bool
52     ReadAllRegisterValues(lldb::DataBufferSP &data_sp);
53
54     bool
55     WriteAllRegisterValues(const lldb::DataBufferSP &data_sp);
56
57     uint32_t
58     SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write);
59
60     bool
61     ClearHardwareWatchpoint(uint32_t hw_index);
62
63     bool
64     HardwareSingleStep(bool enable);
65
66     // POSIXBreakpointProtocol
67     bool
68     UpdateAfterBreakpoint();
69
70     unsigned
71     GetRegisterIndexFromOffset(unsigned offset);
72
73     bool
74     IsWatchpointHit(uint32_t hw_index);
75
76     bool
77     ClearWatchpointHits();
78
79     lldb::addr_t
80     GetWatchpointAddress(uint32_t hw_index);
81
82     bool
83     IsWatchpointVacant(uint32_t hw_index);
84
85     bool
86     SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index);
87
88     uint32_t
89     NumSupportedHardwareWatchpoints();
90
91 private:
92     ProcessMonitor &
93     GetMonitor();
94 };
95
96 #endif