1*0eae32dcSDimitry Andric //===-- RegisterContextFreeBSDKernel_x86_64.h -------------------*- C++ -*-===//
2*0eae32dcSDimitry Andric //
3*0eae32dcSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0eae32dcSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*0eae32dcSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0eae32dcSDimitry Andric //
7*0eae32dcSDimitry Andric //===----------------------------------------------------------------------===//
8*0eae32dcSDimitry Andric 
9*0eae32dcSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_X86_64_H
10*0eae32dcSDimitry Andric #define LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_X86_64_H
11*0eae32dcSDimitry Andric 
12*0eae32dcSDimitry Andric #include "Plugins/Process/Utility/RegisterContextPOSIX_x86.h"
13*0eae32dcSDimitry Andric #include "Plugins/Process/elf-core/RegisterUtilities.h"
14*0eae32dcSDimitry Andric 
15*0eae32dcSDimitry Andric class RegisterContextFreeBSDKernel_x86_64 : public RegisterContextPOSIX_x86 {
16*0eae32dcSDimitry Andric public:
17*0eae32dcSDimitry Andric   RegisterContextFreeBSDKernel_x86_64(
18*0eae32dcSDimitry Andric       lldb_private::Thread &thread,
19*0eae32dcSDimitry Andric       lldb_private::RegisterInfoInterface *register_info,
20*0eae32dcSDimitry Andric       lldb::addr_t pcb_addr);
21*0eae32dcSDimitry Andric 
22*0eae32dcSDimitry Andric   bool ReadRegister(const lldb_private::RegisterInfo *reg_info,
23*0eae32dcSDimitry Andric                     lldb_private::RegisterValue &value) override;
24*0eae32dcSDimitry Andric 
25*0eae32dcSDimitry Andric   bool WriteRegister(const lldb_private::RegisterInfo *reg_info,
26*0eae32dcSDimitry Andric                      const lldb_private::RegisterValue &value) override;
27*0eae32dcSDimitry Andric 
28*0eae32dcSDimitry Andric protected:
29*0eae32dcSDimitry Andric   bool ReadGPR() override;
30*0eae32dcSDimitry Andric 
31*0eae32dcSDimitry Andric   bool ReadFPR() override;
32*0eae32dcSDimitry Andric 
33*0eae32dcSDimitry Andric   bool WriteGPR() override;
34*0eae32dcSDimitry Andric 
35*0eae32dcSDimitry Andric   bool WriteFPR() override;
36*0eae32dcSDimitry Andric 
37*0eae32dcSDimitry Andric private:
38*0eae32dcSDimitry Andric   lldb::addr_t m_pcb_addr;
39*0eae32dcSDimitry Andric };
40*0eae32dcSDimitry Andric 
41*0eae32dcSDimitry Andric #endif // LLDB_SOURCE_PLUGINS_PROCESS_FREEBSDKERNEL_REGISTERCONTEXTFREEBSDKERNEL_X86_64_H
42