RegisterContextPOSIXProcessMonitor_powerpc.h revision 285101
1251881Speter//===-- RegisterContextPOSIXProcessMonitor_powerpc.h -------------*- C++ -*-===//
2251881Speter//
3251881Speter//                     The LLVM Compiler Infrastructure
4251881Speter//
5251881Speter// This file is distributed under the University of Illinois Open Source
6251881Speter// License. See LICENSE.TXT for details.
7251881Speter//
8251881Speter//===----------------------------------------------------------------------===//
9251881Speter
10251881Speter#ifndef liblldb_RegisterContextPOSIXProcessMonitor_powerpc_H_
11251881Speter#define liblldb_RegisterContextPOSIXProcessMonitor_powerpc_H_
12251881Speter
13251881Speter#include "Plugins/Process/Utility/RegisterContextPOSIX_powerpc.h"
14251881Speter
15251881Speterclass RegisterContextPOSIXProcessMonitor_powerpc:
16251881Speter    public RegisterContextPOSIX_powerpc,
17251881Speter    public POSIXBreakpointProtocol
18251881Speter{
19251881Speterpublic:
20251881Speter    RegisterContextPOSIXProcessMonitor_powerpc(lldb_private::Thread &thread,
21251881Speter                                              uint32_t concrete_frame_idx,
22251881Speter                                              lldb_private::RegisterInfoInterface *register_info);
23251881Speter
24251881Speterprotected:
25251881Speter    bool
26251881Speter    IsVMX();
27251881Speter
28251881Speter    bool
29251881Speter    ReadGPR();
30251881Speter
31251881Speter    bool
32251881Speter    ReadFPR();
33251881Speter
34251881Speter    bool
35251881Speter    ReadVMX();
36251881Speter
37251881Speter    bool
38251881Speter    WriteGPR();
39251881Speter
40289180Speter    bool
41251881Speter    WriteFPR();
42251881Speter
43251881Speter    bool
44251881Speter    WriteVMX();
45251881Speter
46251881Speter    // lldb_private::RegisterContext
47251881Speter    bool
48251881Speter    ReadRegister(const unsigned reg, lldb_private::RegisterValue &value);
49251881Speter
50251881Speter    bool
51251881Speter    WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value);
52251881Speter
53251881Speter    bool
54251881Speter    ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
55
56    bool
57    WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
58
59    bool
60    ReadAllRegisterValues(lldb::DataBufferSP &data_sp);
61
62    bool
63    WriteAllRegisterValues(const lldb::DataBufferSP &data_sp);
64
65    uint32_t
66    SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write);
67
68    bool
69    ClearHardwareWatchpoint(uint32_t hw_index);
70
71    bool
72    HardwareSingleStep(bool enable);
73
74    // POSIXBreakpointProtocol
75    bool
76    UpdateAfterBreakpoint();
77
78    unsigned
79    GetRegisterIndexFromOffset(unsigned offset);
80
81    bool
82    IsWatchpointHit(uint32_t hw_index);
83
84    bool
85    ClearWatchpointHits();
86
87    lldb::addr_t
88    GetWatchpointAddress(uint32_t hw_index);
89
90    bool
91    IsWatchpointVacant(uint32_t hw_index);
92
93    bool
94    SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index);
95
96    uint32_t
97    NumSupportedHardwareWatchpoints();
98
99private:
100    ProcessMonitor &
101    GetMonitor();
102};
103
104#endif
105