1 //===-- RegisterContextPOSIXCore_x86_64.h -----------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef liblldb_RegisterContextCorePOSIX_x86_64_h_
11 #define liblldb_RegisterContextCorePOSIX_x86_64_h_
12 
13 #include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
14 #include "Plugins/Process/elf-core/RegisterUtilities.h"
15 
16 class RegisterContextCorePOSIX_x86_64 : public RegisterContextPOSIX_x86 {
17 public:
18   RegisterContextCorePOSIX_x86_64(
19       lldb_private::Thread &thread,
20       lldb_private::RegisterInfoInterface *register_info,
21       const lldb_private::DataExtractor &gpregset,
22       llvm::ArrayRef<lldb_private::CoreNote> notes);
23 
24   bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
25                     lldb_private::RegisterValue &value) override;
26 
27   bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
28                      const lldb_private::RegisterValue &value) override;
29 
30   bool ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override;
31 
32   bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;
33 
34   bool HardwareSingleStep(bool enable) override;
35 
36 protected:
37   bool ReadGPR() override;
38 
39   bool ReadFPR() override;
40 
41   bool WriteGPR() override;
42 
43   bool WriteFPR() override;
44 
45 private:
46   std::unique_ptr<uint8_t[]> m_gpregset;
47   std::unique_ptr<uint8_t[]> m_fpregset;
48 };
49 
50 #endif // liblldb_RegisterContextCorePOSIX_x86_64_h_
51