1061da546Spatrick //===-- NativeRegisterContextOpenBSD.h ---------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // The LLVM Compiler Infrastructure 4061da546Spatrick // 5061da546Spatrick // This file is distributed under the University of Illinois Open Source 6061da546Spatrick // License. See LICENSE.TXT for details. 7061da546Spatrick // 8061da546Spatrick //===----------------------------------------------------------------------===// 9061da546Spatrick 10061da546Spatrick #ifndef lldb_NativeRegisterContextOpenBSD_h 11061da546Spatrick #define lldb_NativeRegisterContextOpenBSD_h 12061da546Spatrick 13061da546Spatrick #include "lldb/Host/common/NativeThreadProtocol.h" 14061da546Spatrick 15061da546Spatrick #include "Plugins/Process/OpenBSD/NativeProcessOpenBSD.h" 16061da546Spatrick #include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h" 17061da546Spatrick 18061da546Spatrick namespace lldb_private { 19061da546Spatrick namespace process_openbsd { 20061da546Spatrick 21061da546Spatrick class NativeRegisterContextOpenBSD : public NativeRegisterContextRegisterInfo { 22061da546Spatrick public: 23061da546Spatrick NativeRegisterContextOpenBSD(NativeThreadProtocol &native_thread, 24061da546Spatrick RegisterInfoInterface *reg_info_interface_p); 25061da546Spatrick 26061da546Spatrick // This function is implemented in the NativeRegisterContextOpenBSD_* 27061da546Spatrick // subclasses to create a new instance of the host specific 28061da546Spatrick // NativeRegisterContextOpenBSD. The implementations can't collide as only one 29061da546Spatrick // NativeRegisterContextOpenBSD_* variant should be compiled into the final 30061da546Spatrick // executable. 31*0f45e296Smortimer static std::unique_ptr<NativeRegisterContextOpenBSD> 32061da546Spatrick CreateHostNativeRegisterContextOpenBSD(const ArchSpec &target_arch, 33061da546Spatrick NativeThreadProtocol &native_thread); 34061da546Spatrick 35061da546Spatrick protected: 36061da546Spatrick virtual Status ReadGPR(); 37061da546Spatrick virtual Status WriteGPR(); 38061da546Spatrick 39061da546Spatrick virtual Status ReadFPR(); 40061da546Spatrick virtual Status WriteFPR(); 41061da546Spatrick GetGPRBuffer()42061da546Spatrick virtual void *GetGPRBuffer() { return nullptr; } GetGPRSize()43061da546Spatrick virtual size_t GetGPRSize() { 44061da546Spatrick return GetRegisterInfoInterface().GetGPRSize(); 45061da546Spatrick } 46061da546Spatrick GetFPRBuffer()47061da546Spatrick virtual void *GetFPRBuffer() { return nullptr; } GetFPRSize()48061da546Spatrick virtual size_t GetFPRSize() { return 0; } 49061da546Spatrick 50061da546Spatrick virtual Status DoReadGPR(void *buf); 51061da546Spatrick virtual Status DoWriteGPR(void *buf); 52061da546Spatrick 53061da546Spatrick virtual Status DoReadFPR(void *buf); 54061da546Spatrick virtual Status DoWriteFPR(void *buf); 55061da546Spatrick 56061da546Spatrick virtual NativeProcessOpenBSD &GetProcess(); 57061da546Spatrick virtual ::pid_t GetProcessPid(); 58061da546Spatrick }; 59061da546Spatrick 60061da546Spatrick } // namespace process_openbsd 61061da546Spatrick } // namespace lldb_private 62061da546Spatrick 63061da546Spatrick #endif // #ifndef lldb_NativeRegisterContextOpenBSD_h 64