1 //===-- RegisterContextPOSIXCore_arm.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_arm_h_
11 #define liblldb_RegisterContextCorePOSIX_arm_h_
12 
13 #include "Plugins/Process/Utility/RegisterContextPOSIX_arm.h"
14 #include "Plugins/Process/elf-core/RegisterUtilities.h"
15 #include "lldb/Utility/DataBufferHeap.h"
16 #include "lldb/Utility/DataExtractor.h"
17 
18 class RegisterContextCorePOSIX_arm : public RegisterContextPOSIX_arm {
19 public:
20   RegisterContextCorePOSIX_arm(
21       lldb_private::Thread &thread,
22       lldb_private::RegisterInfoInterface *register_info,
23       const lldb_private::DataExtractor &gpregset,
24       llvm::ArrayRef<lldb_private::CoreNote> notes);
25 
26   ~RegisterContextCorePOSIX_arm() override;
27 
28   bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
29                     lldb_private::RegisterValue &value) override;
30 
31   bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
32                      const lldb_private::RegisterValue &value) override;
33 
34   bool ReadAllRegisterValues(lldb::DataBufferSP &data_sp) override;
35 
36   bool WriteAllRegisterValues(const lldb::DataBufferSP &data_sp) override;
37 
38   bool HardwareSingleStep(bool enable) override;
39 
40 protected:
41   bool ReadGPR() override;
42 
43   bool ReadFPR() override;
44 
45   bool WriteGPR() override;
46 
47   bool WriteFPR() override;
48 
49 private:
50   lldb::DataBufferSP m_gpr_buffer;
51   lldb_private::DataExtractor m_gpr;
52 };
53 
54 #endif // liblldb_RegisterContextCorePOSIX_arm_h_
55