1//===-- RegisterInfos_x86_64_with_base_shared.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#include "Plugins/Process/Utility/lldb-x86-register-enums.h"
10#include <stdint.h>
11
12#ifndef lldb_RegisterInfos_x86_64_with_base_shared_h
13#define lldb_RegisterInfos_x86_64_with_base_shared_h
14
15#include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h"
16
17namespace lldb_private {
18
19struct RegisterInfos_x86_64_with_base_shared {
20 static uint32_t g_contained_eax[];
21 static uint32_t g_contained_ebx[];
22 static uint32_t g_contained_ecx[];
23 static uint32_t g_contained_edx[];
24 static uint32_t g_contained_edi[];
25 static uint32_t g_contained_esi[];
26 static uint32_t g_contained_ebp[];
27 static uint32_t g_contained_esp[];
28
29 static uint32_t g_invalidate_eax[];
30 static uint32_t g_invalidate_ebx[];
31 static uint32_t g_invalidate_ecx[];
32 static uint32_t g_invalidate_edx[];
33 static uint32_t g_invalidate_edi[];
34 static uint32_t g_invalidate_esi[];
35 static uint32_t g_invalidate_ebp[];
36 static uint32_t g_invalidate_esp[];
37
38 static uint32_t g_contained_rax[];
39 static uint32_t g_contained_rbx[];
40 static uint32_t g_contained_rcx[];
41 static uint32_t g_contained_rdx[];
42 static uint32_t g_contained_rdi[];
43 static uint32_t g_contained_rsi[];
44 static uint32_t g_contained_rbp[];
45 static uint32_t g_contained_rsp[];
46 static uint32_t g_contained_r8[];
47 static uint32_t g_contained_r9[];
48 static uint32_t g_contained_r10[];
49 static uint32_t g_contained_r11[];
50 static uint32_t g_contained_r12[];
51 static uint32_t g_contained_r13[];
52 static uint32_t g_contained_r14[];
53 static uint32_t g_contained_r15[];
54
55 static uint32_t g_invalidate_rax[];
56 static uint32_t g_invalidate_rbx[];
57 static uint32_t g_invalidate_rcx[];
58 static uint32_t g_invalidate_rdx[];
59 static uint32_t g_invalidate_rdi[];
60 static uint32_t g_invalidate_rsi[];
61 static uint32_t g_invalidate_rbp[];
62 static uint32_t g_invalidate_rsp[];
63 static uint32_t g_invalidate_r8[];
64 static uint32_t g_invalidate_r9[];
65 static uint32_t g_invalidate_r10[];
66 static uint32_t g_invalidate_r11[];
67 static uint32_t g_invalidate_r12[];
68 static uint32_t g_invalidate_r13[];
69 static uint32_t g_invalidate_r14[];
70 static uint32_t g_invalidate_r15[];
71
72 static uint32_t g_contained_fip[];
73 static uint32_t g_contained_fdp[];
74
75 static uint32_t g_invalidate_fip[];
76 static uint32_t g_invalidate_fdp[];
77
78 static uint32_t g_contained_st0_32[];
79 static uint32_t g_contained_st1_32[];
80 static uint32_t g_contained_st2_32[];
81 static uint32_t g_contained_st3_32[];
82 static uint32_t g_contained_st4_32[];
83 static uint32_t g_contained_st5_32[];
84 static uint32_t g_contained_st6_32[];
85 static uint32_t g_contained_st7_32[];
86
87 static uint32_t g_invalidate_st0_32[];
88 static uint32_t g_invalidate_st1_32[];
89 static uint32_t g_invalidate_st2_32[];
90 static uint32_t g_invalidate_st3_32[];
91 static uint32_t g_invalidate_st4_32[];
92 static uint32_t g_invalidate_st5_32[];
93 static uint32_t g_invalidate_st6_32[];
94 static uint32_t g_invalidate_st7_32[];
95
96 static uint32_t g_contained_st0_64[];
97 static uint32_t g_contained_st1_64[];
98 static uint32_t g_contained_st2_64[];
99 static uint32_t g_contained_st3_64[];
100 static uint32_t g_contained_st4_64[];
101 static uint32_t g_contained_st5_64[];
102 static uint32_t g_contained_st6_64[];
103 static uint32_t g_contained_st7_64[];
104
105 static uint32_t g_invalidate_st0_64[];
106 static uint32_t g_invalidate_st1_64[];
107 static uint32_t g_invalidate_st2_64[];
108 static uint32_t g_invalidate_st3_64[];
109 static uint32_t g_invalidate_st4_64[];
110 static uint32_t g_invalidate_st5_64[];
111 static uint32_t g_invalidate_st6_64[];
112 static uint32_t g_invalidate_st7_64[];
113};
114
115struct RegInfo {
116 uint32_t num_registers;
117 uint32_t num_gpr_registers;
118 uint32_t num_fpr_registers;
119 uint32_t num_avx_registers;
120
121 uint32_t last_gpr;
122 uint32_t first_fpr;
123 uint32_t last_fpr;
124
125 uint32_t first_st;
126 uint32_t last_st;
127 uint32_t first_mm;
128 uint32_t last_mm;
129 uint32_t first_xmm;
130 uint32_t last_xmm;
131 uint32_t first_ymm;
132 uint32_t last_ymm;
133
134 uint32_t first_dr;
135 uint32_t gpr_flags;
136};
137
138RegInfo &GetRegInfoShared(llvm::Triple::ArchType arch_type, bool with_base);
139
140} // namespace lldb_private
141
142#endif // ifndef lldb_RegisterInfos_x86_64_with_base_shared_h
143

source code of lldb/source/Plugins/Process/Utility/RegisterInfos_x86_64_with_base_shared.h