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 "RegisterContextPOSIX.h"
14 #include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
16 class RegisterContextPOSIXProcessMonitor_x86_64:
17 public RegisterContextPOSIX_x86,
18 public POSIXBreakpointProtocol
21 RegisterContextPOSIXProcessMonitor_x86_64(lldb_private::Thread &thread,
22 uint32_t concrete_frame_idx,
23 lldb_private::RegisterInfoInterface *register_info);
38 // lldb_private::RegisterContext
40 ReadRegister(const unsigned reg, lldb_private::RegisterValue &value);
43 WriteRegister(const unsigned reg, const lldb_private::RegisterValue &value);
46 ReadRegister(const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
49 WriteRegister(const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
52 ReadAllRegisterValues(lldb::DataBufferSP &data_sp);
55 WriteAllRegisterValues(const lldb::DataBufferSP &data_sp);
58 SetHardwareWatchpoint(lldb::addr_t addr, size_t size, bool read, bool write);
61 ClearHardwareWatchpoint(uint32_t hw_index);
64 HardwareSingleStep(bool enable);
66 // POSIXBreakpointProtocol
68 UpdateAfterBreakpoint();
71 GetRegisterIndexFromOffset(unsigned offset);
74 IsWatchpointHit(uint32_t hw_index);
77 ClearWatchpointHits();
80 GetWatchpointAddress(uint32_t hw_index);
83 IsWatchpointVacant(uint32_t hw_index);
86 SetHardwareWatchpointWithIndex(lldb::addr_t addr, size_t size, bool read, bool write, uint32_t hw_index);
89 NumSupportedHardwareWatchpoints();
94 uint32_t m_fctrl_offset_in_userarea; // Offset of 'fctrl' in 'UserArea' Structure