]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/source/Plugins/Process/Utility/RegisterContextLinux_arm.h
Upgrade to OpenSSH 6.9p1.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / source / Plugins / Process / Utility / RegisterContextLinux_arm.h
1 //===-- RegisterContextLinux_arm.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_RegisterContextLinux_arm_h_
11 #define liblldb_RegisterContextLinux_arm_h_
12
13 #include "lldb/lldb-private.h"
14 #include "lldb/Target/RegisterContext.h"
15 #include "RegisterContextPOSIX.h"
16 #include "RegisterInfoInterface.h"
17
18 class RegisterContextLinux_arm
19     : public lldb_private::RegisterInfoInterface
20 {
21 public:
22
23     struct GPR
24     {
25         uint32_t    r[16];  // R0-R15
26         uint32_t    cpsr;   // CPSR
27     };
28
29
30     struct QReg
31     {
32         uint8_t bytes[16];
33     };
34
35     struct FPU
36     {
37         union {
38             uint32_t s[32];
39             uint64_t d[32];
40             QReg     q[16];  // the 128-bit NEON registers
41         } floats;
42         uint32_t fpscr;
43     };
44     struct EXC
45     {
46         uint32_t    exception;
47         uint32_t    fsr; /* Fault status */
48         uint32_t    far; /* Virtual Fault Address */
49     };
50
51     struct DBG
52     {
53         uint32_t bvr[16];
54         uint32_t bcr[16];
55         uint32_t wvr[16];
56         uint32_t wcr[16];
57     };
58
59     RegisterContextLinux_arm(const lldb_private::ArchSpec &target_arch);
60
61     size_t
62     GetGPRSize() const override;
63
64     const lldb_private::RegisterInfo *
65     GetRegisterInfo() const override;
66
67     uint32_t
68     GetRegisterCount () const override;
69
70 private:
71     const lldb_private::RegisterInfo *m_register_info_p;
72     uint32_t m_register_info_count;
73 };
74
75 #endif  // liblldb_RegisterContextLinux_arm_h_
76