1139790Simp//===-- RegisterContextPOSIXProcessMonitor_mips64.h -------------*- C++ -*-===//
21543Srgrimes//
31543Srgrimes//                     The LLVM Compiler Infrastructure
41543Srgrimes//
51543Srgrimes// This file is distributed under the University of Illinois Open Source
61543Srgrimes// License. See LICENSE.TXT for details.
71543Srgrimes//
81543Srgrimes//===----------------------------------------------------------------------===//
91543Srgrimes
101543Srgrimes#ifndef liblldb_RegisterContextPOSIXProcessMonitor_mips64_H_
111543Srgrimes#define liblldb_RegisterContextPOSIXProcessMonitor_mips64_H_
121543Srgrimes
131543Srgrimes#include "Plugins/Process/POSIX/RegisterContextPOSIX_mips64.h"
141543Srgrimes
151543Srgrimesclass RegisterContextPOSIXProcessMonitor_mips64:
161543Srgrimes    public RegisterContextPOSIX_mips64,
171543Srgrimes    public POSIXBreakpointProtocol
181543Srgrimes{
191543Srgrimespublic:
201543Srgrimes    RegisterContextPOSIXProcessMonitor_mips64(lldb_private::Thread &thread,
211543Srgrimes                                              uint32_t concrete_frame_idx,
221543Srgrimes                                              RegisterInfoInterface *register_info);
231543Srgrimes
241543Srgrimesprotected:
251543Srgrimes    bool
261543Srgrimes    ReadGPR();
271543Srgrimes
281543Srgrimes    bool
291543Srgrimes    ReadFPR();
3050477Speter
311543Srgrimes    bool
321543Srgrimes    WriteGPR();
3313107Sbde
3413107Sbde    bool
352166Spaul    WriteFPR();
36143063Sjoerg
37143063Sjoerg    // lldb_private::RegisterContext
38143063Sjoerg    bool
39143063Sjoerg    ReadRegister(const unsigned reg, lldb_private::RegisterValue &value);
4055205Speter
4137542Sbde    bool
4213157Sbde    WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value);
4322639Sbde
4422639Sbde    bool
4522639Sbde    ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
4622639Sbde
4722639Sbde    bool
4822639Sbde    WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
4913157Sbde
5013157Sbde    bool
5113157Sbde    ReadAllRegisterValues(lldb::DataBufferSP &data_sp);
5213157Sbde
5313157Sbde    bool
5413157Sbde    WriteAllRegisterValues(const lldb::DataBufferSP &data_sp);
551543Srgrimes
5617879Sbde    uint32_t
5717879Sbde    SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write);
5817879Sbde
5917879Sbde    bool
60143063Sjoerg    ClearHardwareWatchpoint(uint32_t hw_index);
61129498Sbde
62129498Sbde    bool
63129498Sbde    HardwareSingleStep(bool enable);
64163729Sbde
65129498Sbde    // POSIXBreakpointProtocol
66129498Sbde    bool
67129498Sbde    UpdateAfterBreakpoint();
68129498Sbde
69129498Sbde    unsigned
70129498Sbde    GetRegisterIndexFromOffset(unsigned offset);
71129498Sbde
72129498Sbde    bool
73129498Sbde    IsWatchpointHit(uint32_t hw_index);
74129498Sbde
75129498Sbde    bool
7617879Sbde    ClearWatchpointHits();
77129498Sbde
78143063Sjoerg    lldb::addr_t
79129498Sbde    GetWatchpointAddress(uint32_t hw_index);
80214346Sjhb
8128921Sfsmp    bool
8290024Sbde    IsWatchpointVacant(uint32_t hw_index);
83214346Sjhb
8479734Sjhb    bool
8578908Sjhb    SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index);
8678908Sjhb
87214346Sjhb    uint32_t
8828921Sfsmp    NumSupportedHardwareWatchpoints();
89214346Sjhb
90214346Sjhbprivate:
9128921Sfsmp    ProcessMonitor &
9217879Sbde    GetMonitor();
9317879Sbde};
94134398Smarcel
95134398Smarcel#endif
96134398Smarcel