1314564Sdim//===-- RegisterContextPOSIXCore_x86_64.h -----------------------*- C++ -*-===//
2257752Semaste//
3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim// See https://llvm.org/LICENSE.txt for license information.
5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6257752Semaste//
7296417Sdim//===----------------------------------------------------------------------===//
8257752Semaste
9296417Sdim#ifndef liblldb_RegisterContextCorePOSIX_x86_64_h_
10296417Sdim#define liblldb_RegisterContextCorePOSIX_x86_64_h_
11257752Semaste
12276479Sdim#include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
13327952Sdim#include "Plugins/Process/elf-core/RegisterUtilities.h"
14257752Semaste
15314564Sdimclass RegisterContextCorePOSIX_x86_64 : public RegisterContextPOSIX_x86 {
16257752Semastepublic:
17314564Sdim  RegisterContextCorePOSIX_x86_64(
18314564Sdim      lldb_private::Thread &thread,
19314564Sdim      lldb_private::RegisterInfoInterface *register_info,
20314564Sdim      const lldb_private::DataExtractor &gpregset,
21327952Sdim      llvm::ArrayRef<lldb_private::CoreNote> notes);
22257752Semaste
23314564Sdim  bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
24314564Sdim                    lldb_private::RegisterValue &value) override;
25257752Semaste
26314564Sdim  bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
27314564Sdim                     const lldb_private::RegisterValue &value) override;
28257752Semaste
29314564Sdim  bool ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override;
30257752Semaste
31314564Sdim  bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;
32257752Semaste
33314564Sdim  bool HardwareSingleStep(bool enable) override;
34257752Semaste
35257752Semasteprotected:
36314564Sdim  bool ReadGPR() override;
37257752Semaste
38314564Sdim  bool ReadFPR() override;
39257752Semaste
40314564Sdim  bool WriteGPR() override;
41257752Semaste
42314564Sdim  bool WriteFPR() override;
43257752Semaste
44257752Semasteprivate:
45314564Sdim  std::unique_ptr<uint8_t[]> m_gpregset;
46314564Sdim  std::unique_ptr<uint8_t[]> m_fpregset;
47257752Semaste};
48257752Semaste
49296417Sdim#endif // liblldb_RegisterContextCorePOSIX_x86_64_h_
50