1 //===-- RegisterContextPOSIXProcessMonitor_x86.h ----------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_RegisterContextPOSIXProcessMonitor_x86_H_
11 #define liblldb_RegisterContextPOSIXProcessMonitor_x86_H_
13 #include "Plugins/Process/POSIX/RegisterContextPOSIX_x86.h"
15 class RegisterContextPOSIXProcessMonitor_x86_64:
16 public RegisterContextPOSIX_x86,
17 public POSIXBreakpointProtocol
20 RegisterContextPOSIXProcessMonitor_x86_64(lldb_private::Thread &thread,
21 uint32_t concrete_frame_idx,
22 RegisterInfoInterface *register_info);
37 // lldb_private::RegisterContext
39 ReadRegister(const unsigned reg, lldb_private::RegisterValue &value);
42 WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value);
45 ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
48 WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
51 ReadAllRegisterValues(lldb::DataBufferSP &data_sp);
54 WriteAllRegisterValues(const lldb::DataBufferSP &data_sp);
57 SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write);
60 ClearHardwareWatchpoint(uint32_t hw_index);
63 HardwareSingleStep(bool enable);
65 // POSIXBreakpointProtocol
67 UpdateAfterBreakpoint();
70 GetRegisterIndexFromOffset(unsigned offset);
73 IsWatchpointHit(uint32_t hw_index);
76 ClearWatchpointHits();
79 GetWatchpointAddress(uint32_t hw_index);
82 IsWatchpointVacant(uint32_t hw_index);
85 SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index);
88 NumSupportedHardwareWatchpoints();