annotate lldb/examples/python/x86_64_qemu_target_definition.py @ 212:50b3abffaea6

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 11 Jun 2021 10:19:35 +0900
parents 2e18cbf3894f
children 1f2b6ac9f198
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
207
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
1 #!/usr/bin/env python
150
anatofuz
parents:
diff changeset
2 #===-- x86_64_qemu_target_definition.py -----------------------------*- C++ -*-===//
anatofuz
parents:
diff changeset
3 #
anatofuz
parents:
diff changeset
4 # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
5 # See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
6 # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
7 #
anatofuz
parents:
diff changeset
8 #===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 #----------------------------------------------------------------------
anatofuz
parents:
diff changeset
11 # DESCRIPTION
anatofuz
parents:
diff changeset
12 #
anatofuz
parents:
diff changeset
13 # This file can be used with the following setting:
anatofuz
parents:
diff changeset
14 # plugin.process.gdb-remote.target-definition-file
anatofuz
parents:
diff changeset
15 # This setting should be used when you are trying to connect to a
anatofuz
parents:
diff changeset
16 # remote GDB server that doesn't support any of the register discovery
anatofuz
parents:
diff changeset
17 # packets that LLDB normally uses.
anatofuz
parents:
diff changeset
18 #
anatofuz
parents:
diff changeset
19 # Why is this necessary? LLDB doesn't require a new build of LLDB that
anatofuz
parents:
diff changeset
20 # targets each new architecture you will debug with. Instead, all
anatofuz
parents:
diff changeset
21 # architectures are supported and LLDB relies on extra GDB server
anatofuz
parents:
diff changeset
22 # packets to discover the target we are connecting to so that is can
anatofuz
parents:
diff changeset
23 # show the right registers for each target. This allows the remote stub
anatofuz
parents:
diff changeset
24 # to change and add new registers without requiring a new LLDB build
anatofuz
parents:
diff changeset
25 # just so we can see new registers.
anatofuz
parents:
diff changeset
26 #
anatofuz
parents:
diff changeset
27 # This file implements the x86_64 registers for the user mode qemu on linux.
anatofuz
parents:
diff changeset
28 # The only difference with the Linux file is the absense of orig_rax register.
anatofuz
parents:
diff changeset
29 #
anatofuz
parents:
diff changeset
30 # USAGE
anatofuz
parents:
diff changeset
31 #
anatofuz
parents:
diff changeset
32 # (lldb) settings set plugin.process.gdb-remote.target-definition-file /path/to/x86_64_qemu_target_definition.py
anatofuz
parents:
diff changeset
33 # (lldb) gdb-remote other.baz.com:1234
anatofuz
parents:
diff changeset
34 #
anatofuz
parents:
diff changeset
35 # The target definition file will get used if and only if the
anatofuz
parents:
diff changeset
36 # qRegisterInfo packets are not supported when connecting to a remote
anatofuz
parents:
diff changeset
37 # GDB stub.
anatofuz
parents:
diff changeset
38 #----------------------------------------------------------------------
anatofuz
parents:
diff changeset
39 from lldb import *
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 # Compiler and DWARF register numbers
anatofuz
parents:
diff changeset
42 name_to_gcc_dwarf_regnum = {
anatofuz
parents:
diff changeset
43 'rax': 0,
anatofuz
parents:
diff changeset
44 'rdx': 1,
anatofuz
parents:
diff changeset
45 'rcx': 2,
anatofuz
parents:
diff changeset
46 'rbx': 3,
anatofuz
parents:
diff changeset
47 'rsi': 4,
anatofuz
parents:
diff changeset
48 'rdi': 5,
anatofuz
parents:
diff changeset
49 'rbp': 6,
anatofuz
parents:
diff changeset
50 'rsp': 7,
anatofuz
parents:
diff changeset
51 'r8': 8,
anatofuz
parents:
diff changeset
52 'r9': 9,
anatofuz
parents:
diff changeset
53 'r10': 10,
anatofuz
parents:
diff changeset
54 'r11': 11,
anatofuz
parents:
diff changeset
55 'r12': 12,
anatofuz
parents:
diff changeset
56 'r13': 13,
anatofuz
parents:
diff changeset
57 'r14': 14,
anatofuz
parents:
diff changeset
58 'r15': 15,
anatofuz
parents:
diff changeset
59 'rip': 16,
anatofuz
parents:
diff changeset
60 'xmm0': 17,
anatofuz
parents:
diff changeset
61 'xmm1': 18,
anatofuz
parents:
diff changeset
62 'xmm2': 19,
anatofuz
parents:
diff changeset
63 'xmm3': 20,
anatofuz
parents:
diff changeset
64 'xmm4': 21,
anatofuz
parents:
diff changeset
65 'xmm5': 22,
anatofuz
parents:
diff changeset
66 'xmm6': 23,
anatofuz
parents:
diff changeset
67 'xmm7': 24,
anatofuz
parents:
diff changeset
68 'xmm8': 25,
anatofuz
parents:
diff changeset
69 'xmm9': 26,
anatofuz
parents:
diff changeset
70 'xmm10': 27,
anatofuz
parents:
diff changeset
71 'xmm11': 28,
anatofuz
parents:
diff changeset
72 'xmm12': 29,
anatofuz
parents:
diff changeset
73 'xmm13': 30,
anatofuz
parents:
diff changeset
74 'xmm14': 31,
anatofuz
parents:
diff changeset
75 'xmm15': 32,
anatofuz
parents:
diff changeset
76 'stmm0': 33,
anatofuz
parents:
diff changeset
77 'stmm1': 34,
anatofuz
parents:
diff changeset
78 'stmm2': 35,
anatofuz
parents:
diff changeset
79 'stmm3': 36,
anatofuz
parents:
diff changeset
80 'stmm4': 37,
anatofuz
parents:
diff changeset
81 'stmm5': 38,
anatofuz
parents:
diff changeset
82 'stmm6': 39,
anatofuz
parents:
diff changeset
83 'stmm7': 30,
anatofuz
parents:
diff changeset
84 'ymm0': 41,
anatofuz
parents:
diff changeset
85 'ymm1': 42,
anatofuz
parents:
diff changeset
86 'ymm2': 43,
anatofuz
parents:
diff changeset
87 'ymm3': 44,
anatofuz
parents:
diff changeset
88 'ymm4': 45,
anatofuz
parents:
diff changeset
89 'ymm5': 46,
anatofuz
parents:
diff changeset
90 'ymm6': 47,
anatofuz
parents:
diff changeset
91 'ymm7': 48,
anatofuz
parents:
diff changeset
92 'ymm8': 49,
anatofuz
parents:
diff changeset
93 'ymm9': 40,
anatofuz
parents:
diff changeset
94 'ymm10': 41,
anatofuz
parents:
diff changeset
95 'ymm11': 42,
anatofuz
parents:
diff changeset
96 'ymm12': 43,
anatofuz
parents:
diff changeset
97 'ymm13': 44,
anatofuz
parents:
diff changeset
98 'ymm14': 45,
anatofuz
parents:
diff changeset
99 'ymm15': 46
anatofuz
parents:
diff changeset
100 }
anatofuz
parents:
diff changeset
101
anatofuz
parents:
diff changeset
102 name_to_gdb_regnum = {
anatofuz
parents:
diff changeset
103 'rax': 0,
anatofuz
parents:
diff changeset
104 'rbx': 1,
anatofuz
parents:
diff changeset
105 'rcx': 2,
anatofuz
parents:
diff changeset
106 'rdx': 3,
anatofuz
parents:
diff changeset
107 'rsi': 4,
anatofuz
parents:
diff changeset
108 'rdi': 5,
anatofuz
parents:
diff changeset
109 'rbp': 6,
anatofuz
parents:
diff changeset
110 'rsp': 7,
anatofuz
parents:
diff changeset
111 'r8': 8,
anatofuz
parents:
diff changeset
112 'r9': 9,
anatofuz
parents:
diff changeset
113 'r10': 10,
anatofuz
parents:
diff changeset
114 'r11': 11,
anatofuz
parents:
diff changeset
115 'r12': 12,
anatofuz
parents:
diff changeset
116 'r13': 13,
anatofuz
parents:
diff changeset
117 'r14': 14,
anatofuz
parents:
diff changeset
118 'r15': 15,
anatofuz
parents:
diff changeset
119 'rip': 16,
anatofuz
parents:
diff changeset
120 'rflags': 17,
anatofuz
parents:
diff changeset
121 'cs': 18,
anatofuz
parents:
diff changeset
122 'ss': 19,
anatofuz
parents:
diff changeset
123 'ds': 20,
anatofuz
parents:
diff changeset
124 'es': 21,
anatofuz
parents:
diff changeset
125 'fs': 22,
anatofuz
parents:
diff changeset
126 'gs': 23,
anatofuz
parents:
diff changeset
127 'stmm0': 24,
anatofuz
parents:
diff changeset
128 'stmm1': 25,
anatofuz
parents:
diff changeset
129 'stmm2': 26,
anatofuz
parents:
diff changeset
130 'stmm3': 27,
anatofuz
parents:
diff changeset
131 'stmm4': 28,
anatofuz
parents:
diff changeset
132 'stmm5': 29,
anatofuz
parents:
diff changeset
133 'stmm6': 30,
anatofuz
parents:
diff changeset
134 'stmm7': 31,
anatofuz
parents:
diff changeset
135 'fctrl': 32,
anatofuz
parents:
diff changeset
136 'fstat': 33,
anatofuz
parents:
diff changeset
137 'ftag': 34,
anatofuz
parents:
diff changeset
138 'fiseg': 35,
anatofuz
parents:
diff changeset
139 'fioff': 36,
anatofuz
parents:
diff changeset
140 'foseg': 37,
anatofuz
parents:
diff changeset
141 'fooff': 38,
anatofuz
parents:
diff changeset
142 'fop': 39,
anatofuz
parents:
diff changeset
143 'xmm0': 40,
anatofuz
parents:
diff changeset
144 'xmm1': 41,
anatofuz
parents:
diff changeset
145 'xmm2': 42,
anatofuz
parents:
diff changeset
146 'xmm3': 43,
anatofuz
parents:
diff changeset
147 'xmm4': 44,
anatofuz
parents:
diff changeset
148 'xmm5': 45,
anatofuz
parents:
diff changeset
149 'xmm6': 46,
anatofuz
parents:
diff changeset
150 'xmm7': 47,
anatofuz
parents:
diff changeset
151 'xmm8': 48,
anatofuz
parents:
diff changeset
152 'xmm9': 49,
anatofuz
parents:
diff changeset
153 'xmm10': 50,
anatofuz
parents:
diff changeset
154 'xmm11': 51,
anatofuz
parents:
diff changeset
155 'xmm12': 52,
anatofuz
parents:
diff changeset
156 'xmm13': 53,
anatofuz
parents:
diff changeset
157 'xmm14': 54,
anatofuz
parents:
diff changeset
158 'xmm15': 55,
anatofuz
parents:
diff changeset
159 'mxcsr': 56,
anatofuz
parents:
diff changeset
160 'ymm0': 57,
anatofuz
parents:
diff changeset
161 'ymm1': 58,
anatofuz
parents:
diff changeset
162 'ymm2': 59,
anatofuz
parents:
diff changeset
163 'ymm3': 60,
anatofuz
parents:
diff changeset
164 'ymm4': 61,
anatofuz
parents:
diff changeset
165 'ymm5': 62,
anatofuz
parents:
diff changeset
166 'ymm6': 63,
anatofuz
parents:
diff changeset
167 'ymm7': 64,
anatofuz
parents:
diff changeset
168 'ymm8': 65,
anatofuz
parents:
diff changeset
169 'ymm9': 66,
anatofuz
parents:
diff changeset
170 'ymm10': 67,
anatofuz
parents:
diff changeset
171 'ymm11': 68,
anatofuz
parents:
diff changeset
172 'ymm12': 69,
anatofuz
parents:
diff changeset
173 'ymm13': 70,
anatofuz
parents:
diff changeset
174 'ymm14': 71,
anatofuz
parents:
diff changeset
175 'ymm15': 72
anatofuz
parents:
diff changeset
176 }
anatofuz
parents:
diff changeset
177
anatofuz
parents:
diff changeset
178 name_to_generic_regnum = {
anatofuz
parents:
diff changeset
179 'rip': LLDB_REGNUM_GENERIC_PC,
anatofuz
parents:
diff changeset
180 'rsp': LLDB_REGNUM_GENERIC_SP,
anatofuz
parents:
diff changeset
181 'rbp': LLDB_REGNUM_GENERIC_FP,
anatofuz
parents:
diff changeset
182 'rdi': LLDB_REGNUM_GENERIC_ARG1,
anatofuz
parents:
diff changeset
183 'rsi': LLDB_REGNUM_GENERIC_ARG2,
anatofuz
parents:
diff changeset
184 'rdx': LLDB_REGNUM_GENERIC_ARG3,
anatofuz
parents:
diff changeset
185 'rcx': LLDB_REGNUM_GENERIC_ARG4,
anatofuz
parents:
diff changeset
186 'r8': LLDB_REGNUM_GENERIC_ARG5,
anatofuz
parents:
diff changeset
187 'r9': LLDB_REGNUM_GENERIC_ARG6
anatofuz
parents:
diff changeset
188 }
anatofuz
parents:
diff changeset
189
anatofuz
parents:
diff changeset
190
anatofuz
parents:
diff changeset
191 def get_reg_num(reg_num_dict, reg_name):
anatofuz
parents:
diff changeset
192 if reg_name in reg_num_dict:
anatofuz
parents:
diff changeset
193 return reg_num_dict[reg_name]
anatofuz
parents:
diff changeset
194 return LLDB_INVALID_REGNUM
anatofuz
parents:
diff changeset
195
anatofuz
parents:
diff changeset
196 x86_64_register_infos = [
anatofuz
parents:
diff changeset
197 {'name': 'rax',
anatofuz
parents:
diff changeset
198 'set': 0,
anatofuz
parents:
diff changeset
199 'bitsize': 64,
anatofuz
parents:
diff changeset
200 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
201 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
202 {'name': 'rbx',
anatofuz
parents:
diff changeset
203 'set': 0,
anatofuz
parents:
diff changeset
204 'bitsize': 64,
anatofuz
parents:
diff changeset
205 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
206 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
207 {'name': 'rcx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
208 'format': eFormatAddressInfo, 'alt-name': 'arg4'},
anatofuz
parents:
diff changeset
209 {'name': 'rdx', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
210 'format': eFormatAddressInfo, 'alt-name': 'arg3'},
anatofuz
parents:
diff changeset
211 {'name': 'rsi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
212 'format': eFormatAddressInfo, 'alt-name': 'arg2'},
anatofuz
parents:
diff changeset
213 {'name': 'rdi', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
214 'format': eFormatAddressInfo, 'alt-name': 'arg1'},
anatofuz
parents:
diff changeset
215 {'name': 'rbp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
216 'format': eFormatAddressInfo, 'alt-name': 'fp'},
anatofuz
parents:
diff changeset
217 {'name': 'rsp', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
218 'format': eFormatAddressInfo, 'alt-name': 'sp'},
anatofuz
parents:
diff changeset
219 {'name': 'r8', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
220 'format': eFormatAddressInfo, 'alt-name': 'arg5'},
anatofuz
parents:
diff changeset
221 {'name': 'r9', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
222 'format': eFormatAddressInfo, 'alt-name': 'arg6'},
anatofuz
parents:
diff changeset
223 {'name': 'r10',
anatofuz
parents:
diff changeset
224 'set': 0,
anatofuz
parents:
diff changeset
225 'bitsize': 64,
anatofuz
parents:
diff changeset
226 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
227 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
228 {'name': 'r11',
anatofuz
parents:
diff changeset
229 'set': 0,
anatofuz
parents:
diff changeset
230 'bitsize': 64,
anatofuz
parents:
diff changeset
231 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
232 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
233 {'name': 'r12',
anatofuz
parents:
diff changeset
234 'set': 0,
anatofuz
parents:
diff changeset
235 'bitsize': 64,
anatofuz
parents:
diff changeset
236 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
237 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
238 {'name': 'r13',
anatofuz
parents:
diff changeset
239 'set': 0,
anatofuz
parents:
diff changeset
240 'bitsize': 64,
anatofuz
parents:
diff changeset
241 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
242 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
243 {'name': 'r14',
anatofuz
parents:
diff changeset
244 'set': 0,
anatofuz
parents:
diff changeset
245 'bitsize': 64,
anatofuz
parents:
diff changeset
246 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
247 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
248 {'name': 'r15',
anatofuz
parents:
diff changeset
249 'set': 0,
anatofuz
parents:
diff changeset
250 'bitsize': 64,
anatofuz
parents:
diff changeset
251 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
252 'format': eFormatAddressInfo},
anatofuz
parents:
diff changeset
253 {'name': 'rip', 'set': 0, 'bitsize': 64, 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
254 'format': eFormatAddressInfo, 'alt-name': 'pc'},
anatofuz
parents:
diff changeset
255 {'name': 'rflags', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
256 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
257 {'name': 'cs', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
258 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
259 {'name': 'ss', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
260 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
261 {'name': 'ds', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
262 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
263 {'name': 'es', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
264 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
265 {'name': 'fs', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
266 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
267 {'name': 'gs', 'set': 0, 'bitsize': 32,
anatofuz
parents:
diff changeset
268 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
269 {'name': 'stmm0',
anatofuz
parents:
diff changeset
270 'set': 1,
anatofuz
parents:
diff changeset
271 'bitsize': 80,
anatofuz
parents:
diff changeset
272 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
273 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
274 {'name': 'stmm1',
anatofuz
parents:
diff changeset
275 'set': 1,
anatofuz
parents:
diff changeset
276 'bitsize': 80,
anatofuz
parents:
diff changeset
277 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
278 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
279 {'name': 'stmm2',
anatofuz
parents:
diff changeset
280 'set': 1,
anatofuz
parents:
diff changeset
281 'bitsize': 80,
anatofuz
parents:
diff changeset
282 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
283 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
284 {'name': 'stmm3',
anatofuz
parents:
diff changeset
285 'set': 1,
anatofuz
parents:
diff changeset
286 'bitsize': 80,
anatofuz
parents:
diff changeset
287 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
288 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
289 {'name': 'stmm4',
anatofuz
parents:
diff changeset
290 'set': 1,
anatofuz
parents:
diff changeset
291 'bitsize': 80,
anatofuz
parents:
diff changeset
292 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
293 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
294 {'name': 'stmm5',
anatofuz
parents:
diff changeset
295 'set': 1,
anatofuz
parents:
diff changeset
296 'bitsize': 80,
anatofuz
parents:
diff changeset
297 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
298 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
299 {'name': 'stmm6',
anatofuz
parents:
diff changeset
300 'set': 1,
anatofuz
parents:
diff changeset
301 'bitsize': 80,
anatofuz
parents:
diff changeset
302 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
303 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
304 {'name': 'stmm7',
anatofuz
parents:
diff changeset
305 'set': 1,
anatofuz
parents:
diff changeset
306 'bitsize': 80,
anatofuz
parents:
diff changeset
307 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
308 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
309 {'name': 'fctrl', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
310 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
311 {'name': 'fstat', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
312 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
313 {'name': 'ftag', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
314 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
315 {'name': 'fiseg', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
316 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
317 {'name': 'fioff', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
318 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
319 {'name': 'foseg', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
320 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
321 {'name': 'fooff', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
322 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
323 {'name': 'fop', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
324 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
325 {'name': 'xmm0',
anatofuz
parents:
diff changeset
326 'set': 1,
anatofuz
parents:
diff changeset
327 'bitsize': 128,
anatofuz
parents:
diff changeset
328 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
329 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
330 {'name': 'xmm1',
anatofuz
parents:
diff changeset
331 'set': 1,
anatofuz
parents:
diff changeset
332 'bitsize': 128,
anatofuz
parents:
diff changeset
333 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
334 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
335 {'name': 'xmm2',
anatofuz
parents:
diff changeset
336 'set': 1,
anatofuz
parents:
diff changeset
337 'bitsize': 128,
anatofuz
parents:
diff changeset
338 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
339 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
340 {'name': 'xmm3',
anatofuz
parents:
diff changeset
341 'set': 1,
anatofuz
parents:
diff changeset
342 'bitsize': 128,
anatofuz
parents:
diff changeset
343 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
344 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
345 {'name': 'xmm4',
anatofuz
parents:
diff changeset
346 'set': 1,
anatofuz
parents:
diff changeset
347 'bitsize': 128,
anatofuz
parents:
diff changeset
348 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
349 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
350 {'name': 'xmm5',
anatofuz
parents:
diff changeset
351 'set': 1,
anatofuz
parents:
diff changeset
352 'bitsize': 128,
anatofuz
parents:
diff changeset
353 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
354 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
355 {'name': 'xmm6',
anatofuz
parents:
diff changeset
356 'set': 1,
anatofuz
parents:
diff changeset
357 'bitsize': 128,
anatofuz
parents:
diff changeset
358 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
359 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
360 {'name': 'xmm7',
anatofuz
parents:
diff changeset
361 'set': 1,
anatofuz
parents:
diff changeset
362 'bitsize': 128,
anatofuz
parents:
diff changeset
363 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
364 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
365 {'name': 'xmm8',
anatofuz
parents:
diff changeset
366 'set': 1,
anatofuz
parents:
diff changeset
367 'bitsize': 128,
anatofuz
parents:
diff changeset
368 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
369 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
370 {'name': 'xmm9',
anatofuz
parents:
diff changeset
371 'set': 1,
anatofuz
parents:
diff changeset
372 'bitsize': 128,
anatofuz
parents:
diff changeset
373 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
374 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
375 {'name': 'xmm10',
anatofuz
parents:
diff changeset
376 'set': 1,
anatofuz
parents:
diff changeset
377 'bitsize': 128,
anatofuz
parents:
diff changeset
378 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
379 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
380 {'name': 'xmm11',
anatofuz
parents:
diff changeset
381 'set': 1,
anatofuz
parents:
diff changeset
382 'bitsize': 128,
anatofuz
parents:
diff changeset
383 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
384 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
385 {'name': 'xmm12',
anatofuz
parents:
diff changeset
386 'set': 1,
anatofuz
parents:
diff changeset
387 'bitsize': 128,
anatofuz
parents:
diff changeset
388 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
389 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
390 {'name': 'xmm13',
anatofuz
parents:
diff changeset
391 'set': 1,
anatofuz
parents:
diff changeset
392 'bitsize': 128,
anatofuz
parents:
diff changeset
393 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
394 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
395 {'name': 'xmm14',
anatofuz
parents:
diff changeset
396 'set': 1,
anatofuz
parents:
diff changeset
397 'bitsize': 128,
anatofuz
parents:
diff changeset
398 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
399 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
400 {'name': 'xmm15',
anatofuz
parents:
diff changeset
401 'set': 1,
anatofuz
parents:
diff changeset
402 'bitsize': 128,
anatofuz
parents:
diff changeset
403 'encoding': eEncodingVector,
anatofuz
parents:
diff changeset
404 'format': eFormatVectorOfUInt8},
anatofuz
parents:
diff changeset
405 {'name': 'mxcsr', 'set': 1, 'bitsize': 32,
anatofuz
parents:
diff changeset
406 'encoding': eEncodingUint, 'format': eFormatHex},
anatofuz
parents:
diff changeset
407 # Registers that are contained in or composed of one of more other
anatofuz
parents:
diff changeset
408 # registers
anatofuz
parents:
diff changeset
409 {'name': 'eax',
anatofuz
parents:
diff changeset
410 'set': 0,
anatofuz
parents:
diff changeset
411 'bitsize': 32,
anatofuz
parents:
diff changeset
412 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
413 'format': eFormatHex,
anatofuz
parents:
diff changeset
414 'slice': 'rax[31:0]'},
anatofuz
parents:
diff changeset
415 {'name': 'ebx',
anatofuz
parents:
diff changeset
416 'set': 0,
anatofuz
parents:
diff changeset
417 'bitsize': 32,
anatofuz
parents:
diff changeset
418 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
419 'format': eFormatHex,
anatofuz
parents:
diff changeset
420 'slice': 'rbx[31:0]'},
anatofuz
parents:
diff changeset
421 {'name': 'ecx',
anatofuz
parents:
diff changeset
422 'set': 0,
anatofuz
parents:
diff changeset
423 'bitsize': 32,
anatofuz
parents:
diff changeset
424 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
425 'format': eFormatHex,
anatofuz
parents:
diff changeset
426 'slice': 'rcx[31:0]'},
anatofuz
parents:
diff changeset
427 {'name': 'edx',
anatofuz
parents:
diff changeset
428 'set': 0,
anatofuz
parents:
diff changeset
429 'bitsize': 32,
anatofuz
parents:
diff changeset
430 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
431 'format': eFormatHex,
anatofuz
parents:
diff changeset
432 'slice': 'rdx[31:0]'},
anatofuz
parents:
diff changeset
433 {'name': 'edi',
anatofuz
parents:
diff changeset
434 'set': 0,
anatofuz
parents:
diff changeset
435 'bitsize': 32,
anatofuz
parents:
diff changeset
436 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
437 'format': eFormatHex,
anatofuz
parents:
diff changeset
438 'slice': 'rdi[31:0]'},
anatofuz
parents:
diff changeset
439 {'name': 'esi',
anatofuz
parents:
diff changeset
440 'set': 0,
anatofuz
parents:
diff changeset
441 'bitsize': 32,
anatofuz
parents:
diff changeset
442 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
443 'format': eFormatHex,
anatofuz
parents:
diff changeset
444 'slice': 'rsi[31:0]'},
anatofuz
parents:
diff changeset
445 {'name': 'ebp',
anatofuz
parents:
diff changeset
446 'set': 0,
anatofuz
parents:
diff changeset
447 'bitsize': 32,
anatofuz
parents:
diff changeset
448 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
449 'format': eFormatHex,
anatofuz
parents:
diff changeset
450 'slice': 'rbp[31:0]'},
anatofuz
parents:
diff changeset
451 {'name': 'esp',
anatofuz
parents:
diff changeset
452 'set': 0,
anatofuz
parents:
diff changeset
453 'bitsize': 32,
anatofuz
parents:
diff changeset
454 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
455 'format': eFormatHex,
anatofuz
parents:
diff changeset
456 'slice': 'rsp[31:0]'},
anatofuz
parents:
diff changeset
457 {'name': 'r8d',
anatofuz
parents:
diff changeset
458 'set': 0,
anatofuz
parents:
diff changeset
459 'bitsize': 32,
anatofuz
parents:
diff changeset
460 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
461 'format': eFormatHex,
anatofuz
parents:
diff changeset
462 'slice': 'r8[31:0]'},
anatofuz
parents:
diff changeset
463 {'name': 'r9d',
anatofuz
parents:
diff changeset
464 'set': 0,
anatofuz
parents:
diff changeset
465 'bitsize': 32,
anatofuz
parents:
diff changeset
466 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
467 'format': eFormatHex,
anatofuz
parents:
diff changeset
468 'slice': 'r9[31:0]'},
anatofuz
parents:
diff changeset
469 {'name': 'r10d',
anatofuz
parents:
diff changeset
470 'set': 0,
anatofuz
parents:
diff changeset
471 'bitsize': 32,
anatofuz
parents:
diff changeset
472 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
473 'format': eFormatHex,
anatofuz
parents:
diff changeset
474 'slice': 'r10[31:0]'},
anatofuz
parents:
diff changeset
475 {'name': 'r11d',
anatofuz
parents:
diff changeset
476 'set': 0,
anatofuz
parents:
diff changeset
477 'bitsize': 32,
anatofuz
parents:
diff changeset
478 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
479 'format': eFormatHex,
anatofuz
parents:
diff changeset
480 'slice': 'r11[31:0]'},
anatofuz
parents:
diff changeset
481 {'name': 'r12d',
anatofuz
parents:
diff changeset
482 'set': 0,
anatofuz
parents:
diff changeset
483 'bitsize': 32,
anatofuz
parents:
diff changeset
484 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
485 'format': eFormatHex,
anatofuz
parents:
diff changeset
486 'slice': 'r12[31:0]'},
anatofuz
parents:
diff changeset
487 {'name': 'r13d',
anatofuz
parents:
diff changeset
488 'set': 0,
anatofuz
parents:
diff changeset
489 'bitsize': 32,
anatofuz
parents:
diff changeset
490 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
491 'format': eFormatHex,
anatofuz
parents:
diff changeset
492 'slice': 'r13[31:0]'},
anatofuz
parents:
diff changeset
493 {'name': 'r14d',
anatofuz
parents:
diff changeset
494 'set': 0,
anatofuz
parents:
diff changeset
495 'bitsize': 32,
anatofuz
parents:
diff changeset
496 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
497 'format': eFormatHex,
anatofuz
parents:
diff changeset
498 'slice': 'r14[31:0]'},
anatofuz
parents:
diff changeset
499 {'name': 'r15d',
anatofuz
parents:
diff changeset
500 'set': 0,
anatofuz
parents:
diff changeset
501 'bitsize': 32,
anatofuz
parents:
diff changeset
502 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
503 'format': eFormatHex,
anatofuz
parents:
diff changeset
504 'slice': 'r15[31:0]'},
anatofuz
parents:
diff changeset
505
anatofuz
parents:
diff changeset
506 {'name': 'ax',
anatofuz
parents:
diff changeset
507 'set': 0,
anatofuz
parents:
diff changeset
508 'bitsize': 16,
anatofuz
parents:
diff changeset
509 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
510 'format': eFormatHex,
anatofuz
parents:
diff changeset
511 'slice': 'rax[15:0]'},
anatofuz
parents:
diff changeset
512 {'name': 'bx',
anatofuz
parents:
diff changeset
513 'set': 0,
anatofuz
parents:
diff changeset
514 'bitsize': 16,
anatofuz
parents:
diff changeset
515 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
516 'format': eFormatHex,
anatofuz
parents:
diff changeset
517 'slice': 'rbx[15:0]'},
anatofuz
parents:
diff changeset
518 {'name': 'cx',
anatofuz
parents:
diff changeset
519 'set': 0,
anatofuz
parents:
diff changeset
520 'bitsize': 16,
anatofuz
parents:
diff changeset
521 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
522 'format': eFormatHex,
anatofuz
parents:
diff changeset
523 'slice': 'rcx[15:0]'},
anatofuz
parents:
diff changeset
524 {'name': 'dx',
anatofuz
parents:
diff changeset
525 'set': 0,
anatofuz
parents:
diff changeset
526 'bitsize': 16,
anatofuz
parents:
diff changeset
527 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
528 'format': eFormatHex,
anatofuz
parents:
diff changeset
529 'slice': 'rdx[15:0]'},
anatofuz
parents:
diff changeset
530 {'name': 'di',
anatofuz
parents:
diff changeset
531 'set': 0,
anatofuz
parents:
diff changeset
532 'bitsize': 16,
anatofuz
parents:
diff changeset
533 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
534 'format': eFormatHex,
anatofuz
parents:
diff changeset
535 'slice': 'rdi[15:0]'},
anatofuz
parents:
diff changeset
536 {'name': 'si',
anatofuz
parents:
diff changeset
537 'set': 0,
anatofuz
parents:
diff changeset
538 'bitsize': 16,
anatofuz
parents:
diff changeset
539 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
540 'format': eFormatHex,
anatofuz
parents:
diff changeset
541 'slice': 'rsi[15:0]'},
anatofuz
parents:
diff changeset
542 {'name': 'bp',
anatofuz
parents:
diff changeset
543 'set': 0,
anatofuz
parents:
diff changeset
544 'bitsize': 16,
anatofuz
parents:
diff changeset
545 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
546 'format': eFormatHex,
anatofuz
parents:
diff changeset
547 'slice': 'rbp[15:0]'},
anatofuz
parents:
diff changeset
548 {'name': 'sp',
anatofuz
parents:
diff changeset
549 'set': 0,
anatofuz
parents:
diff changeset
550 'bitsize': 16,
anatofuz
parents:
diff changeset
551 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
552 'format': eFormatHex,
anatofuz
parents:
diff changeset
553 'slice': 'rsp[15:0]'},
anatofuz
parents:
diff changeset
554 {'name': 'r8w',
anatofuz
parents:
diff changeset
555 'set': 0,
anatofuz
parents:
diff changeset
556 'bitsize': 16,
anatofuz
parents:
diff changeset
557 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
558 'format': eFormatHex,
anatofuz
parents:
diff changeset
559 'slice': 'r8[15:0]'},
anatofuz
parents:
diff changeset
560 {'name': 'r9w',
anatofuz
parents:
diff changeset
561 'set': 0,
anatofuz
parents:
diff changeset
562 'bitsize': 16,
anatofuz
parents:
diff changeset
563 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
564 'format': eFormatHex,
anatofuz
parents:
diff changeset
565 'slice': 'r9[15:0]'},
anatofuz
parents:
diff changeset
566 {'name': 'r10w',
anatofuz
parents:
diff changeset
567 'set': 0,
anatofuz
parents:
diff changeset
568 'bitsize': 16,
anatofuz
parents:
diff changeset
569 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
570 'format': eFormatHex,
anatofuz
parents:
diff changeset
571 'slice': 'r10[15:0]'},
anatofuz
parents:
diff changeset
572 {'name': 'r11w',
anatofuz
parents:
diff changeset
573 'set': 0,
anatofuz
parents:
diff changeset
574 'bitsize': 16,
anatofuz
parents:
diff changeset
575 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
576 'format': eFormatHex,
anatofuz
parents:
diff changeset
577 'slice': 'r11[15:0]'},
anatofuz
parents:
diff changeset
578 {'name': 'r12w',
anatofuz
parents:
diff changeset
579 'set': 0,
anatofuz
parents:
diff changeset
580 'bitsize': 16,
anatofuz
parents:
diff changeset
581 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
582 'format': eFormatHex,
anatofuz
parents:
diff changeset
583 'slice': 'r12[15:0]'},
anatofuz
parents:
diff changeset
584 {'name': 'r13w',
anatofuz
parents:
diff changeset
585 'set': 0,
anatofuz
parents:
diff changeset
586 'bitsize': 16,
anatofuz
parents:
diff changeset
587 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
588 'format': eFormatHex,
anatofuz
parents:
diff changeset
589 'slice': 'r13[15:0]'},
anatofuz
parents:
diff changeset
590 {'name': 'r14w',
anatofuz
parents:
diff changeset
591 'set': 0,
anatofuz
parents:
diff changeset
592 'bitsize': 16,
anatofuz
parents:
diff changeset
593 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
594 'format': eFormatHex,
anatofuz
parents:
diff changeset
595 'slice': 'r14[15:0]'},
anatofuz
parents:
diff changeset
596 {'name': 'r15w',
anatofuz
parents:
diff changeset
597 'set': 0,
anatofuz
parents:
diff changeset
598 'bitsize': 16,
anatofuz
parents:
diff changeset
599 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
600 'format': eFormatHex,
anatofuz
parents:
diff changeset
601 'slice': 'r15[15:0]'},
anatofuz
parents:
diff changeset
602
anatofuz
parents:
diff changeset
603 {'name': 'ah',
anatofuz
parents:
diff changeset
604 'set': 0,
anatofuz
parents:
diff changeset
605 'bitsize': 8,
anatofuz
parents:
diff changeset
606 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
607 'format': eFormatHex,
anatofuz
parents:
diff changeset
608 'slice': 'rax[15:8]'},
anatofuz
parents:
diff changeset
609 {'name': 'bh',
anatofuz
parents:
diff changeset
610 'set': 0,
anatofuz
parents:
diff changeset
611 'bitsize': 8,
anatofuz
parents:
diff changeset
612 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
613 'format': eFormatHex,
anatofuz
parents:
diff changeset
614 'slice': 'rbx[15:8]'},
anatofuz
parents:
diff changeset
615 {'name': 'ch',
anatofuz
parents:
diff changeset
616 'set': 0,
anatofuz
parents:
diff changeset
617 'bitsize': 8,
anatofuz
parents:
diff changeset
618 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
619 'format': eFormatHex,
anatofuz
parents:
diff changeset
620 'slice': 'rcx[15:8]'},
anatofuz
parents:
diff changeset
621 {'name': 'dh',
anatofuz
parents:
diff changeset
622 'set': 0,
anatofuz
parents:
diff changeset
623 'bitsize': 8,
anatofuz
parents:
diff changeset
624 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
625 'format': eFormatHex,
anatofuz
parents:
diff changeset
626 'slice': 'rdx[15:8]'},
anatofuz
parents:
diff changeset
627
anatofuz
parents:
diff changeset
628 {'name': 'al',
anatofuz
parents:
diff changeset
629 'set': 0,
anatofuz
parents:
diff changeset
630 'bitsize': 8,
anatofuz
parents:
diff changeset
631 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
632 'format': eFormatHex,
anatofuz
parents:
diff changeset
633 'slice': 'rax[7:0]'},
anatofuz
parents:
diff changeset
634 {'name': 'bl',
anatofuz
parents:
diff changeset
635 'set': 0,
anatofuz
parents:
diff changeset
636 'bitsize': 8,
anatofuz
parents:
diff changeset
637 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
638 'format': eFormatHex,
anatofuz
parents:
diff changeset
639 'slice': 'rbx[7:0]'},
anatofuz
parents:
diff changeset
640 {'name': 'cl',
anatofuz
parents:
diff changeset
641 'set': 0,
anatofuz
parents:
diff changeset
642 'bitsize': 8,
anatofuz
parents:
diff changeset
643 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
644 'format': eFormatHex,
anatofuz
parents:
diff changeset
645 'slice': 'rcx[7:0]'},
anatofuz
parents:
diff changeset
646 {'name': 'dl',
anatofuz
parents:
diff changeset
647 'set': 0,
anatofuz
parents:
diff changeset
648 'bitsize': 8,
anatofuz
parents:
diff changeset
649 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
650 'format': eFormatHex,
anatofuz
parents:
diff changeset
651 'slice': 'rdx[7:0]'},
anatofuz
parents:
diff changeset
652 {'name': 'dil',
anatofuz
parents:
diff changeset
653 'set': 0,
anatofuz
parents:
diff changeset
654 'bitsize': 8,
anatofuz
parents:
diff changeset
655 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
656 'format': eFormatHex,
anatofuz
parents:
diff changeset
657 'slice': 'rdi[7:0]'},
anatofuz
parents:
diff changeset
658 {'name': 'sil',
anatofuz
parents:
diff changeset
659 'set': 0,
anatofuz
parents:
diff changeset
660 'bitsize': 8,
anatofuz
parents:
diff changeset
661 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
662 'format': eFormatHex,
anatofuz
parents:
diff changeset
663 'slice': 'rsi[7:0]'},
anatofuz
parents:
diff changeset
664 {'name': 'bpl',
anatofuz
parents:
diff changeset
665 'set': 0,
anatofuz
parents:
diff changeset
666 'bitsize': 8,
anatofuz
parents:
diff changeset
667 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
668 'format': eFormatHex,
anatofuz
parents:
diff changeset
669 'slice': 'rbp[7:0]'},
anatofuz
parents:
diff changeset
670 {'name': 'spl',
anatofuz
parents:
diff changeset
671 'set': 0,
anatofuz
parents:
diff changeset
672 'bitsize': 8,
anatofuz
parents:
diff changeset
673 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
674 'format': eFormatHex,
anatofuz
parents:
diff changeset
675 'slice': 'rsp[7:0]'},
anatofuz
parents:
diff changeset
676 {'name': 'r8l',
anatofuz
parents:
diff changeset
677 'set': 0,
anatofuz
parents:
diff changeset
678 'bitsize': 8,
anatofuz
parents:
diff changeset
679 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
680 'format': eFormatHex,
anatofuz
parents:
diff changeset
681 'slice': 'r8[7:0]'},
anatofuz
parents:
diff changeset
682 {'name': 'r9l',
anatofuz
parents:
diff changeset
683 'set': 0,
anatofuz
parents:
diff changeset
684 'bitsize': 8,
anatofuz
parents:
diff changeset
685 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
686 'format': eFormatHex,
anatofuz
parents:
diff changeset
687 'slice': 'r9[7:0]'},
anatofuz
parents:
diff changeset
688 {'name': 'r10l',
anatofuz
parents:
diff changeset
689 'set': 0,
anatofuz
parents:
diff changeset
690 'bitsize': 8,
anatofuz
parents:
diff changeset
691 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
692 'format': eFormatHex,
anatofuz
parents:
diff changeset
693 'slice': 'r10[7:0]'},
anatofuz
parents:
diff changeset
694 {'name': 'r11l',
anatofuz
parents:
diff changeset
695 'set': 0,
anatofuz
parents:
diff changeset
696 'bitsize': 8,
anatofuz
parents:
diff changeset
697 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
698 'format': eFormatHex,
anatofuz
parents:
diff changeset
699 'slice': 'r11[7:0]'},
anatofuz
parents:
diff changeset
700 {'name': 'r12l',
anatofuz
parents:
diff changeset
701 'set': 0,
anatofuz
parents:
diff changeset
702 'bitsize': 8,
anatofuz
parents:
diff changeset
703 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
704 'format': eFormatHex,
anatofuz
parents:
diff changeset
705 'slice': 'r12[7:0]'},
anatofuz
parents:
diff changeset
706 {'name': 'r13l',
anatofuz
parents:
diff changeset
707 'set': 0,
anatofuz
parents:
diff changeset
708 'bitsize': 8,
anatofuz
parents:
diff changeset
709 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
710 'format': eFormatHex,
anatofuz
parents:
diff changeset
711 'slice': 'r13[7:0]'},
anatofuz
parents:
diff changeset
712 {'name': 'r14l',
anatofuz
parents:
diff changeset
713 'set': 0,
anatofuz
parents:
diff changeset
714 'bitsize': 8,
anatofuz
parents:
diff changeset
715 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
716 'format': eFormatHex,
anatofuz
parents:
diff changeset
717 'slice': 'r14[7:0]'},
anatofuz
parents:
diff changeset
718 {'name': 'r15l',
anatofuz
parents:
diff changeset
719 'set': 0,
anatofuz
parents:
diff changeset
720 'bitsize': 8,
anatofuz
parents:
diff changeset
721 'encoding': eEncodingUint,
anatofuz
parents:
diff changeset
722 'format': eFormatHex,
anatofuz
parents:
diff changeset
723 'slice': 'r15[7:0]'},
anatofuz
parents:
diff changeset
724 ]
anatofuz
parents:
diff changeset
725
anatofuz
parents:
diff changeset
726 g_target_definition = None
anatofuz
parents:
diff changeset
727
anatofuz
parents:
diff changeset
728
anatofuz
parents:
diff changeset
729 def get_target_definition():
anatofuz
parents:
diff changeset
730 global g_target_definition
anatofuz
parents:
diff changeset
731 if g_target_definition is None:
anatofuz
parents:
diff changeset
732 g_target_definition = {}
anatofuz
parents:
diff changeset
733 offset = 0
anatofuz
parents:
diff changeset
734 for reg_info in x86_64_register_infos:
anatofuz
parents:
diff changeset
735 reg_name = reg_info['name']
anatofuz
parents:
diff changeset
736
anatofuz
parents:
diff changeset
737 # Only fill in the offset if there is no 'slice' in the register
anatofuz
parents:
diff changeset
738 # info
anatofuz
parents:
diff changeset
739 if 'slice' not in reg_info and 'composite' not in reg_info:
anatofuz
parents:
diff changeset
740 reg_info['offset'] = offset
anatofuz
parents:
diff changeset
741 offset += reg_info['bitsize'] // 8
anatofuz
parents:
diff changeset
742
anatofuz
parents:
diff changeset
743 # Set the GCC/DWARF register number for this register if it has one
anatofuz
parents:
diff changeset
744 reg_num = get_reg_num(name_to_gcc_dwarf_regnum, reg_name)
anatofuz
parents:
diff changeset
745 if reg_num != LLDB_INVALID_REGNUM:
anatofuz
parents:
diff changeset
746 reg_info['gcc'] = reg_num
anatofuz
parents:
diff changeset
747 reg_info['dwarf'] = reg_num
anatofuz
parents:
diff changeset
748
anatofuz
parents:
diff changeset
749 # Set the generic register number for this register if it has one
anatofuz
parents:
diff changeset
750 reg_num = get_reg_num(name_to_generic_regnum, reg_name)
anatofuz
parents:
diff changeset
751 if reg_num != LLDB_INVALID_REGNUM:
anatofuz
parents:
diff changeset
752 reg_info['generic'] = reg_num
anatofuz
parents:
diff changeset
753
anatofuz
parents:
diff changeset
754 # Set the GDB register number for this register if it has one
anatofuz
parents:
diff changeset
755 reg_num = get_reg_num(name_to_gdb_regnum, reg_name)
anatofuz
parents:
diff changeset
756 if reg_num != LLDB_INVALID_REGNUM:
anatofuz
parents:
diff changeset
757 reg_info['gdb'] = reg_num
anatofuz
parents:
diff changeset
758
anatofuz
parents:
diff changeset
759 g_target_definition['sets'] = [
anatofuz
parents:
diff changeset
760 'General Purpose Registers',
anatofuz
parents:
diff changeset
761 'Floating Point Registers']
anatofuz
parents:
diff changeset
762 g_target_definition['registers'] = x86_64_register_infos
anatofuz
parents:
diff changeset
763 g_target_definition[
anatofuz
parents:
diff changeset
764 'host-info'] = {'triple': 'x86_64-*-linux', 'endian': eByteOrderLittle}
anatofuz
parents:
diff changeset
765 g_target_definition['g-packet-size'] = offset
anatofuz
parents:
diff changeset
766 g_target_definition['breakpoint-pc-offset'] = -1
anatofuz
parents:
diff changeset
767 return g_target_definition
anatofuz
parents:
diff changeset
768
anatofuz
parents:
diff changeset
769
anatofuz
parents:
diff changeset
770 def get_dynamic_setting(target, setting_name):
anatofuz
parents:
diff changeset
771 if setting_name == 'gdb-server-target-definition':
anatofuz
parents:
diff changeset
772 return get_target_definition()