| //===-- RegisterContextFreeBSD_arm64.h --------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef liblldb_RegisterContextFreeBSD_arm64_H_ |
| #define liblldb_RegisterContextFreeBSD_arm64_H_ |
| |
| #include "RegisterInfoInterface.h" |
| |
| class RegisterContextFreeBSD_arm64: |
| public lldb_private::RegisterInfoInterface |
| { |
| public: |
| // based on RegisterContextDarwin_arm64.h |
| struct GPR |
| { |
| uint64_t x[29]; // x0-x28 |
| uint64_t fp; // x29 |
| uint64_t lr; // x30 |
| uint64_t sp; // x31 |
| uint64_t pc; // pc |
| uint32_t cpsr; // cpsr |
| }; |
| |
| // based on RegisterContextDarwin_arm64.h |
| struct VReg |
| { |
| uint8_t bytes[16]; |
| }; |
| |
| // based on RegisterContextDarwin_arm64.h |
| struct FPU |
| { |
| VReg v[32]; |
| uint32_t fpsr; |
| uint32_t fpcr; |
| }; |
| |
| // based on RegisterContextDarwin_arm64.h |
| struct EXC |
| { |
| uint64_t far; // Virtual Fault Address |
| uint32_t esr; // Exception syndrome |
| uint32_t exception; // number of arm exception token |
| }; |
| |
| // based on RegisterContextDarwin_arm64.h |
| struct DBG |
| { |
| uint64_t bvr[16]; |
| uint64_t bcr[16]; |
| uint64_t wvr[16]; |
| uint64_t wcr[16]; |
| uint64_t mdscr_el1; |
| }; |
| |
| RegisterContextFreeBSD_arm64(const lldb_private::ArchSpec &target_arch); |
| |
| size_t |
| GetGPRSize() const override; |
| |
| const lldb_private::RegisterInfo * |
| GetRegisterInfo() const override; |
| |
| uint32_t |
| GetRegisterCount () const override; |
| |
| private: |
| const lldb_private::RegisterInfo *m_register_info_p; |
| uint32_t m_register_info_count; |
| }; |
| |
| #endif |