| //===-- RegisterInfoPOSIX_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_RegisterContextLinux_arm64_H_ |
| #define liblldb_RegisterContextLinux_arm64_H_ |
| |
| #include "RegisterInfoInterface.h" |
| #include "lldb/Target/RegisterContext.h" |
| #include "lldb/lldb-private.h" |
| |
| class RegisterInfoPOSIX_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; |
| }; |
| |
| RegisterInfoPOSIX_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 |