60 lines · c
1//===-- RegisterContextWindows.h --------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef liblldb_RegisterContextWindows_H_10#define liblldb_RegisterContextWindows_H_11 12#include "lldb/Target/RegisterContext.h"13#include "lldb/lldb-forward.h"14 15namespace lldb_private {16 17class Thread;18 19class RegisterContextWindows : public lldb_private::RegisterContext {20public:21 // Constructors and Destructors22 RegisterContextWindows(Thread &thread, uint32_t concrete_frame_idx);23 24 virtual ~RegisterContextWindows();25 26 // Subclasses must override these functions27 void InvalidateAllRegisters() override;28 29 bool ReadAllRegisterValues(lldb::WritableDataBufferSP &data_sp) override;30 31 bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;32 33 uint32_t ConvertRegisterKindToRegisterNumber(lldb::RegisterKind kind,34 uint32_t num) override;35 36 bool HardwareSingleStep(bool enable) override;37 38 static constexpr uint32_t GetNumHardwareBreakpointSlots() {39 return NUM_HARDWARE_BREAKPOINT_SLOTS;40 }41 42 bool AddHardwareBreakpoint(uint32_t slot, lldb::addr_t address, uint32_t size,43 bool read, bool write);44 bool RemoveHardwareBreakpoint(uint32_t slot);45 46 uint32_t GetTriggeredHardwareBreakpointSlotId();47 48protected:49 static constexpr unsigned NUM_HARDWARE_BREAKPOINT_SLOTS = 4;50 51 virtual bool CacheAllRegisterValues();52 virtual bool ApplyAllRegisterValues();53 54 CONTEXT m_context;55 bool m_context_stale;56};57} // namespace lldb_private58 59#endif // #ifndef liblldb_RegisterContextWindows_H_60