1 //===-- RegisterContextWindows_x86.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_RegisterContextWindows_x86_H_
11 #define liblldb_RegisterContextWindows_x86_H_
12 
13 #include "RegisterContextWindows.h"
14 #include "lldb/lldb-forward.h"
15 
16 namespace lldb_private {
17 
18 class Thread;
19 
20 class RegisterContextWindows_x86 : public RegisterContextWindows {
21 public:
22   //------------------------------------------------------------------
23   // Constructors and Destructors
24   //------------------------------------------------------------------
25   RegisterContextWindows_x86(Thread &thread, uint32_t concrete_frame_idx);
26 
27   virtual ~RegisterContextWindows_x86();
28 
29   //------------------------------------------------------------------
30   // Subclasses must override these functions
31   //------------------------------------------------------------------
32   size_t GetRegisterCount() override;
33 
34   const RegisterInfo *GetRegisterInfoAtIndex(size_t reg) override;
35 
36   size_t GetRegisterSetCount() override;
37 
38   const RegisterSet *GetRegisterSet(size_t reg_set) override;
39 
40   bool ReadRegister(const RegisterInfo *reg_info,
41                     RegisterValue &reg_value) override;
42 
43   bool WriteRegister(const RegisterInfo *reg_info,
44                      const RegisterValue &reg_value) override;
45 
46 private:
47   bool ReadRegisterHelper(DWORD flags_required, const char *reg_name,
48                           DWORD value, RegisterValue &reg_value) const;
49 };
50 }
51 
52 #endif // #ifndef liblldb_RegisterContextWindows_x86_H_
53