LLDB  mainline
RegisterInfoPOSIX_arm64.h
Go to the documentation of this file.
1 //===-- RegisterInfoPOSIX_arm64.h -------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef liblldb_RegisterContextLinux_arm64_H_
10 #define liblldb_RegisterContextLinux_arm64_H_
11 
12 #include "RegisterInfoInterface.h"
14 #include "lldb/lldb-private.h"
15 
17 public:
18  // based on RegisterContextDarwin_arm64.h
19  struct GPR {
20  uint64_t x[29]; // x0-x28
21  uint64_t fp; // x29
22  uint64_t lr; // x30
23  uint64_t sp; // x31
24  uint64_t pc; // pc
25  uint32_t cpsr; // cpsr
26  };
27 
28  // based on RegisterContextDarwin_arm64.h
29  struct VReg {
30  uint8_t bytes[16];
31  };
32 
33  // based on RegisterContextDarwin_arm64.h
34  struct FPU {
35  VReg v[32];
38  };
39 
40  // based on RegisterContextDarwin_arm64.h
41  struct EXC {
42  uint64_t far; // Virtual Fault Address
43  uint32_t esr; // Exception syndrome
44  uint32_t exception; // number of arm exception token
45  };
46 
47  // based on RegisterContextDarwin_arm64.h
48  struct DBG {
49  uint64_t bvr[16];
50  uint64_t bcr[16];
51  uint64_t wvr[16];
52  uint64_t wcr[16];
53  uint64_t mdscr_el1;
54  };
55 
57 
58  size_t GetGPRSize() const override;
59 
60  const lldb_private::RegisterInfo *GetRegisterInfo() const override;
61 
62  uint32_t GetRegisterCount() const override;
63 
64 private:
65  const lldb_private::RegisterInfo *m_register_info_p;
66  uint32_t m_register_info_count;
67 };
68 
69 #endif
RegisterInfo interface to patch RegisterInfo structure for archs.
An architecture specification class.
Definition: ArchSpec.h:32
uint32_t GetRegisterCount() const override
RegisterInfoPOSIX_arm64(const lldb_private::ArchSpec &target_arch)
const lldb_private::RegisterInfo * GetRegisterInfo() const override
size_t GetGPRSize() const override