gem5 v24.1.0.1
Loading...
Searching...
No Matches
tarmac_parser.cc
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011,2017-2020 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Redistribution and use in source and binary forms, with or without
15 * modification, are permitted provided that the following conditions are
16 * met: redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer;
18 * redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution;
21 * neither the name of the copyright holders nor the names of its
22 * contributors may be used to endorse or promote products derived from
23 * this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 */
37
38#include <algorithm>
39#include <cctype>
40#include <cstring>
41#include <iomanip>
42#include <string>
43
45
47#include "arch/arm/mmu.hh"
48#include "arch/arm/regs/int.hh"
49#include "arch/arm/regs/vec.hh"
50#include "cpu/static_inst.hh"
51#include "cpu/thread_context.hh"
52#include "mem/packet.hh"
53#include "mem/port_proxy.hh"
56#include "sim/core.hh"
57#include "sim/cur_tick.hh"
58#include "sim/faults.hh"
59#include "sim/full_system.hh"
60#include "sim/sim_exit.hh"
61
62namespace gem5
63{
64
65using namespace ArmISA;
66
67namespace trace {
68
69// TARMAC Parser static variables
72
73TarmacParserRecord::ParserInstEntry TarmacParserRecord::instRecord;
74TarmacParserRecord::ParserRegEntry TarmacParserRecord::regRecord;
75TarmacParserRecord::ParserMemEntry TarmacParserRecord::memRecord;
77
82
83 { "cpsr", MISCREG_CPSR },
84 { "nzcv", MISCREG_NZCV },
85
86 // AArch32 CP14 registers
87 { "dbgdidr", MISCREG_DBGDIDR },
88 { "dbgdscrint", MISCREG_DBGDSCRint },
89 { "dbgdccint", MISCREG_DBGDCCINT },
90 { "dbgdtrtxint", MISCREG_DBGDTRTXint },
91 { "dbgdtrrxint", MISCREG_DBGDTRRXint },
92 { "dbgwfar", MISCREG_DBGWFAR },
93 { "dbgvcr", MISCREG_DBGVCR },
94 { "dbgdtrrxext", MISCREG_DBGDTRRXext },
95 { "dbgdscrext", MISCREG_DBGDSCRext },
96 { "dbgdtrtxext", MISCREG_DBGDTRTXext },
97 { "dbgoseccr", MISCREG_DBGOSECCR },
98 { "dbgbvr0", MISCREG_DBGBVR0 },
99 { "dbgbvr1", MISCREG_DBGBVR1 },
100 { "dbgbvr2", MISCREG_DBGBVR2 },
101 { "dbgbvr3", MISCREG_DBGBVR3 },
102 { "dbgbvr4", MISCREG_DBGBVR4 },
103 { "dbgbvr5", MISCREG_DBGBVR5 },
104 { "dbgbvr6", MISCREG_DBGBVR6 },
105 { "dbgbvr7", MISCREG_DBGBVR7 },
106 { "dbgbvr8", MISCREG_DBGBVR8 },
107 { "dbgbvr9", MISCREG_DBGBVR9 },
108 { "dbgbvr10", MISCREG_DBGBVR10 },
109 { "dbgbvr11", MISCREG_DBGBVR11 },
110 { "dbgbvr12", MISCREG_DBGBVR12 },
111 { "dbgbvr13", MISCREG_DBGBVR13 },
112 { "dbgbvr14", MISCREG_DBGBVR14 },
113 { "dbgbvr15", MISCREG_DBGBVR15 },
114 { "dbgbcr0", MISCREG_DBGBCR0 },
115 { "dbgbcr1", MISCREG_DBGBCR1 },
116 { "dbgbcr2", MISCREG_DBGBCR2 },
117 { "dbgbcr3", MISCREG_DBGBCR3 },
118 { "dbgbcr4", MISCREG_DBGBCR4 },
119 { "dbgbcr5", MISCREG_DBGBCR5 },
120 { "dbgbcr6", MISCREG_DBGBCR6 },
121 { "dbgbcr7", MISCREG_DBGBCR7 },
122 { "dbgbcr8", MISCREG_DBGBCR8 },
123 { "dbgbcr9", MISCREG_DBGBCR9 },
124 { "dbgbcr10", MISCREG_DBGBCR10 },
125 { "dbgbcr11", MISCREG_DBGBCR11 },
126 { "dbgbcr12", MISCREG_DBGBCR12 },
127 { "dbgbcr13", MISCREG_DBGBCR13 },
128 { "dbgbcr14", MISCREG_DBGBCR14 },
129 { "dbgbcr15", MISCREG_DBGBCR15 },
130 { "dbgwvr0", MISCREG_DBGWVR0 },
131 { "dbgwvr1", MISCREG_DBGWVR1 },
132 { "dbgwvr2", MISCREG_DBGWVR2 },
133 { "dbgwvr3", MISCREG_DBGWVR3 },
134 { "dbgwvr4", MISCREG_DBGWVR4 },
135 { "dbgwvr5", MISCREG_DBGWVR5 },
136 { "dbgwvr6", MISCREG_DBGWVR6 },
137 { "dbgwvr7", MISCREG_DBGWVR7 },
138 { "dbgwvr8", MISCREG_DBGWVR8 },
139 { "dbgwvr9", MISCREG_DBGWVR9 },
140 { "dbgwvr10", MISCREG_DBGWVR10 },
141 { "dbgwvr11", MISCREG_DBGWVR11 },
142 { "dbgwvr12", MISCREG_DBGWVR12 },
143 { "dbgwvr13", MISCREG_DBGWVR13 },
144 { "dbgwvr14", MISCREG_DBGWVR14 },
145 { "dbgwvr15", MISCREG_DBGWVR15 },
146 { "dbgwcr0", MISCREG_DBGWCR0 },
147 { "dbgwcr1", MISCREG_DBGWCR1 },
148 { "dbgwcr2", MISCREG_DBGWCR2 },
149 { "dbgwcr3", MISCREG_DBGWCR3 },
150 { "dbgwcr4", MISCREG_DBGWCR4 },
151 { "dbgwcr5", MISCREG_DBGWCR5 },
152 { "dbgwcr6", MISCREG_DBGWCR6 },
153 { "dbgwcr7", MISCREG_DBGWCR7 },
154 { "dbgwcr8", MISCREG_DBGWCR8 },
155 { "dbgwcr9", MISCREG_DBGWCR9 },
156 { "dbgwcr10", MISCREG_DBGWCR10 },
157 { "dbgwcr11", MISCREG_DBGWCR11 },
158 { "dbgwcr12", MISCREG_DBGWCR12 },
159 { "dbgwcr13", MISCREG_DBGWCR13 },
160 { "dbgwcr14", MISCREG_DBGWCR14 },
161 { "dbgwcr15", MISCREG_DBGWCR15 },
162 { "dbgdrar", MISCREG_DBGDRAR },
163 { "dbgbxvr0", MISCREG_DBGBXVR0 },
164 { "dbgbxvr1", MISCREG_DBGBXVR1 },
165 { "dbgbxvr2", MISCREG_DBGBXVR2 },
166 { "dbgbxvr3", MISCREG_DBGBXVR3 },
167 { "dbgbxvr4", MISCREG_DBGBXVR4 },
168 { "dbgbxvr5", MISCREG_DBGBXVR5 },
169 { "dbgbxvr6", MISCREG_DBGBXVR6 },
170 { "dbgbxvr7", MISCREG_DBGBXVR7 },
171 { "dbgbxvr8", MISCREG_DBGBXVR8 },
172 { "dbgbxvr9", MISCREG_DBGBXVR9 },
173 { "dbgbxvr10", MISCREG_DBGBXVR10 },
174 { "dbgbxvr11", MISCREG_DBGBXVR11 },
175 { "dbgbxvr12", MISCREG_DBGBXVR12 },
176 { "dbgbxvr13", MISCREG_DBGBXVR13 },
177 { "dbgbxvr14", MISCREG_DBGBXVR14 },
178 { "dbgbxvr15", MISCREG_DBGBXVR15 },
179 { "dbgoslar", MISCREG_DBGOSLAR },
180 { "dbgoslsr", MISCREG_DBGOSLSR },
181 { "dbgosdlr", MISCREG_DBGOSDLR },
182 { "dbgprcr", MISCREG_DBGPRCR },
183 { "dbgdsar", MISCREG_DBGDSAR },
184 { "dbgclaimset", MISCREG_DBGCLAIMSET },
185 { "dbgclaimclr", MISCREG_DBGCLAIMCLR },
186 { "dbgauthstatus", MISCREG_DBGAUTHSTATUS },
187 { "dbgdevid2", MISCREG_DBGDEVID2 },
188 { "dbgdevid1", MISCREG_DBGDEVID1 },
189 { "dbgdevid0", MISCREG_DBGDEVID0 },
190 { "teecr", MISCREG_TEECR },
191 { "jidr", MISCREG_JIDR },
192 { "teehbr", MISCREG_TEEHBR },
193 { "joscr", MISCREG_JOSCR },
194 { "jmcr", MISCREG_JMCR },
195
196 // AArch32 CP15 registers
197 { "midr", MISCREG_MIDR },
198 { "ctr", MISCREG_CTR },
199 { "tcmtr", MISCREG_TCMTR },
200 { "tlbtr", MISCREG_TLBTR },
201 { "mpidr", MISCREG_MPIDR },
202 { "revidr", MISCREG_REVIDR },
203 { "id_pfr0", MISCREG_ID_PFR0 },
204 { "id_pfr1", MISCREG_ID_PFR1 },
205 { "id_dfr0", MISCREG_ID_DFR0 },
206 { "id_afr0", MISCREG_ID_AFR0 },
207 { "id_mmfr0", MISCREG_ID_MMFR0 },
208 { "id_mmfr1", MISCREG_ID_MMFR1 },
209 { "id_mmfr2", MISCREG_ID_MMFR2 },
210 { "id_mmfr3", MISCREG_ID_MMFR3 },
211 { "id_mmfr4", MISCREG_ID_MMFR4 },
212 { "id_isar0", MISCREG_ID_ISAR0 },
213 { "id_isar1", MISCREG_ID_ISAR1 },
214 { "id_isar2", MISCREG_ID_ISAR2 },
215 { "id_isar3", MISCREG_ID_ISAR3 },
216 { "id_isar4", MISCREG_ID_ISAR4 },
217 { "id_isar5", MISCREG_ID_ISAR5 },
218 { "id_isar6", MISCREG_ID_ISAR6 },
219 { "ccsidr", MISCREG_CCSIDR },
220 { "clidr", MISCREG_CLIDR },
221 { "aidr", MISCREG_AIDR },
222 { "csselr_ns", MISCREG_CSSELR_NS },
223 { "csselr_s", MISCREG_CSSELR_S },
224 { "vpidr", MISCREG_VPIDR },
225 { "vmpidr", MISCREG_VMPIDR },
226 { "sctlr_ns", MISCREG_SCTLR_NS },
227 { "sctlr_s", MISCREG_SCTLR_S },
228 { "actlr_ns", MISCREG_ACTLR_NS },
229 { "actlr_s", MISCREG_ACTLR_S },
230 { "cpacr", MISCREG_CPACR },
231 { "scr", MISCREG_SCR },
232 { "sder", MISCREG_SDER },
233 { "nsacr", MISCREG_NSACR },
234 { "hsctlr", MISCREG_HSCTLR },
235 { "hactlr", MISCREG_HACTLR },
236 { "hcr", MISCREG_HCR },
237 { "hcr2", MISCREG_HCR2 },
238 { "hdcr", MISCREG_HDCR },
239 { "hcptr", MISCREG_HCPTR },
240 { "hstr", MISCREG_HSTR },
241 { "hacr", MISCREG_HACR },
242 { "ttbr0_ns", MISCREG_TTBR0_NS },
243 { "ttbr0_s", MISCREG_TTBR0_S },
244 { "ttbr1_ns", MISCREG_TTBR1_NS },
245 { "ttbr1_s", MISCREG_TTBR1_S },
246 { "ttbcr_ns", MISCREG_TTBCR_NS },
247 { "ttbcr_s", MISCREG_TTBCR_S },
248 { "htcr", MISCREG_HTCR },
249 { "vtcr", MISCREG_VTCR },
250 { "dacr_ns", MISCREG_DACR_NS },
251 { "dacr_s", MISCREG_DACR_S },
252 { "dfsr_ns", MISCREG_DFSR_NS },
253 { "dfsr_s", MISCREG_DFSR_S },
254 { "ifsr_ns", MISCREG_IFSR_NS },
255 { "ifsr_s", MISCREG_IFSR_S },
256 { "adfsr_ns", MISCREG_ADFSR_NS },
257 { "adfsr_s", MISCREG_ADFSR_S },
258 { "aifsr_ns", MISCREG_AIFSR_NS },
259 { "aifsr_s", MISCREG_AIFSR_S },
260 { "hadfsr", MISCREG_HADFSR },
261 { "haifsr", MISCREG_HAIFSR },
262 { "hsr", MISCREG_HSR },
263 { "dfar_ns", MISCREG_DFAR_NS },
264 { "dfar_s", MISCREG_DFAR_S },
265 { "ifar_ns", MISCREG_IFAR_NS },
266 { "ifar_s", MISCREG_IFAR_S },
267 { "hdfar", MISCREG_HDFAR },
268 { "hifar", MISCREG_HIFAR },
269 { "hpfar", MISCREG_HPFAR },
270 { "icialluis", MISCREG_ICIALLUIS },
271 { "bpiallis", MISCREG_BPIALLIS },
272 { "par_ns", MISCREG_PAR_NS },
273 { "par_s", MISCREG_PAR_S },
274 { "iciallu", MISCREG_ICIALLU },
275 { "icimvau", MISCREG_ICIMVAU },
276 { "cp15isb", MISCREG_CP15ISB },
277 { "bpiall", MISCREG_BPIALL },
278 { "bpimva", MISCREG_BPIMVA },
279 { "dcimvac", MISCREG_DCIMVAC },
280 { "dcisw", MISCREG_DCISW },
281 { "ats1cpr", MISCREG_ATS1CPR },
282 { "ats1cpw", MISCREG_ATS1CPW },
283 { "ats1cur", MISCREG_ATS1CUR },
284 { "ats1cuw", MISCREG_ATS1CUW },
285 { "ats12nsopr", MISCREG_ATS12NSOPR },
286 { "ats12nsopw", MISCREG_ATS12NSOPW },
287 { "ats12nsour", MISCREG_ATS12NSOUR },
288 { "ats12nsouw", MISCREG_ATS12NSOUW },
289 { "dccmvac", MISCREG_DCCMVAC },
290 { "dccsw", MISCREG_DCCSW },
291 { "cp15dsb", MISCREG_CP15DSB },
292 { "cp15dmb", MISCREG_CP15DMB },
293 { "dccmvau", MISCREG_DCCMVAU },
294 { "dccimvac", MISCREG_DCCIMVAC },
295 { "dccisw", MISCREG_DCCISW },
296 { "ats1hr", MISCREG_ATS1HR },
297 { "ats1hw", MISCREG_ATS1HW },
298 { "tlbiallis", MISCREG_TLBIALLIS },
299 { "tlbimvais", MISCREG_TLBIMVAIS },
300 { "tlbiasidis", MISCREG_TLBIASIDIS },
301 { "tlbimvaais", MISCREG_TLBIMVAAIS },
302 { "tlbimvalis", MISCREG_TLBIMVALIS },
303 { "tlbimvaalis", MISCREG_TLBIMVAALIS },
304 { "itlbiall", MISCREG_ITLBIALL },
305 { "itlbimva", MISCREG_ITLBIMVA },
306 { "itlbiasid", MISCREG_ITLBIASID },
307 { "dtlbiall", MISCREG_DTLBIALL },
308 { "dtlbimva", MISCREG_DTLBIMVA },
309 { "dtlbiasid", MISCREG_DTLBIASID },
310 { "tlbiall", MISCREG_TLBIALL },
311 { "tlbimva", MISCREG_TLBIMVA },
312 { "tlbiasid", MISCREG_TLBIASID },
313 { "tlbimvaa", MISCREG_TLBIMVAA },
314 { "tlbimval", MISCREG_TLBIMVAL },
315 { "tlbimvaal", MISCREG_TLBIMVAAL },
316 { "tlbiipas2is", MISCREG_TLBIIPAS2IS },
317 { "tlbiipas2lis", MISCREG_TLBIIPAS2LIS },
318 { "tlbiallhis", MISCREG_TLBIALLHIS },
319 { "tlbimvahis", MISCREG_TLBIMVAHIS },
320 { "tlbiallnsnhis", MISCREG_TLBIALLNSNHIS },
321 { "tlbimvalhis", MISCREG_TLBIMVALHIS },
322 { "tlbiipas2", MISCREG_TLBIIPAS2 },
323 { "tlbiipas2l", MISCREG_TLBIIPAS2L },
324 { "tlbiallh", MISCREG_TLBIALLH },
325 { "tlbimvah", MISCREG_TLBIMVAH },
326 { "tlbiallnsnh", MISCREG_TLBIALLNSNH },
327 { "tlbimvalh", MISCREG_TLBIMVALH },
328 { "pmcr", MISCREG_PMCR },
329 { "pmcntenset", MISCREG_PMCNTENSET },
330 { "pmcntenclr", MISCREG_PMCNTENCLR },
331 { "pmovsr", MISCREG_PMOVSR },
332 { "pmswinc", MISCREG_PMSWINC },
333 { "pmselr", MISCREG_PMSELR },
334 { "pmceid0", MISCREG_PMCEID0 },
335 { "pmceid1", MISCREG_PMCEID1 },
336 { "pmccntr", MISCREG_PMCCNTR },
337 { "pmxevtyper", MISCREG_PMXEVTYPER },
338 { "pmevcntr0", MISCREG_PMEVCNTR0 },
339 { "pmevcntr1", MISCREG_PMEVCNTR1 },
340 { "pmevcntr2", MISCREG_PMEVCNTR2 },
341 { "pmevcntr3", MISCREG_PMEVCNTR3 },
342 { "pmevcntr4", MISCREG_PMEVCNTR4 },
343 { "pmevcntr5", MISCREG_PMEVCNTR5 },
344 { "pmevtyper0", MISCREG_PMEVTYPER0 },
345 { "pmevtyper1", MISCREG_PMEVTYPER1 },
346 { "pmevtyper2", MISCREG_PMEVTYPER2 },
347 { "pmevtyper3", MISCREG_PMEVTYPER3 },
348 { "pmevtyper4", MISCREG_PMEVTYPER4 },
349 { "pmevtyper5", MISCREG_PMEVTYPER5 },
350 { "pmccfiltr", MISCREG_PMCCFILTR },
351 { "pmxevcntr", MISCREG_PMXEVCNTR },
352 { "pmuserenr", MISCREG_PMUSERENR },
353 { "pmintenset", MISCREG_PMINTENSET },
354 { "pmintenclr", MISCREG_PMINTENCLR },
355 { "pmovsset", MISCREG_PMOVSSET },
356 { "l2ctlr", MISCREG_L2CTLR },
357 { "l2ectlr", MISCREG_L2ECTLR },
358 { "prrr_ns", MISCREG_PRRR_NS },
359 { "prrr_s", MISCREG_PRRR_S },
360 { "mair0_ns", MISCREG_MAIR0_NS },
361 { "mair0_s", MISCREG_MAIR0_S },
362 { "nmrr_ns", MISCREG_NMRR_NS },
363 { "nmrr_s", MISCREG_NMRR_S },
364 { "mair1_ns", MISCREG_MAIR1_NS },
365 { "mair1_s", MISCREG_MAIR1_S },
366 { "amair0_ns", MISCREG_AMAIR0_NS },
367 { "amair0_s", MISCREG_AMAIR0_S },
368 { "amair1_ns", MISCREG_AMAIR1_NS },
369 { "amair1_s", MISCREG_AMAIR1_S },
370 { "hmair0", MISCREG_HMAIR0 },
371 { "hmair1", MISCREG_HMAIR1 },
372 { "hamair0", MISCREG_HAMAIR0 },
373 { "hamair1", MISCREG_HAMAIR1 },
374 { "vbar_ns", MISCREG_VBAR_NS },
375 { "vbar_s", MISCREG_VBAR_S },
376 { "mvbar", MISCREG_MVBAR },
377 { "rmr", MISCREG_RMR },
378 { "isr", MISCREG_ISR },
379 { "hvbar", MISCREG_HVBAR },
380 { "fcseidr", MISCREG_FCSEIDR },
381 { "contextidr_ns", MISCREG_CONTEXTIDR_NS },
382 { "contextidr_s", MISCREG_CONTEXTIDR_S },
383 { "tpidrurw_ns", MISCREG_TPIDRURW_NS },
384 { "tpidrurw_s", MISCREG_TPIDRURW_S },
385 { "tpidruro_ns", MISCREG_TPIDRURO_NS },
386 { "tpidruro_s", MISCREG_TPIDRURO_S },
387 { "tpidrprw_ns", MISCREG_TPIDRPRW_NS },
388 { "tpidrprw_s", MISCREG_TPIDRPRW_S },
389 { "htpidr", MISCREG_HTPIDR },
390 { "cntfrq", MISCREG_CNTFRQ },
391 { "cntkctl", MISCREG_CNTKCTL },
392 { "cntp_tval_ns", MISCREG_CNTP_TVAL_NS },
393 { "cntp_tval_s", MISCREG_CNTP_TVAL_S },
394 { "cntp_ctl_ns", MISCREG_CNTP_CTL_NS },
395 { "cntp_ctl_s", MISCREG_CNTP_CTL_S },
396 { "cntv_tval", MISCREG_CNTV_TVAL },
397 { "cntv_ctl", MISCREG_CNTV_CTL },
398 { "cnthctl", MISCREG_CNTHCTL },
399 { "cnthp_tval", MISCREG_CNTHP_TVAL },
400 { "cnthp_ctl", MISCREG_CNTHP_CTL },
401 { "il1data0", MISCREG_IL1DATA0 },
402 { "il1data1", MISCREG_IL1DATA1 },
403 { "il1data2", MISCREG_IL1DATA2 },
404 { "il1data3", MISCREG_IL1DATA3 },
405 { "dl1data0", MISCREG_DL1DATA0 },
406 { "dl1data1", MISCREG_DL1DATA1 },
407 { "dl1data2", MISCREG_DL1DATA2 },
408 { "dl1data3", MISCREG_DL1DATA3 },
409 { "dl1data4", MISCREG_DL1DATA4 },
410 { "ramindex", MISCREG_RAMINDEX },
411 { "l2actlr", MISCREG_L2ACTLR },
412 { "cbar", MISCREG_CBAR },
413 { "httbr", MISCREG_HTTBR },
414 { "vttbr", MISCREG_VTTBR },
415 { "cntpct", MISCREG_CNTPCT },
416 { "cntvct", MISCREG_CNTVCT },
417 { "cntp_cval_ns", MISCREG_CNTP_CVAL_NS },
418 { "cntp_cval_s", MISCREG_CNTP_CVAL_S },
419 { "cntv_cval", MISCREG_CNTV_CVAL },
420 { "cntvoff", MISCREG_CNTVOFF },
421 { "cnthp_cval", MISCREG_CNTHP_CVAL },
422 { "cpumerrsr", MISCREG_CPUMERRSR },
423 { "l2merrsr", MISCREG_L2MERRSR },
424
425 // AArch64 registers (Op0=2)
426 { "mdccint_el1", MISCREG_MDCCINT_EL1 },
427 { "osdtrrx_el1", MISCREG_OSDTRRX_EL1 },
428 { "mdscr_el1", MISCREG_MDSCR_EL1 },
429 { "osdtrtx_el1", MISCREG_OSDTRTX_EL1 },
430 { "oseccr_el1", MISCREG_OSECCR_EL1 },
431 { "dbgbvr0_el1", MISCREG_DBGBVR0_EL1 },
432 { "dbgbvr1_el1", MISCREG_DBGBVR1_EL1 },
433 { "dbgbvr2_el1", MISCREG_DBGBVR2_EL1 },
434 { "dbgbvr3_el1", MISCREG_DBGBVR3_EL1 },
435 { "dbgbvr4_el1", MISCREG_DBGBVR4_EL1 },
436 { "dbgbvr5_el1", MISCREG_DBGBVR5_EL1 },
437 { "dbgbvr6_el1", MISCREG_DBGBVR6_EL1 },
438 { "dbgbvr7_el1", MISCREG_DBGBVR7_EL1 },
439 { "dbgbvr8_el1", MISCREG_DBGBVR8_EL1 },
440 { "dbgbvr9_el1", MISCREG_DBGBVR9_EL1 },
441 { "dbgbvr10_el1", MISCREG_DBGBVR10_EL1 },
442 { "dbgbvr11_el1", MISCREG_DBGBVR11_EL1 },
443 { "dbgbvr12_el1", MISCREG_DBGBVR12_EL1 },
444 { "dbgbvr13_el1", MISCREG_DBGBVR13_EL1 },
445 { "dbgbvr14_el1", MISCREG_DBGBVR14_EL1 },
446 { "dbgbvr15_el1", MISCREG_DBGBVR15_EL1 },
447 { "dbgbcr0_el1", MISCREG_DBGBCR0_EL1 },
448 { "dbgbcr1_el1", MISCREG_DBGBCR1_EL1 },
449 { "dbgbcr2_el1", MISCREG_DBGBCR2_EL1 },
450 { "dbgbcr3_el1", MISCREG_DBGBCR3_EL1 },
451 { "dbgbcr4_el1", MISCREG_DBGBCR4_EL1 },
452 { "dbgbcr5_el1", MISCREG_DBGBCR5_EL1 },
453 { "dbgbcr6_el1", MISCREG_DBGBCR6_EL1 },
454 { "dbgbcr7_el1", MISCREG_DBGBCR7_EL1 },
455 { "dbgbcr8_el1", MISCREG_DBGBCR8_EL1 },
456 { "dbgbcr9_el1", MISCREG_DBGBCR9_EL1 },
457 { "dbgbcr10_el1", MISCREG_DBGBCR10_EL1 },
458 { "dbgbcr11_el1", MISCREG_DBGBCR11_EL1 },
459 { "dbgbcr12_el1", MISCREG_DBGBCR12_EL1 },
460 { "dbgbcr13_el1", MISCREG_DBGBCR13_EL1 },
461 { "dbgbcr14_el1", MISCREG_DBGBCR14_EL1 },
462 { "dbgbcr15_el1", MISCREG_DBGBCR15_EL1 },
463 { "dbgwvr0_el1", MISCREG_DBGWVR0_EL1 },
464 { "dbgwvr1_el1", MISCREG_DBGWVR1_EL1 },
465 { "dbgwvr2_el1", MISCREG_DBGWVR2_EL1 },
466 { "dbgwvr3_el1", MISCREG_DBGWVR3_EL1 },
467 { "dbgwvr4_el1", MISCREG_DBGWVR4_EL1 },
468 { "dbgwvr5_el1", MISCREG_DBGWVR5_EL1 },
469 { "dbgwvr6_el1", MISCREG_DBGWVR6_EL1 },
470 { "dbgwvr7_el1", MISCREG_DBGWVR7_EL1 },
471 { "dbgwvr8_el1", MISCREG_DBGWVR8_EL1 },
472 { "dbgwvr9_el1", MISCREG_DBGWVR9_EL1 },
473 { "dbgwvr10_el1", MISCREG_DBGWVR10_EL1 },
474 { "dbgwvr11_el1", MISCREG_DBGWVR11_EL1 },
475 { "dbgwvr12_el1", MISCREG_DBGWVR12_EL1 },
476 { "dbgwvr13_el1", MISCREG_DBGWVR13_EL1 },
477 { "dbgwvr14_el1", MISCREG_DBGWVR14_EL1 },
478 { "dbgwvr15_el1", MISCREG_DBGWVR15_EL1 },
479 { "dbgwcr0_el1", MISCREG_DBGWCR0_EL1 },
480 { "dbgwcr1_el1", MISCREG_DBGWCR1_EL1 },
481 { "dbgwcr2_el1", MISCREG_DBGWCR2_EL1 },
482 { "dbgwcr3_el1", MISCREG_DBGWCR3_EL1 },
483 { "dbgwcr4_el1", MISCREG_DBGWCR4_EL1 },
484 { "dbgwcr5_el1", MISCREG_DBGWCR5_EL1 },
485 { "dbgwcr6_el1", MISCREG_DBGWCR6_EL1 },
486 { "dbgwcr7_el1", MISCREG_DBGWCR7_EL1 },
487 { "dbgwcr8_el1", MISCREG_DBGWCR8_EL1 },
488 { "dbgwcr9_el1", MISCREG_DBGWCR9_EL1 },
489 { "dbgwcr10_el1", MISCREG_DBGWCR10_EL1 },
490 { "dbgwcr11_el1", MISCREG_DBGWCR11_EL1 },
491 { "dbgwcr12_el1", MISCREG_DBGWCR12_EL1 },
492 { "dbgwcr13_el1", MISCREG_DBGWCR13_EL1 },
493 { "dbgwcr14_el1", MISCREG_DBGWCR14_EL1 },
494 { "dbgwcr15_el1", MISCREG_DBGWCR15_EL1 },
495 { "mdccsr_el0", MISCREG_MDCCSR_EL0 },
496 { "mddtr_el0", MISCREG_MDDTR_EL0 },
497 { "mddtrtx_el0", MISCREG_MDDTRTX_EL0 },
498 { "mddtrrx_el0", MISCREG_MDDTRRX_EL0 },
499 { "dbgvcr32_el2", MISCREG_DBGVCR32_EL2 },
500 { "mdrar_el1", MISCREG_MDRAR_EL1 },
501 { "oslar_el1", MISCREG_OSLAR_EL1 },
502 { "oslsr_el1", MISCREG_OSLSR_EL1 },
503 { "osdlr_el1", MISCREG_OSDLR_EL1 },
504 { "dbgprcr_el1", MISCREG_DBGPRCR_EL1 },
505 { "dbgclaimset_el1", MISCREG_DBGCLAIMSET_EL1 },
506 { "dbgclaimclr_el1", MISCREG_DBGCLAIMCLR_EL1 },
507 { "dbgauthstatus_el1", MISCREG_DBGAUTHSTATUS_EL1 },
508 { "teecr32_el1", MISCREG_TEECR32_EL1 },
509 { "teehbr32_el1", MISCREG_TEEHBR32_EL1 },
510
511 // AArch64 registers (Op0=1,3)
512 { "midr_el1", MISCREG_MIDR_EL1 },
513 { "mpidr_el1", MISCREG_MPIDR_EL1 },
514 { "revidr_el1", MISCREG_REVIDR_EL1 },
515 { "id_pfr0_el1", MISCREG_ID_PFR0_EL1 },
516 { "id_pfr1_el1", MISCREG_ID_PFR1_EL1 },
517 { "id_dfr0_el1", MISCREG_ID_DFR0_EL1 },
518 { "id_afr0_el1", MISCREG_ID_AFR0_EL1 },
519 { "id_mmfr0_el1", MISCREG_ID_MMFR0_EL1 },
520 { "id_mmfr1_el1", MISCREG_ID_MMFR1_EL1 },
521 { "id_mmfr2_el1", MISCREG_ID_MMFR2_EL1 },
522 { "id_mmfr3_el1", MISCREG_ID_MMFR3_EL1 },
523 { "id_mmfr4_el1", MISCREG_ID_MMFR4_EL1 },
524 { "id_isar0_el1", MISCREG_ID_ISAR0_EL1 },
525 { "id_isar1_el1", MISCREG_ID_ISAR1_EL1 },
526 { "id_isar2_el1", MISCREG_ID_ISAR2_EL1 },
527 { "id_isar3_el1", MISCREG_ID_ISAR3_EL1 },
528 { "id_isar4_el1", MISCREG_ID_ISAR4_EL1 },
529 { "id_isar5_el1", MISCREG_ID_ISAR5_EL1 },
530 { "id_isar6_el1", MISCREG_ID_ISAR6_EL1 },
531 { "mvfr0_el1", MISCREG_MVFR0_EL1 },
532 { "mvfr1_el1", MISCREG_MVFR1_EL1 },
533 { "mvfr2_el1", MISCREG_MVFR2_EL1 },
534 { "id_aa64pfr0_el1", MISCREG_ID_AA64PFR0_EL1 },
535 { "id_aa64pfr1_el1", MISCREG_ID_AA64PFR1_EL1 },
536 { "id_aa64dfr0_el1", MISCREG_ID_AA64DFR0_EL1 },
537 { "id_aa64dfr1_el1", MISCREG_ID_AA64DFR1_EL1 },
538 { "id_aa64afr0_el1", MISCREG_ID_AA64AFR0_EL1 },
539 { "id_aa64afr1_el1", MISCREG_ID_AA64AFR1_EL1 },
540 { "id_aa64isar0_el1", MISCREG_ID_AA64ISAR0_EL1 },
541 { "id_aa64isar1_el1", MISCREG_ID_AA64ISAR1_EL1 },
542 { "id_aa64mmfr0_el1", MISCREG_ID_AA64MMFR0_EL1 },
543 { "id_aa64mmfr1_el1", MISCREG_ID_AA64MMFR1_EL1 },
544 { "id_aa64mmfr2_el1", MISCREG_ID_AA64MMFR2_EL1 },
545 { "ccsidr_el1", MISCREG_CCSIDR_EL1 },
546 { "clidr_el1", MISCREG_CLIDR_EL1 },
547 { "aidr_el1", MISCREG_AIDR_EL1 },
548 { "csselr_el1", MISCREG_CSSELR_EL1 },
549 { "ctr_el0", MISCREG_CTR_EL0 },
550 { "dczid_el0", MISCREG_DCZID_EL0 },
551 { "vpidr_el2", MISCREG_VPIDR_EL2 },
552 { "vmpidr_el2", MISCREG_VMPIDR_EL2 },
553 { "sctlr_el1", MISCREG_SCTLR_EL1 },
554 { "actlr_el1", MISCREG_ACTLR_EL1 },
555 { "cpacr_el1", MISCREG_CPACR_EL1 },
556 { "sctlr_el2", MISCREG_SCTLR_EL2 },
557 { "actlr_el2", MISCREG_ACTLR_EL2 },
558 { "hcr_el2", MISCREG_HCR_EL2 },
559 { "mdcr_el2", MISCREG_MDCR_EL2 },
560 { "cptr_el2", MISCREG_CPTR_EL2 },
561 { "hstr_el2", MISCREG_HSTR_EL2 },
562 { "hacr_el2", MISCREG_HACR_EL2 },
563 { "sctlr_el3", MISCREG_SCTLR_EL3 },
564 { "actlr_el3", MISCREG_ACTLR_EL3 },
565 { "scr_el3", MISCREG_SCR_EL3 },
566 { "sder32_el3", MISCREG_SDER32_EL3 },
567 { "cptr_el3", MISCREG_CPTR_EL3 },
568 { "mdcr_el3", MISCREG_MDCR_EL3 },
569 { "ttbr0_el1", MISCREG_TTBR0_EL1 },
570 { "ttbr1_el1", MISCREG_TTBR1_EL1 },
571 { "tcr_el1", MISCREG_TCR_EL1 },
572 { "ttbr0_el2", MISCREG_TTBR0_EL2 },
573 { "tcr_el2", MISCREG_TCR_EL2 },
574 { "vttbr_el2", MISCREG_VTTBR_EL2 },
575 { "vtcr_el2", MISCREG_VTCR_EL2 },
576 { "ttbr0_el3", MISCREG_TTBR0_EL3 },
577 { "tcr_el3", MISCREG_TCR_EL3 },
578 { "dacr32_el2", MISCREG_DACR32_EL2 },
579 { "spsr_el1", MISCREG_SPSR_EL1 },
580 { "elr_el1", MISCREG_ELR_EL1 },
581 { "sp_el0", MISCREG_SP_EL0 },
582 { "spsel", MISCREG_SPSEL },
583 { "currentel", MISCREG_CURRENTEL },
584 { "nzcv", MISCREG_NZCV },
585 { "daif", MISCREG_DAIF },
586 { "fpcr", MISCREG_FPCR },
587 { "fpsr", MISCREG_FPSR },
588 { "dspsr_el0", MISCREG_DSPSR_EL0 },
589 { "dlr_el0", MISCREG_DLR_EL0 },
590 { "spsr_el2", MISCREG_SPSR_EL2 },
591 { "elr_el2", MISCREG_ELR_EL2 },
592 { "sp_el1", MISCREG_SP_EL1 },
593 { "spsr_irq", MISCREG_SPSR_IRQ_AA64 },
594 { "spsr_abt", MISCREG_SPSR_ABT_AA64 },
595 { "spsr_und", MISCREG_SPSR_UND_AA64 },
596 { "spsr_fiq", MISCREG_SPSR_FIQ_AA64 },
597 { "spsr_el3", MISCREG_SPSR_EL3 },
598 { "elr_el3", MISCREG_ELR_EL3 },
599 { "sp_el2", MISCREG_SP_EL2 },
600 { "afsr0_el1", MISCREG_AFSR0_EL1 },
601 { "afsr1_el1", MISCREG_AFSR1_EL1 },
602 { "esr_el1", MISCREG_ESR_EL1 },
603 { "ifsr32_el2", MISCREG_IFSR32_EL2 },
604 { "afsr0_el2", MISCREG_AFSR0_EL2 },
605 { "afsr1_el2", MISCREG_AFSR1_EL2 },
606 { "esr_el2", MISCREG_ESR_EL2 },
607 { "fpexc32_el2", MISCREG_FPEXC32_EL2 },
608 { "afsr0_el3", MISCREG_AFSR0_EL3 },
609 { "afsr1_el3", MISCREG_AFSR1_EL3 },
610 { "esr_el3", MISCREG_ESR_EL3 },
611 { "far_el1", MISCREG_FAR_EL1 },
612 { "far_el2", MISCREG_FAR_EL2 },
613 { "hpfar_el2", MISCREG_HPFAR_EL2 },
614 { "far_el3", MISCREG_FAR_EL3 },
615 { "ic_ialluis", MISCREG_IC_IALLUIS },
616 { "par_el1", MISCREG_PAR_EL1 },
617 { "ic_iallu", MISCREG_IC_IALLU },
618 { "dc_ivac_xt", MISCREG_DC_IVAC_Xt },
619 { "dc_isw_xt", MISCREG_DC_ISW_Xt },
620 { "at_s1e1r_xt", MISCREG_AT_S1E1R_Xt },
621 { "at_s1e1w_xt", MISCREG_AT_S1E1W_Xt },
622 { "at_s1e0r_xt", MISCREG_AT_S1E0R_Xt },
623 { "at_s1e0w_xt", MISCREG_AT_S1E0W_Xt },
624 { "dc_csw_xt", MISCREG_DC_CSW_Xt },
625 { "dc_cisw_xt", MISCREG_DC_CISW_Xt },
626 { "dc_zva_xt", MISCREG_DC_ZVA_Xt },
627 { "ic_ivau_xt", MISCREG_IC_IVAU_Xt },
628 { "dc_cvac_xt", MISCREG_DC_CVAC_Xt },
629 { "dc_cvau_xt", MISCREG_DC_CVAU_Xt },
630 { "dc_civac_xt", MISCREG_DC_CIVAC_Xt },
631 { "at_s1e2r_xt", MISCREG_AT_S1E2R_Xt },
632 { "at_s1e2w_xt", MISCREG_AT_S1E2W_Xt },
633 { "at_s12e1r_xt", MISCREG_AT_S12E1R_Xt },
634 { "at_s12e1w_xt", MISCREG_AT_S12E1W_Xt },
635 { "at_s12e0r_xt", MISCREG_AT_S12E0R_Xt },
636 { "at_s12e0w_xt", MISCREG_AT_S12E0W_Xt },
637 { "at_s1e3r_xt", MISCREG_AT_S1E3R_Xt },
638 { "at_s1e3w_xt", MISCREG_AT_S1E3W_Xt },
639 { "tlbi_vmalle1is", MISCREG_TLBI_VMALLE1IS },
640 { "tlbi_vae1is", MISCREG_TLBI_VAE1IS },
641 { "tlbi_aside1is", MISCREG_TLBI_ASIDE1IS },
642 { "tlbi_vaae1is", MISCREG_TLBI_VAAE1IS },
643 { "tlbi_vale1is", MISCREG_TLBI_VALE1IS },
644 { "tlbi_vaale1is", MISCREG_TLBI_VAALE1IS },
645 { "tlbi_vmalle1", MISCREG_TLBI_VMALLE1 },
646 { "tlbi_vae1", MISCREG_TLBI_VAE1 },
647 { "tlbi_aside1", MISCREG_TLBI_ASIDE1 },
648 { "tlbi_vaae1", MISCREG_TLBI_VAAE1 },
649 { "tlbi_vale1", MISCREG_TLBI_VALE1 },
650 { "tlbi_vaale1", MISCREG_TLBI_VAALE1 },
651 { "tlbi_ipas2e1is", MISCREG_TLBI_IPAS2E1IS },
652 { "tlbi_ipas2le1is", MISCREG_TLBI_IPAS2LE1IS },
653 { "tlbi_alle2is", MISCREG_TLBI_ALLE2IS },
654 { "tlbi_vae2is", MISCREG_TLBI_VAE2IS },
655 { "tlbi_alle1is", MISCREG_TLBI_ALLE1IS },
656 { "tlbi_vale2is", MISCREG_TLBI_VALE2IS },
657 { "tlbi_vmalls12e1is", MISCREG_TLBI_VMALLS12E1IS },
658 { "tlbi_ipas2e1", MISCREG_TLBI_IPAS2E1 },
659 { "tlbi_ipas2le1", MISCREG_TLBI_IPAS2LE1 },
660 { "tlbi_alle2", MISCREG_TLBI_ALLE2 },
661 { "tlbi_vae2", MISCREG_TLBI_VAE2 },
662 { "tlbi_alle1", MISCREG_TLBI_ALLE1 },
663 { "tlbi_vale2", MISCREG_TLBI_VALE2 },
664 { "tlbi_vmalls12e1", MISCREG_TLBI_VMALLS12E1 },
665 { "tlbi_alle3is", MISCREG_TLBI_ALLE3IS },
666 { "tlbi_vae3is", MISCREG_TLBI_VAE3IS },
667 { "tlbi_vale3is", MISCREG_TLBI_VALE3IS },
668 { "tlbi_alle3", MISCREG_TLBI_ALLE3 },
669 { "tlbi_vae3", MISCREG_TLBI_VAE3 },
670 { "tlbi_vale3", MISCREG_TLBI_VALE3 },
671 { "pmintenset_el1", MISCREG_PMINTENSET_EL1 },
672 { "pmintenclr_el1", MISCREG_PMINTENCLR_EL1 },
673 { "pmcr_el0", MISCREG_PMCR_EL0 },
674 { "pmcntenset_el0", MISCREG_PMCNTENSET_EL0 },
675 { "pmcntenclr_el0", MISCREG_PMCNTENCLR_EL0 },
676 { "pmovsclr_el0", MISCREG_PMOVSCLR_EL0 },
677 { "pmswinc_el0", MISCREG_PMSWINC_EL0 },
678 { "pmselr_el0", MISCREG_PMSELR_EL0 },
679 { "pmceid0_el0", MISCREG_PMCEID0_EL0 },
680 { "pmceid1_el0", MISCREG_PMCEID1_EL0 },
681 { "pmccntr_el0", MISCREG_PMCCNTR_EL0 },
682 { "pmxevtyper_el0", MISCREG_PMXEVTYPER_EL0 },
683 { "pmccfiltr_el0", MISCREG_PMCCFILTR_EL0 },
684 { "pmxevcntr_el0", MISCREG_PMXEVCNTR_EL0 },
685 { "pmuserenr_el0", MISCREG_PMUSERENR_EL0 },
686 { "pmovsset_el0", MISCREG_PMOVSSET_EL0 },
687 { "mair_el1", MISCREG_MAIR_EL1 },
688 { "amair_el1", MISCREG_AMAIR_EL1 },
689 { "mair_el2", MISCREG_MAIR_EL2 },
690 { "amair_el2", MISCREG_AMAIR_EL2 },
691 { "mair_el3", MISCREG_MAIR_EL3 },
692 { "amair_el3", MISCREG_AMAIR_EL3 },
693 { "l2ctlr_el1", MISCREG_L2CTLR_EL1 },
694 { "l2ectlr_el1", MISCREG_L2ECTLR_EL1 },
695 { "vbar_el1", MISCREG_VBAR_EL1 },
696 { "rvbar_el1", MISCREG_RVBAR_EL1 },
697 { "isr_el1", MISCREG_ISR_EL1 },
698 { "vbar_el2", MISCREG_VBAR_EL2 },
699 { "rvbar_el2", MISCREG_RVBAR_EL2 },
700 { "vbar_el3", MISCREG_VBAR_EL3 },
701 { "rvbar_el3", MISCREG_RVBAR_EL3 },
702 { "rmr_el3", MISCREG_RMR_EL3 },
703 { "contextidr_el1", MISCREG_CONTEXTIDR_EL1 },
704 { "contextidr_el2", MISCREG_CONTEXTIDR_EL2 },
705 { "tpidr_el1", MISCREG_TPIDR_EL1 },
706 { "tpidr_el0", MISCREG_TPIDR_EL0 },
707 { "tpidrro_el0", MISCREG_TPIDRRO_EL0 },
708 { "tpidr_el2", MISCREG_TPIDR_EL2 },
709 { "tpidr_el3", MISCREG_TPIDR_EL3 },
710 { "cntkctl_el1", MISCREG_CNTKCTL_EL1 },
711 { "cntfrq_el0", MISCREG_CNTFRQ_EL0 },
712 { "cntpct_el0", MISCREG_CNTPCT_EL0 },
713 { "cntvct_el0", MISCREG_CNTVCT_EL0 },
714 { "cntp_tval_el0", MISCREG_CNTP_TVAL_EL0 },
715 { "cntp_ctl_el0", MISCREG_CNTP_CTL_EL0 },
716 { "cntp_cval_el0", MISCREG_CNTP_CVAL_EL0 },
717 { "cntv_tval_el0", MISCREG_CNTV_TVAL_EL0 },
718 { "cntv_ctl_el0", MISCREG_CNTV_CTL_EL0 },
719 { "cntv_cval_el0", MISCREG_CNTV_CVAL_EL0 },
720 { "pmevcntr0_el0", MISCREG_PMEVCNTR0_EL0 },
721 { "pmevcntr1_el0", MISCREG_PMEVCNTR1_EL0 },
722 { "pmevcntr2_el0", MISCREG_PMEVCNTR2_EL0 },
723 { "pmevcntr3_el0", MISCREG_PMEVCNTR3_EL0 },
724 { "pmevcntr4_el0", MISCREG_PMEVCNTR4_EL0 },
725 { "pmevcntr5_el0", MISCREG_PMEVCNTR5_EL0 },
726 { "pmevtyper0_el0", MISCREG_PMEVTYPER0_EL0 },
727 { "pmevtyper1_el0", MISCREG_PMEVTYPER1_EL0 },
728 { "pmevtyper2_el0", MISCREG_PMEVTYPER2_EL0 },
729 { "pmevtyper3_el0", MISCREG_PMEVTYPER3_EL0 },
730 { "pmevtyper4_el0", MISCREG_PMEVTYPER4_EL0 },
731 { "pmevtyper5_el0", MISCREG_PMEVTYPER5_EL0 },
732 { "cntvoff_el2", MISCREG_CNTVOFF_EL2 },
733 { "cnthctl_el2", MISCREG_CNTHCTL_EL2 },
734 { "cnthp_tval_el2", MISCREG_CNTHP_TVAL_EL2 },
735 { "cnthp_ctl_el2", MISCREG_CNTHP_CTL_EL2 },
736 { "cnthp_cval_el2", MISCREG_CNTHP_CVAL_EL2 },
737 { "cntps_tval_el1", MISCREG_CNTPS_TVAL_EL1 },
738 { "cntps_ctl_el1", MISCREG_CNTPS_CTL_EL1 },
739 { "cntps_cval_el1", MISCREG_CNTPS_CVAL_EL1 },
740 { "il1data0_el1", MISCREG_IL1DATA0_EL1 },
741 { "il1data1_el1", MISCREG_IL1DATA1_EL1 },
742 { "il1data2_el1", MISCREG_IL1DATA2_EL1 },
743 { "il1data3_el1", MISCREG_IL1DATA3_EL1 },
744 { "dl1data0_el1", MISCREG_DL1DATA0_EL1 },
745 { "dl1data1_el1", MISCREG_DL1DATA1_EL1 },
746 { "dl1data2_el1", MISCREG_DL1DATA2_EL1 },
747 { "dl1data3_el1", MISCREG_DL1DATA3_EL1 },
748 { "dl1data4_el1", MISCREG_DL1DATA4_EL1 },
749 { "l2actlr_el1", MISCREG_L2ACTLR_EL1 },
750 { "cpuactlr_el1", MISCREG_CPUACTLR_EL1 },
751 { "cpuectlr_el1", MISCREG_CPUECTLR_EL1 },
752 { "cpumerrsr_el1", MISCREG_CPUMERRSR_EL1 },
753 { "l2merrsr_el1", MISCREG_L2MERRSR_EL1 },
754 { "cbar_el1", MISCREG_CBAR_EL1 },
755};
756
757void
759{
760 std::ostream &outs = trace::output();
761
763 end = destRegRecords.end();
764
766
767 for (; it != end; ++it) {
768 values.clear();
769 switch (it->type) {
770 case REG_R:
771 case REG_X:
772 values.push_back(thread->getReg(intRegClass[it->index]));
773 break;
774 case REG_S:
777 thread->getReg(vecRegClass[it->index], &vc);
778 auto vv = vc.as<uint32_t>();
779 values.push_back(vv[0]);
780 } else {
781 const VecElem elem = thread->getReg(vecElemClass[it->index]);
782 values.push_back(elem);
783 }
784 break;
785 case REG_D:
788 thread->getReg(vecRegClass[it->index], &vc);
789 auto vv = vc.as<uint64_t>();
790 values.push_back(vv[0]);
791 } else {
792 const VecElem w0 = thread->getReg(vecElemClass[it->index]);
793 const VecElem w1 = thread->getReg(vecElemClass[it->index + 1]);
794
795 values.push_back((uint64_t)(w1) << 32 | w0);
796 }
797 break;
798 case REG_P:
799 {
801 thread->getReg(vecPredRegClass[it->index], &pc);
802 auto pv = pc.as<uint8_t>();
803 uint64_t p = 0;
804 for (int i = maxVectorLength * 8; i > 0; ) {
805 p = (p << 1) | pv[--i];
806 }
807 values.push_back(p);
808 }
809 break;
810 case REG_Q:
813 thread->getReg(vecRegClass[it->index], &vc);
814 auto vv = vc.as<uint64_t>();
815 values.push_back(vv[0]);
816 values.push_back(vv[1]);
817 } else {
818 const VecElem w0 = thread->getReg(vecElemClass[it->index]);
819 const VecElem w1 = thread->getReg(vecElemClass[it->index + 1]);
820 const VecElem w2 = thread->getReg(vecElemClass[it->index + 2]);
821 const VecElem w3 = thread->getReg(vecElemClass[it->index + 3]);
822
823 values.push_back((uint64_t)(w1) << 32 | w0);
824 values.push_back((uint64_t)(w3) << 32 | w2);
825 }
826 break;
827 case REG_Z:
828 {
829 int8_t i = maxVectorLength;
831 thread->getReg(vecRegClass[it->index], &vc);
832 auto vv = vc.as<uint64_t>();
833 while (i > 0) {
834 values.push_back(vv[--i]);
835 }
836 }
837 break;
838 case REG_MISC:
839 if (it->index == MISCREG_CPSR) {
840 // Read condition codes from aliased integer regs
841 CPSR cpsr = thread->readMiscRegNoEffect(it->index);
842 cpsr.nz = thread->getReg(cc_reg::Nz);
843 cpsr.c = thread->getReg(cc_reg::C);
844 cpsr.v = thread->getReg(cc_reg::V);
845 cpsr.ge = thread->getReg(cc_reg::Ge);
846 values.push_back(cpsr);
847 } else if (it->index == MISCREG_NZCV) {
848 CPSR cpsr = 0;
849 cpsr.nz = thread->getReg(cc_reg::Nz);
850 cpsr.c = thread->getReg(cc_reg::C);
851 cpsr.v = thread->getReg(cc_reg::V);
852 values.push_back(cpsr);
853 } else if (it->index == MISCREG_FPCR) {
854 // Read FPSCR and extract FPCR value
856 const uint32_t ones = (uint32_t)(-1);
857 FPSCR fpcrMask = 0;
858 fpcrMask.ioe = ones;
859 fpcrMask.dze = ones;
860 fpcrMask.ofe = ones;
861 fpcrMask.ufe = ones;
862 fpcrMask.ixe = ones;
863 fpcrMask.ide = ones;
864 fpcrMask.len = ones;
865 fpcrMask.stride = ones;
866 fpcrMask.rMode = ones;
867 fpcrMask.fz = ones;
868 fpcrMask.dn = ones;
869 fpcrMask.ahp = ones;
870 values.push_back(fpscr & fpcrMask);
871 } else if (it->index == MISCREG_FPSR) {
872 // Read FPSCR and extract FPSR value
874 const uint32_t ones = (uint32_t)(-1);
875 FPSCR fpsrMask = 0;
876 fpsrMask.ioc = ones;
877 fpsrMask.dzc = ones;
878 fpsrMask.ofc = ones;
879 fpsrMask.ufc = ones;
880 fpsrMask.ixc = ones;
881 fpsrMask.idc = ones;
882 fpsrMask.qc = ones;
883 fpsrMask.v = ones;
884 fpsrMask.c = ones;
885 fpsrMask.z = ones;
886 fpsrMask.n = ones;
887 values.push_back(fpscr & fpsrMask);
888 } else {
889 values.push_back(thread->readMiscRegNoEffect(it->index));
890 }
891 break;
892 default:
893 panic("Unknown TARMAC trace record type!");
894 }
895
896 bool same = true;
897 if (values.size() != it->values.size()) same = false;
898
899 uint32_t size = values.size();
900 if (size > it->values.size())
901 size = it->values.size();
902
903 if (same) {
904 for (int i = 0; i < size; ++i) {
905 if (values[i] != it->values[i]) {
906 same = false;
907 break;
908 }
909 }
910 }
911
912 if (!same) {
913 if (!mismatch) {
915 mismatch = true;
916 }
917 outs << "diff> [" << it->repr << "] gem5: 0x" << std::hex;
918 for (auto v : values)
919 outs << std::setw(16) << std::setfill('0') << v;
920
921 outs << ", TARMAC: 0x" << std::hex;
922 for (auto v : it->values)
923 outs << std::setw(16) << std::setfill('0') << v;
924 outs << std::endl;
925 }
926 }
927 destRegRecords.clear();
928
931 exitSimLoop("a mismatch with the TARMAC trace has been detected "
932 "on PC or opcode", 1);
934 exitSimLoop("a mismatch with the TARMAC trace has been detected "
935 "on data value", 1);
936}
937
938const char *
940{
941 return "TARMAC parser record event";
942}
943
944
945void
947 const PCStateBase &pc)
948{
949 std::ostream &outs = trace::output();
950 outs << "\nMismatch between gem5 and TARMAC trace @ " << std::dec
951 << curTick() << " ticks\n"
952 << "[seq_num: " << std::dec << instRecord.seq_num
953 << ", opcode: 0x" << std::hex << (staticInst->getEMI() & 0xffffffff)
954 << ", PC: 0x" << pc.instAddr()
955 << ", disasm: " << staticInst->disassemble(pc.instAddr()) << "]"
956 << std::endl;
957}
958
960 const StaticInstPtr _staticInst,
961 const PCStateBase &_pc,
962 TarmacParser& _parent,
963 const StaticInstPtr _macroStaticInst)
964 : TarmacBaseRecord(_when, _thread, _staticInst,
965 _pc, _macroStaticInst),
966 parsingStarted(false), mismatch(false),
967 mismatchOnPcOrOpcode(false), parent(_parent)
968{
969 memReq = std::make_shared<Request>();
970 if (maxVectorLength == 0) {
971 maxVectorLength = ArmStaticInst::getCurSveVecLen<uint64_t>(_thread);
972 }
973}
974
975void
977{
978 std::ostream &outs = trace::output();
979
980 uint64_t written_data = 0;
981 unsigned mem_flags = 3 | ArmISA::MMU::AllowUnaligned;
982
983 ISetState isetstate;
984
986
988 // A microop faulted and it was not the last microop -> advance
989 // TARMAC trace to next instruction
990 advanceTrace();
991 }
992
994
995 auto arm_inst = static_cast<const ArmStaticInst*>(
997 );
998
999 while (advanceTrace()) {
1000 switch (currRecordType) {
1001
1002 case TARMAC_INST:
1003 parsingStarted = true;
1004 if (pc->instAddr() != instRecord.addr) {
1005 if (!mismatch)
1007 outs << "diff> [PC] gem5: 0x" << std::hex << pc->instAddr()
1008 << ", TARMAC: 0x" << instRecord.addr << std::endl;
1009 mismatch = true;
1010 mismatchOnPcOrOpcode = true;
1011 }
1012
1013 if (arm_inst->encoding() != instRecord.opcode) {
1014 if (!mismatch)
1016 outs << "diff> [opcode] gem5: 0x" << std::hex
1017 << arm_inst->encoding()
1018 << ", TARMAC: 0x" << instRecord.opcode << std::endl;
1019 mismatch = true;
1020 mismatchOnPcOrOpcode = true;
1021 }
1022
1023 // Set the Instruction set state.
1024 isetstate = pcToISetState(*pc);
1025
1026 if (instRecord.isetstate != isetstate &&
1027 isetstate != ISET_UNSUPPORTED) {
1028 if (!mismatch)
1030 outs << "diff> [iset_state] gem5: "
1031 << iSetStateToStr(isetstate)
1032 << ", TARMAC: "
1034 mismatch = true;
1035 }
1036
1037 // TODO(Giacomo): add support for predicate and mode checking
1038 break;
1039
1040 case TARMAC_REG:
1041 destRegRecords.push_back(regRecord);
1042 break;
1043
1044 case TARMAC_MEM:
1045 if (!readMemNoEffect(memRecord.addr, (uint8_t*) &written_data,
1046 memRecord.size, mem_flags))
1047 break;
1048 if (written_data != memRecord.data) {
1049 if (!mismatch)
1051 outs << "diff> [mem(0x" << std::hex << memRecord.addr
1052 << ")] gem5: 0x" << written_data
1053 << ", TARMAC: 0x" << memRecord.data
1054 << std::endl;
1055 }
1056 break;
1057
1058 case TARMAC_UNSUPPORTED:
1059 break;
1060
1061 default:
1062 panic("Unknown TARMAC trace record type!");
1063 }
1064 }
1065 // We are done with the current instruction, i.e. all the corresponding
1066 // entries in the TARMAC trace have been parsed
1067 if (destRegRecords.size()) {
1071 mainEventQueue[0]->schedule(event, curTick());
1072 } else if (mismatchOnPcOrOpcode && (parent.exitOnDiff ||
1074 exitSimLoop("a mismatch with the TARMAC trace has been detected "
1075 "on PC or opcode", 1);
1076 }
1077 } else {
1079 }
1080}
1081
1082bool
1084{
1085 std::ifstream& trace = parent.trace;
1086 trace >> std::hex; // All integer values are in hex base
1087
1088 if (buf[0] != 'I') {
1089 trace >> buf;
1090 if (trace.eof())
1091 return false;
1092 trace >> buf >> buf;
1093 if (parent.cpuId) {
1094 assert((buf[0] == 'c') && (buf[1] == 'p') && (buf[2] == 'u'));
1095 trace >> buf;
1096 }
1097 }
1098
1099 if (trace.eof())
1100 return false;
1101
1102 if (buf[0] == 'I') {
1103 // Instruction trace record
1104 if (parsingStarted)
1105 return false;
1107 instRecord.taken = (buf[1] == 'T');
1108 trace >> buf;
1109 instRecord.seq_num = atoi(&buf[1]);
1110 trace >> instRecord.addr;
1111 char c = trace.peek();
1112 if (c == ':') {
1113 // Skip phys. address and _S/_NS suffix
1114 trace >> c >> buf;
1115 }
1116 trace >> instRecord.opcode;
1117 trace >> buf;
1118 switch (buf[0]) {
1119 case 'A':
1121 break;
1122 case 'T':
1124 break;
1125 case 'O':
1127 break;
1128 default:
1129 warn("Invalid TARMAC trace record (seq_num: %lld)",
1133 break;
1134 }
1135 trace.ignore(MaxLineLength, '\n');
1136 buf[0] = 0;
1137 } else if (buf[0] == 'R') {
1138 // Register trace record
1140 regRecord.values.clear();
1141 trace >> buf;
1142 strcpy(regRecord.repr, buf);
1143 if (std::tolower(buf[0]) == 'r' && isdigit(buf[1])) {
1144 // R register
1146 int base_index = atoi(&buf[1]);
1147 char* pch = strchr(buf, '_');
1148 if (pch == NULL) {
1149 regRecord.index = int_reg::usr(base_index);
1150 } else {
1151 ++pch;
1152 if (strncmp(pch, "usr", 3) == 0)
1153 regRecord.index = int_reg::usr(base_index);
1154 else if (strncmp(pch, "fiq", 3) == 0)
1155 regRecord.index = int_reg::fiq(base_index);
1156 else if (strncmp(pch, "irq", 3) == 0)
1157 regRecord.index = int_reg::irq(base_index);
1158 else if (strncmp(pch, "svc", 3) == 0)
1159 regRecord.index = int_reg::svc(base_index);
1160 else if (strncmp(pch, "mon", 3) == 0)
1161 regRecord.index = int_reg::mon(base_index);
1162 else if (strncmp(pch, "abt", 3) == 0)
1163 regRecord.index = int_reg::abt(base_index);
1164 else if (strncmp(pch, "und", 3) == 0)
1165 regRecord.index = int_reg::und(base_index);
1166 else if (strncmp(pch, "hyp", 3) == 0)
1167 regRecord.index = int_reg::hyp(base_index);
1168 }
1169 } else if (std::tolower(buf[0]) == 'x' && isdigit(buf[1])) {
1170 // X register (A64)
1172 regRecord.index = atoi(&buf[1]);
1173 } else if (std::tolower(buf[0]) == 's' && isdigit(buf[1])) {
1174 // S register
1176 regRecord.index = atoi(&buf[1]);
1177 } else if (std::tolower(buf[0]) == 'd' && isdigit(buf[1])) {
1178 // D register
1180 regRecord.index = atoi(&buf[1]);
1181 } else if (std::tolower(buf[0]) == 'q' && isdigit(buf[1])) {
1182 // Q register
1184 regRecord.index = atoi(&buf[1]);
1185 } else if (std::tolower(buf[0]) == 'z' && isdigit(buf[1])) {
1186 // Z (SVE vector) register
1188 regRecord.index = atoi(&buf[1]);
1189 } else if (std::tolower(buf[0]) == 'p' && isdigit(buf[1])) {
1190 // P (SVE predicate) register
1192 regRecord.index = atoi(&buf[1]);
1193 } else if (strncmp(buf, "SP_EL", 5) == 0) {
1194 // A64 stack pointer
1196 regRecord.index = int_reg::Sp0 + atoi(&buf[5]);
1197 } else if (miscRegMap.count(buf)) {
1198 // Misc. register
1201 } else {
1202 // Try match with upper case name (misc. register)
1203 std::string reg_name = buf;
1204 std::transform(reg_name.begin(), reg_name.end(), reg_name.begin(),
1205 ::tolower);
1206 if (miscRegMap.count(reg_name.c_str())) {
1208 regRecord.index = miscRegMap[reg_name.c_str()];
1209 } else {
1210 warn("Unknown register in TARMAC trace (%s).\n", buf);
1212 trace.ignore(MaxLineLength, '\n');
1213 buf[0] = 0;
1214 return true;
1215 }
1216 }
1217 if (regRecord.type == REG_Q) {
1218 trace.ignore();
1219 trace.get(buf, 17);
1220 uint64_t hi = strtoull(buf, NULL, 16);
1221 trace.get(buf, 17);
1222 uint64_t lo = strtoull(buf, NULL, 16);
1223 regRecord.values.push_back(lo);
1224 regRecord.values.push_back(hi);
1225 } else if (regRecord.type == REG_Z) {
1227 for (uint8_t i = 0; i < maxVectorLength; ++i) {
1228 uint64_t v;
1229 trace >> v;
1230 char c;
1231 trace >> c;
1232 assert(c == '_');
1233
1234 uint64_t lsw = 0;
1235 trace >> lsw;
1236 v = (v << 32) | lsw;
1237 if (i < maxVectorLength - 1) trace >> c;
1238 regRecord.values[i] = v;
1239 }
1240 } else {
1241 // REG_P values are also parsed here
1242 uint64_t v;
1243 trace >> v;
1244 char c = trace.peek();
1245 if ((c == ':') || (c == '_')) {
1246 // 64-bit value with : or _ in the middle
1247 uint64_t lsw = 0;
1248 trace >> c >> lsw;
1249 v = (v << 32) | lsw;
1250 }
1251 regRecord.values.push_back(v);
1252 }
1253 trace.ignore(MaxLineLength, '\n');
1254 buf[0] = 0;
1255 } else if (buf[0] == 'M' && (parent.memWrCheck && buf[1] == 'W')) {
1257 memRecord.size = atoi(&buf[2]);
1258 trace >> memRecord.addr;
1259 char c = trace.peek();
1260 if (c == ':') {
1261 // Skip phys. address and _S/_NS suffix
1262 trace >> c >> buf;
1263 }
1264 uint64_t data = 0;
1265 trace >> data;
1266 c = trace.peek();
1267 if (c == '_') {
1268 // 64-bit value with _ in the middle
1269 uint64_t lsw = 0;
1270 trace >> c >> lsw;
1271 data = (data << 32) | lsw;
1272 }
1274 trace.ignore(MaxLineLength, '\n');
1275 buf[0] = 0;
1276 } else {
1278 trace.ignore(MaxLineLength, '\n');
1279 buf[0] = 0;
1280 }
1281
1282 return true;
1283}
1284
1285bool
1287 unsigned flags)
1288{
1289 const RequestPtr &req = memReq;
1290 auto mmu = static_cast<MMU*>(thread->getMMUPtr());
1291
1292 req->setVirt(addr, size, flags, thread->pcState().instAddr(),
1294
1295 // Translate to physical address
1296 Fault fault = mmu->translateAtomic(req, thread, BaseMMU::Read);
1297
1298 // Ignore read if the address falls into the ignored range
1300 return false;
1301
1302 // Now do the access
1303 if (fault == NoFault &&
1304 !req->getFlags().isSet(Request::NO_ACCESS)) {
1305 if (req->isLLSC() || req->isLocalAccess())
1306 // LLSCs and local accesses are ignored
1307 return false;
1308 // the translating proxy will perform the virtual to physical
1309 // translation again
1310 TranslatingPortProxy fs_proxy(thread);
1312 PortProxy &virt_proxy = FullSystem ? fs_proxy : se_proxy;
1313
1314 virt_proxy.readBlob(addr, data, size);
1315 } else {
1316 return false;
1317 }
1318
1319 if (fault != NoFault) {
1320 return false;
1321 }
1322
1323 return true;
1324}
1325
1326void
1328{
1330 Addr pc;
1331 int saved_offset;
1332
1333 trace >> std::hex; // All integer values are in hex base
1334
1335 while (true) {
1336 saved_offset = trace.tellg();
1337 trace >> buf >> buf >> buf;
1338 if (cpuId)
1339 trace >> buf;
1340 if (buf[0] == 'I') {
1341 trace >> buf >> pc;
1342 if (pc == startPc) {
1343 // Set file pointer to the beginning of this line
1344 trace.seekg(saved_offset, std::ios::beg);
1345 return;
1346 } else {
1348 }
1349 } else {
1351 }
1352 if (trace.eof())
1353 panic("End of TARMAC trace reached before start PC\n");
1354 }
1355}
1356
1357const char*
1359{
1360 switch (isetstate) {
1361 case ISET_ARM:
1362 return "ARM (A32)";
1363 case ISET_THUMB:
1364 return "Thumb (A32)";
1365 case ISET_A64:
1366 return "A64";
1367 default:
1368 return "UNSUPPORTED";
1369 }
1370}
1371
1372} // namespace trace
1373} // namespace gem5
const char data[]
Fault translateAtomic(const RequestPtr &req, ThreadContext *tc, Mode mode) override
Definition mmu.hh:240
Addr instAddr() const
Returns the memory address of the instruction this PC points to.
Definition pcstate.hh:108
This object is a proxy for a port or other object which implements the functional response protocol,...
Definition port_proxy.hh:87
void readBlob(Addr addr, void *p, uint64_t size) const
Higher level interfaces based on the above.
T * get() const
Directly access the pointer itself without taking a reference.
Definition refcnt.hh:227
@ NO_ACCESS
The request should not cause a memory access.
Definition request.hh:146
@ funcRequestorId
This requestor id is used for functional requests that don't come from a particular device.
Definition request.hh:282
virtual const std::string & disassemble(Addr pc, const loader::SymbolTable *symtab=nullptr) const
Return string representation of disassembled instruction.
virtual uint64_t getEMI() const
bool isLastMicroop() const
bool isMicroop() const
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual RegVal getReg(const RegId &reg) const
virtual const PCStateBase & pcState() const =0
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
virtual BaseMMU * getMMUPtr()=0
This proxy attempts to translate virtual addresses using the TLBs.
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
Definition vec_reg.hh:126
VecElem * as()
View interposers.
Definition vec_reg.hh:194
Addr addr
The address that was accessed.
Definition insttracer.hh:86
StaticInstPtr staticInst
Definition insttracer.hh:71
ThreadContext * thread
Definition insttracer.hh:68
unsigned flags
The flags that were assigned to the request.
Definition insttracer.hh:88
std::unique_ptr< PCStateBase > pc
Definition insttracer.hh:72
union gem5::trace::InstRecord::Data data
Addr size
The size of the memory request.
Definition insttracer.hh:87
ISetState
ARM instruction set state.
static ISetState pcToISetState(const PCStateBase &pc)
Returns the Instruction Set State according to the current PCState.
TarmacRecordType
TARMAC trace record type.
bool advanceTrace()
Advances the TARMAC trace up to the next instruction, register, or memory access record.
const char * iSetStateToStr(ISetState isetstate) const
Returns the string representation of an instruction set state.
static ParserInstEntry instRecord
Buffer for instruction trace records.
static std::list< ParserRegEntry > destRegRecords
List of records of destination registers.
bool mismatchOnPcOrOpcode
True if a mismatch has been detected for this instruction on PC or opcode.
static char buf[MaxLineLength]
Buffer used for trace file parsing.
static ParserRegEntry regRecord
Buffer for register trace records.
static void printMismatchHeader(const StaticInstPtr inst, const PCStateBase &pc)
Print a mismatch header containing the instruction fields as reported by gem5.
static TarmacRecordType currRecordType
Type of last parsed record.
bool mismatch
True if a mismatch has been detected for this instruction.
RequestPtr memReq
Request for memory write checks.
std::unordered_map< std::string, RegIndex > MiscRegMap
Map from misc.
bool parsingStarted
True if a TARMAC instruction record has already been parsed for this instruction.
bool readMemNoEffect(Addr addr, uint8_t *data, unsigned size, unsigned flags)
Performs a memory access to read the value written by a previous write.
static ParserMemEntry memRecord
Buffer for memory access trace records (stores only).
TarmacParserRecord(Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, const PCStateBase &_pc, TarmacParser &_parent, const StaticInstPtr _macroStaticInst=NULL)
Tarmac Parser: this tracer parses an existing Tarmac trace and it diffs it with gem5 simulation statu...
std::ifstream trace
TARMAC trace file.
bool cpuId
If true, the trace format includes the CPU id.
void advanceTraceToStartPc()
Helper function to advance the trace up to startPc.
bool exitOnDiff
If true, the simulation is stopped as the first mismatch is detected.
bool macroopInProgress
True if a macroop is currently in progress.
bool exitOnInsnDiff
If true, the simulation is stopped as the first mismatch is detected on PC or opcode.
AddrRange ignoredAddrRange
Ignored addresses (ignored if empty).
bool memWrCheck
If true, memory write accesses are checked.
Addr startPc
Tracing starts when the PC gets this value for the first time (ignored if 0x0).
STL list class.
Definition stl.hh:51
STL vector class.
Definition stl.hh:37
bool contains(const Addr &a) const
Determine if the range contains an address.
#define panic(...)
This implements a cprintf based panic() function.
Definition logging.hh:188
uint8_t flags
Definition helpers.cc:87
#define warn(...)
Definition logging.hh:256
constexpr RegId V
Definition cc.hh:96
constexpr RegId C
Definition cc.hh:95
constexpr RegId Ge
Definition cc.hh:97
constexpr RegId Nz
Definition cc.hh:94
static const RegId & und(unsigned index)
Definition int.hh:529
constexpr RegId Sp0
Definition int.hh:233
static const RegId & mon(unsigned index)
Definition int.hh:501
static const RegId & hyp(unsigned index)
Definition int.hh:473
static const RegId & usr(unsigned index)
Definition int.hh:459
static const RegId & fiq(unsigned index)
Definition int.hh:557
static const RegId & irq(unsigned index)
Definition int.hh:543
static const RegId & abt(unsigned index)
Definition int.hh:515
static const RegId & svc(unsigned index)
Definition int.hh:487
Bitfield< 28 > v
Definition misc_types.hh:54
VecPredReg::Container VecPredRegContainer
Definition vec.hh:71
Bitfield< 7 > i
Definition misc_types.hh:67
Bitfield< 19, 16 > lo
constexpr RegClass vecElemClass
Definition vec.hh:105
Bitfield< 29 > c
Definition misc_types.hh:53
constexpr RegClass intRegClass
Definition int.hh:173
constexpr RegClass vecPredRegClass
Definition vec.hh:109
@ MISCREG_PMXEVTYPER_EL0
Definition misc.hh:805
@ MISCREG_AMAIR_EL3
Definition misc.hh:817
@ MISCREG_PMEVTYPER0
Definition misc.hh:385
@ MISCREG_DBGWVR1_EL1
Definition misc.hh:521
@ MISCREG_DBGDRAR
Definition misc.hh:188
@ MISCREG_NSACR
Definition misc.hh:263
@ MISCREG_DL1DATA1
Definition misc.hh:470
@ MISCREG_ID_AA64PFR0_EL1
Definition misc.hh:591
@ MISCREG_DBGWCR5
Definition misc.hh:177
@ MISCREG_CSSELR_NS
Definition misc.hh:249
@ MISCREG_HSTR_EL2
Definition misc.hh:623
@ MISCREG_DBGWVR13_EL1
Definition misc.hh:533
@ MISCREG_PMUSERENR
Definition misc.hh:393
@ MISCREG_DBGBCR15
Definition misc.hh:155
@ MISCREG_DBGOSLSR
Definition misc.hh:206
@ MISCREG_DBGDTRRXext
Definition misc.hh:120
@ MISCREG_ID_MMFR2_EL1
Definition misc.hh:578
@ MISCREG_DCCISW
Definition misc.hh:336
@ MISCREG_DACR_S
Definition misc.hh:285
@ MISCREG_CNTV_CTL_EL0
Definition misc.hh:843
@ MISCREG_DBGWCR8
Definition misc.hh:180
@ MISCREG_HCR
Definition misc.hh:266
@ MISCREG_NMRR_NS
Definition misc.hh:406
@ MISCREG_DBGWVR14
Definition misc.hh:170
@ MISCREG_HDFAR
Definition misc.hh:307
@ MISCREG_MPIDR_EL1
Definition misc.hh:570
@ MISCREG_DFSR_S
Definition misc.hh:288
@ MISCREG_IL1DATA1
Definition misc.hh:466
@ MISCREG_DBGWVR10_EL1
Definition misc.hh:530
@ MISCREG_DL1DATA0
Definition misc.hh:469
@ MISCREG_CPUECTLR_EL1
Definition misc.hh:897
@ MISCREG_ATS1HR
Definition misc.hh:337
@ MISCREG_SCTLR_EL2
Definition misc.hh:616
@ MISCREG_PMSELR_EL0
Definition misc.hh:801
@ MISCREG_ID_DFR0_EL1
Definition misc.hh:574
@ MISCREG_CP15ISB
Definition misc.hh:317
@ MISCREG_PMEVTYPER5
Definition misc.hh:390
@ MISCREG_CNTP_CTL_EL0
Definition misc.hh:840
@ MISCREG_DFAR_NS
Definition misc.hh:302
@ MISCREG_DBGBXVR8
Definition misc.hh:197
@ MISCREG_TLBIMVALIS
Definition misc.hh:343
@ MISCREG_PMOVSSET
Definition misc.hh:396
@ MISCREG_DBGWCR1
Definition misc.hh:173
@ MISCREG_SPSEL
Definition misc.hh:655
@ MISCREG_TCR_EL2
Definition misc.hh:641
@ MISCREG_AT_S1E1W_Xt
Definition misc.hh:698
@ MISCREG_ID_ISAR0_EL1
Definition misc.hh:581
@ MISCREG_DBGWCR5_EL1
Definition misc.hh:541
@ MISCREG_DBGWVR2
Definition misc.hh:158
@ MISCREG_PMEVCNTR5
Definition misc.hh:384
@ MISCREG_DBGDSCRint
Definition misc.hh:114
@ MISCREG_IL1DATA0_EL1
Definition misc.hh:886
@ MISCREG_MIDR_EL1
Definition misc.hh:569
@ MISCREG_SDER
Definition misc.hh:262
@ MISCREG_DBGWCR12_EL1
Definition misc.hh:548
@ MISCREG_OSDLR_EL1
Definition misc.hh:560
@ MISCREG_DL1DATA3
Definition misc.hh:472
@ MISCREG_HTPIDR
Definition misc.hh:441
@ MISCREG_DBGBXVR15
Definition misc.hh:204
@ MISCREG_TLBIMVAALIS
Definition misc.hh:344
@ MISCREG_DBGDEVID0
Definition misc.hh:215
@ MISCREG_CNTFRQ
Definition misc.hh:443
@ MISCREG_DBGDSAR
Definition misc.hh:209
@ MISCREG_CPUMERRSR
Definition misc.hh:479
@ MISCREG_DBGBVR5_EL1
Definition misc.hh:493
@ MISCREG_MAIR_EL1
Definition misc.hh:810
@ MISCREG_DBGBCR2_EL1
Definition misc.hh:506
@ MISCREG_ID_ISAR2_EL1
Definition misc.hh:583
@ MISCREG_TLBIMVAAL
Definition misc.hh:356
@ MISCREG_DBGBVR1_EL1
Definition misc.hh:489
@ MISCREG_PAR_NS
Definition misc.hh:313
@ MISCREG_HAMAIR1
Definition misc.hh:420
@ MISCREG_PMXEVCNTR_EL0
Definition misc.hh:807
@ MISCREG_CONTEXTIDR_EL1
Definition misc.hh:829
@ MISCREG_CNTV_TVAL
Definition misc.hh:457
@ MISCREG_VBAR_EL3
Definition misc.hh:826
@ MISCREG_AIFSR_NS
Definition misc.hh:296
@ MISCREG_DBGWCR10
Definition misc.hh:182
@ MISCREG_DBGBXVR9
Definition misc.hh:198
@ MISCREG_PMEVTYPER1
Definition misc.hh:386
@ MISCREG_CNTPS_TVAL_EL1
Definition misc.hh:856
@ MISCREG_HCPTR
Definition misc.hh:269
@ MISCREG_SPSR_EL2
Definition misc.hh:663
@ MISCREG_DBGWFAR
Definition misc.hh:118
@ MISCREG_FCSEIDR
Definition misc.hh:428
@ MISCREG_DBGWVR7
Definition misc.hh:163
@ MISCREG_ID_MMFR1
Definition misc.hh:234
@ MISCREG_AT_S1E2W_Xt
Definition misc.hh:709
@ MISCREG_PMEVTYPER1_EL0
Definition misc.hh:881
@ MISCREG_DBGBXVR12
Definition misc.hh:201
@ MISCREG_DBGWCR6_EL1
Definition misc.hh:542
@ MISCREG_ID_AFR0_EL1
Definition misc.hh:575
@ MISCREG_DBGBVR2
Definition misc.hh:126
@ MISCREG_DBGBVR7_EL1
Definition misc.hh:495
@ MISCREG_PAR_EL1
Definition misc.hh:693
@ MISCREG_DBGWVR3_EL1
Definition misc.hh:523
@ MISCREG_AT_S12E1W_Xt
Definition misc.hh:711
@ MISCREG_TLBIIPAS2
Definition misc.hh:363
@ MISCREG_ATS12NSOUW
Definition misc.hh:329
@ MISCREG_MAIR_EL2
Definition misc.hh:814
@ MISCREG_CNTV_CVAL
Definition misc.hh:456
@ MISCREG_MDRAR_EL1
Definition misc.hh:557
@ MISCREG_CPACR
Definition misc.hh:259
@ MISCREG_HAMAIR0
Definition misc.hh:419
@ MISCREG_TLBIIPAS2L
Definition misc.hh:364
@ MISCREG_DBGBVR8
Definition misc.hh:132
@ MISCREG_ADFSR_S
Definition misc.hh:294
@ MISCREG_SCR_EL3
Definition misc.hh:628
@ MISCREG_TTBR0_S
Definition misc.hh:274
@ MISCREG_TLBIALLHIS
Definition misc.hh:359
@ MISCREG_IL1DATA1_EL1
Definition misc.hh:887
@ MISCREG_TLBIIPAS2LIS
Definition misc.hh:358
@ MISCREG_TLBIASIDIS
Definition misc.hh:341
@ MISCREG_ID_AA64DFR0_EL1
Definition misc.hh:593
@ MISCREG_ID_ISAR6
Definition misc.hh:244
@ MISCREG_DBGCLAIMCLR
Definition misc.hh:211
@ MISCREG_TPIDRRO_EL0
Definition misc.hh:833
@ MISCREG_DBGBVR3
Definition misc.hh:127
@ MISCREG_DBGWVR5_EL1
Definition misc.hh:525
@ MISCREG_DBGOSLAR
Definition misc.hh:205
@ MISCREG_PMEVTYPER3_EL0
Definition misc.hh:883
@ MISCREG_DBGBCR10
Definition misc.hh:150
@ MISCREG_REVIDR_EL1
Definition misc.hh:571
@ MISCREG_DBGDSCRext
Definition misc.hh:121
@ MISCREG_TCR_EL3
Definition misc.hh:648
@ MISCREG_FPSR
Definition misc.hh:660
@ MISCREG_DBGDIDR
Definition misc.hh:113
@ MISCREG_DBGBVR9_EL1
Definition misc.hh:497
@ MISCREG_HDCR
Definition misc.hh:268
@ MISCREG_AIFSR_S
Definition misc.hh:297
@ MISCREG_ESR_EL1
Definition misc.hh:677
@ MISCREG_PMCCNTR_EL0
Definition misc.hh:804
@ MISCREG_MDCCSR_EL0
Definition misc.hh:552
@ MISCREG_DTLBIMVA
Definition misc.hh:349
@ MISCREG_SPSR_UND_AA64
Definition misc.hh:668
@ MISCREG_DBGWVR13
Definition misc.hh:169
@ MISCREG_AT_S12E0W_Xt
Definition misc.hh:713
@ MISCREG_PMEVTYPER2
Definition misc.hh:387
@ MISCREG_DBGBXVR4
Definition misc.hh:193
@ MISCREG_TCR_EL1
Definition misc.hh:636
@ MISCREG_PMINTENSET
Definition misc.hh:394
@ MISCREG_TTBCR_NS
Definition misc.hh:279
@ MISCREG_PMXEVTYPER
Definition misc.hh:378
@ MISCREG_DBGBCR13_EL1
Definition misc.hh:517
@ MISCREG_TPIDR_EL3
Definition misc.hh:835
@ MISCREG_DBGBVR11
Definition misc.hh:135
@ MISCREG_VMPIDR
Definition misc.hh:252
@ MISCREG_TPIDRURW_S
Definition misc.hh:434
@ MISCREG_CCSIDR_EL1
Definition misc.hh:601
@ MISCREG_DBGBXVR5
Definition misc.hh:194
@ MISCREG_CNTVCT
Definition misc.hh:445
@ MISCREG_TLBIMVALH
Definition misc.hh:368
@ MISCREG_DL1DATA1_EL1
Definition misc.hh:891
@ MISCREG_DBGWCR8_EL1
Definition misc.hh:544
@ MISCREG_AFSR0_EL1
Definition misc.hh:673
@ MISCREG_TCMTR
Definition misc.hh:225
@ MISCREG_DBGWCR13_EL1
Definition misc.hh:549
@ MISCREG_DBGOSDLR
Definition misc.hh:207
@ MISCREG_DBGBXVR3
Definition misc.hh:192
@ MISCREG_DBGWCR11_EL1
Definition misc.hh:547
@ MISCREG_DBGWVR11_EL1
Definition misc.hh:531
@ MISCREG_ID_ISAR5
Definition misc.hh:243
@ MISCREG_BPIALL
Definition misc.hh:318
@ MISCREG_DBGBVR10_EL1
Definition misc.hh:498
@ MISCREG_ID_ISAR3_EL1
Definition misc.hh:584
@ MISCREG_PMEVTYPER4_EL0
Definition misc.hh:884
@ MISCREG_ATS1CUR
Definition misc.hh:324
@ MISCREG_DC_CVAC_Xt
Definition misc.hh:705
@ MISCREG_VPIDR_EL2
Definition misc.hh:607
@ MISCREG_DBGWCR2
Definition misc.hh:174
@ MISCREG_OSLAR_EL1
Definition misc.hh:558
@ MISCREG_CNTPCT_EL0
Definition misc.hh:838
@ MISCREG_DBGWCR4_EL1
Definition misc.hh:540
@ MISCREG_AMAIR0_NS
Definition misc.hh:412
@ MISCREG_DBGBCR14_EL1
Definition misc.hh:518
@ MISCREG_DBGWVR0_EL1
Definition misc.hh:520
@ MISCREG_AFSR1_EL2
Definition misc.hh:681
@ MISCREG_CP15DMB
Definition misc.hh:333
@ MISCREG_DBGBCR0_EL1
Definition misc.hh:504
@ MISCREG_DBGWVR15
Definition misc.hh:171
@ MISCREG_TLBIMVA
Definition misc.hh:352
@ MISCREG_PMEVCNTR4_EL0
Definition misc.hh:878
@ MISCREG_CONTEXTIDR_NS
Definition misc.hh:430
@ MISCREG_DBGBCR6_EL1
Definition misc.hh:510
@ MISCREG_ID_ISAR4
Definition misc.hh:242
@ MISCREG_DBGBCR3_EL1
Definition misc.hh:507
@ MISCREG_SCTLR_EL1
Definition misc.hh:609
@ MISCREG_DBGWVR4_EL1
Definition misc.hh:524
@ MISCREG_TPIDRPRW_NS
Definition misc.hh:439
@ MISCREG_PMEVCNTR3
Definition misc.hh:382
@ MISCREG_AIDR_EL1
Definition misc.hh:603
@ MISCREG_DC_CIVAC_Xt
Definition misc.hh:707
@ MISCREG_DBGDEVID1
Definition misc.hh:214
@ MISCREG_TEECR
Definition misc.hh:216
@ MISCREG_DC_CVAU_Xt
Definition misc.hh:706
@ MISCREG_DBGBXVR7
Definition misc.hh:196
@ MISCREG_AMAIR1_S
Definition misc.hh:416
@ MISCREG_DBGWVR7_EL1
Definition misc.hh:527
@ MISCREG_DBGBVR9
Definition misc.hh:133
@ MISCREG_PMEVTYPER0_EL0
Definition misc.hh:880
@ MISCREG_CPTR_EL2
Definition misc.hh:622
@ MISCREG_DBGBCR8_EL1
Definition misc.hh:512
@ MISCREG_CCSIDR
Definition misc.hh:245
@ MISCREG_FAR_EL1
Definition misc.hh:687
@ MISCREG_TPIDR_EL1
Definition misc.hh:831
@ MISCREG_PMUSERENR_EL0
Definition misc.hh:808
@ MISCREG_DBGWCR0
Definition misc.hh:172
@ MISCREG_AT_S1E2R_Xt
Definition misc.hh:708
@ MISCREG_PMCR
Definition misc.hh:369
@ MISCREG_CNTP_TVAL_NS
Definition misc.hh:453
@ MISCREG_CNTV_CTL
Definition misc.hh:455
@ MISCREG_AFSR1_EL3
Definition misc.hh:685
@ MISCREG_ADFSR_NS
Definition misc.hh:293
@ MISCREG_ID_AA64DFR1_EL1
Definition misc.hh:594
@ MISCREG_DC_CSW_Xt
Definition misc.hh:701
@ MISCREG_JMCR
Definition misc.hh:220
@ MISCREG_RMR_EL3
Definition misc.hh:828
@ MISCREG_ID_AA64ISAR1_EL1
Definition misc.hh:598
@ MISCREG_PMEVCNTR2
Definition misc.hh:381
@ MISCREG_TLBIMVAL
Definition misc.hh:355
@ MISCREG_DL1DATA2_EL1
Definition misc.hh:892
@ MISCREG_DBGBVR0
Definition misc.hh:124
@ MISCREG_PMEVCNTR0_EL0
Definition misc.hh:874
@ MISCREG_TEECR32_EL1
Definition misc.hh:565
@ MISCREG_AFSR0_EL3
Definition misc.hh:684
@ MISCREG_CSSELR_EL1
Definition misc.hh:604
@ MISCREG_MAIR_EL3
Definition misc.hh:816
@ MISCREG_ITLBIALL
Definition misc.hh:345
@ MISCREG_L2MERRSR
Definition misc.hh:480
@ MISCREG_ID_AA64MMFR1_EL1
Definition misc.hh:600
@ MISCREG_DBGPRCR_EL1
Definition misc.hh:561
@ MISCREG_PMOVSR
Definition misc.hh:372
@ MISCREG_TLBIALLNSNH
Definition misc.hh:367
@ MISCREG_CNTHP_TVAL
Definition misc.hh:462
@ MISCREG_ATS12NSOUR
Definition misc.hh:328
@ MISCREG_DBGWCR10_EL1
Definition misc.hh:546
@ MISCREG_CNTVCT_EL0
Definition misc.hh:839
@ MISCREG_DBGBVR14
Definition misc.hh:138
@ MISCREG_DBGBVR8_EL1
Definition misc.hh:496
@ MISCREG_CBAR_EL1
Definition misc.hh:900
@ MISCREG_DL1DATA3_EL1
Definition misc.hh:893
@ MISCREG_RVBAR_EL2
Definition misc.hh:825
@ MISCREG_DBGDEVID2
Definition misc.hh:213
@ MISCREG_SP_EL0
Definition misc.hh:654
@ MISCREG_PMCNTENCLR
Definition misc.hh:371
@ MISCREG_DFAR_S
Definition misc.hh:303
@ MISCREG_DBGBVR0_EL1
Definition misc.hh:488
@ MISCREG_DBGBCR4_EL1
Definition misc.hh:508
@ MISCREG_CPSR
Definition misc.hh:79
@ MISCREG_FPCR
Definition misc.hh:659
@ MISCREG_DBGWCR4
Definition misc.hh:176
@ MISCREG_RMR
Definition misc.hh:425
@ MISCREG_CPACR_EL1
Definition misc.hh:614
@ MISCREG_PMEVTYPER3
Definition misc.hh:388
@ MISCREG_HACR
Definition misc.hh:271
@ MISCREG_DBGBXVR13
Definition misc.hh:202
@ MISCREG_IFSR_NS
Definition misc.hh:290
@ MISCREG_ID_MMFR0
Definition misc.hh:233
@ MISCREG_PMEVTYPER5_EL0
Definition misc.hh:885
@ MISCREG_ID_ISAR0
Definition misc.hh:238
@ MISCREG_DBGBVR2_EL1
Definition misc.hh:490
@ MISCREG_DL1DATA4
Definition misc.hh:473
@ MISCREG_CNTKCTL_EL1
Definition misc.hh:852
@ MISCREG_HMAIR0
Definition misc.hh:417
@ MISCREG_DBGWVR11
Definition misc.hh:167
@ MISCREG_CNTPCT
Definition misc.hh:444
@ MISCREG_SP_EL2
Definition misc.hh:672
@ MISCREG_PMCCFILTR_EL0
Definition misc.hh:806
@ MISCREG_CNTPS_CTL_EL1
Definition misc.hh:854
@ MISCREG_DBGBVR12_EL1
Definition misc.hh:500
@ MISCREG_PMSWINC_EL0
Definition misc.hh:800
@ MISCREG_DBGBVR10
Definition misc.hh:134
@ MISCREG_TTBR1_EL1
Definition misc.hh:634
@ MISCREG_PMEVTYPER2_EL0
Definition misc.hh:882
@ MISCREG_DAIF
Definition misc.hh:658
@ MISCREG_SPSR_ABT_AA64
Definition misc.hh:667
@ MISCREG_ACTLR_NS
Definition misc.hh:257
@ MISCREG_PMINTENSET_EL1
Definition misc.hh:794
@ MISCREG_PMINTENCLR_EL1
Definition misc.hh:795
@ MISCREG_REVIDR
Definition misc.hh:228
@ MISCREG_DBGBCR9
Definition misc.hh:149
@ MISCREG_DL1DATA0_EL1
Definition misc.hh:890
@ MISCREG_PMCCFILTR
Definition misc.hh:391
@ MISCREG_ACTLR_EL3
Definition misc.hh:627
@ MISCREG_ID_PFR1_EL1
Definition misc.hh:573
@ MISCREG_DBGBCR11_EL1
Definition misc.hh:515
@ MISCREG_DBGBCR1_EL1
Definition misc.hh:505
@ MISCREG_TLBIIPAS2IS
Definition misc.hh:357
@ MISCREG_DBGBVR11_EL1
Definition misc.hh:499
@ MISCREG_DBGBCR14
Definition misc.hh:154
@ MISCREG_DBGBCR11
Definition misc.hh:151
@ MISCREG_TEEHBR32_EL1
Definition misc.hh:566
@ MISCREG_DBGBVR13
Definition misc.hh:137
@ MISCREG_ID_MMFR3
Definition misc.hh:236
@ MISCREG_CSSELR_S
Definition misc.hh:250
@ MISCREG_DBGBCR12
Definition misc.hh:152
@ MISCREG_DBGVCR32_EL2
Definition misc.hh:556
@ MISCREG_DBGWVR9_EL1
Definition misc.hh:529
@ MISCREG_L2ECTLR
Definition misc.hh:398
@ MISCREG_ID_PFR0_EL1
Definition misc.hh:572
@ MISCREG_DL1DATA4_EL1
Definition misc.hh:894
@ MISCREG_TLBIMVAAIS
Definition misc.hh:342
@ MISCREG_CNTP_CVAL_NS
Definition misc.hh:450
@ MISCREG_OSECCR_EL1
Definition misc.hh:487
@ MISCREG_RVBAR_EL1
Definition misc.hh:822
@ MISCREG_ISR
Definition misc.hh:426
@ MISCREG_DBGWCR7_EL1
Definition misc.hh:543
@ MISCREG_HAIFSR
Definition misc.hh:299
@ MISCREG_ID_ISAR5_EL1
Definition misc.hh:586
@ MISCREG_PMCEID1
Definition misc.hh:376
@ MISCREG_DBGBVR15_EL1
Definition misc.hh:503
@ MISCREG_ID_ISAR4_EL1
Definition misc.hh:585
@ MISCREG_SCR
Definition misc.hh:261
@ MISCREG_DC_IVAC_Xt
Definition misc.hh:695
@ MISCREG_PMCNTENSET
Definition misc.hh:370
@ MISCREG_DBGBVR7
Definition misc.hh:131
@ MISCREG_DBGWVR9
Definition misc.hh:165
@ MISCREG_ELR_EL2
Definition misc.hh:664
@ MISCREG_MAIR0_S
Definition misc.hh:404
@ MISCREG_CONTEXTIDR_EL2
Definition misc.hh:901
@ MISCREG_CNTP_TVAL_S
Definition misc.hh:454
@ MISCREG_CNTHCTL_EL2
Definition misc.hh:857
@ MISCREG_DBGBXVR6
Definition misc.hh:195
@ MISCREG_DBGBXVR0
Definition misc.hh:189
@ MISCREG_TEEHBR
Definition misc.hh:218
@ MISCREG_MDSCR_EL1
Definition misc.hh:485
@ MISCREG_AMAIR1_NS
Definition misc.hh:415
@ MISCREG_DL1DATA2
Definition misc.hh:471
@ MISCREG_DBGWCR2_EL1
Definition misc.hh:538
@ MISCREG_ID_MMFR4_EL1
Definition misc.hh:580
@ MISCREG_PAR_S
Definition misc.hh:314
@ MISCREG_DBGBCR12_EL1
Definition misc.hh:516
@ MISCREG_ID_DFR0
Definition misc.hh:231
@ MISCREG_CNTP_CTL_S
Definition misc.hh:448
@ MISCREG_DBGDTRTXint
Definition misc.hh:116
@ MISCREG_ID_AA64MMFR0_EL1
Definition misc.hh:599
@ MISCREG_HPFAR
Definition misc.hh:309
@ MISCREG_TPIDRPRW_S
Definition misc.hh:440
@ MISCREG_TLBIMVAHIS
Definition misc.hh:360
@ MISCREG_IC_IALLU
Definition misc.hh:694
@ MISCREG_DBGWCR9
Definition misc.hh:181
@ MISCREG_SPSR_EL3
Definition misc.hh:670
@ MISCREG_AT_S1E1R_Xt
Definition misc.hh:697
@ MISCREG_DTLBIALL
Definition misc.hh:348
@ MISCREG_TLBIALLIS
Definition misc.hh:339
@ MISCREG_AMAIR_EL1
Definition misc.hh:812
@ MISCREG_ESR_EL3
Definition misc.hh:686
@ MISCREG_IL1DATA0
Definition misc.hh:465
@ MISCREG_ATS1HW
Definition misc.hh:338
@ MISCREG_VBAR_S
Definition misc.hh:423
@ MISCREG_AT_S1E3R_Xt
Definition misc.hh:714
@ MISCREG_DC_ZVA_Xt
Definition misc.hh:703
@ MISCREG_ATS1CPR
Definition misc.hh:322
@ MISCREG_TLBIASID
Definition misc.hh:353
@ MISCREG_DBGBXVR10
Definition misc.hh:199
@ MISCREG_ITLBIMVA
Definition misc.hh:346
@ MISCREG_NZCV
Definition misc.hh:657
@ MISCREG_HTTBR
Definition misc.hh:477
@ MISCREG_IFSR32_EL2
Definition misc.hh:679
@ MISCREG_SPSR_EL1
Definition misc.hh:650
@ MISCREG_MAIR0_NS
Definition misc.hh:403
@ MISCREG_CP15DSB
Definition misc.hh:332
@ MISCREG_DBGDCCINT
Definition misc.hh:115
@ MISCREG_TLBIALLNSNHIS
Definition misc.hh:361
@ MISCREG_CNTP_CVAL_EL0
Definition misc.hh:841
@ MISCREG_HCR_EL2
Definition misc.hh:619
@ MISCREG_L2ACTLR_EL1
Definition misc.hh:895
@ MISCREG_DCIMVAC
Definition misc.hh:320
@ MISCREG_ATS1CPW
Definition misc.hh:323
@ MISCREG_AT_S12E0R_Xt
Definition misc.hh:712
@ MISCREG_MPIDR
Definition misc.hh:227
@ MISCREG_DBGCLAIMSET
Definition misc.hh:210
@ MISCREG_TLBIMVALHIS
Definition misc.hh:362
@ MISCREG_PRRR_NS
Definition misc.hh:400
@ MISCREG_PMCEID0_EL0
Definition misc.hh:802
@ MISCREG_ID_AA64MMFR2_EL1
Definition misc.hh:906
@ MISCREG_SDER32_EL3
Definition misc.hh:629
@ MISCREG_TPIDR_EL0
Definition misc.hh:832
@ MISCREG_DBGDTRTXext
Definition misc.hh:122
@ MISCREG_DBGOSECCR
Definition misc.hh:123
@ MISCREG_VTCR_EL2
Definition misc.hh:644
@ MISCREG_DBGWCR3
Definition misc.hh:175
@ MISCREG_ELR_EL3
Definition misc.hh:671
@ MISCREG_ITLBIASID
Definition misc.hh:347
@ MISCREG_DBGWCR11
Definition misc.hh:183
@ MISCREG_DBGCLAIMSET_EL1
Definition misc.hh:562
@ MISCREG_VTTBR
Definition misc.hh:478
@ MISCREG_MDDTRRX_EL0
Definition misc.hh:555
@ MISCREG_CNTVOFF_EL2
Definition misc.hh:872
@ MISCREG_DBGWCR6
Definition misc.hh:178
@ MISCREG_VPIDR
Definition misc.hh:251
@ MISCREG_BPIALLIS
Definition misc.hh:311
@ MISCREG_DBGWCR15
Definition misc.hh:187
@ MISCREG_CNTHCTL
Definition misc.hh:459
@ MISCREG_TTBR1_NS
Definition misc.hh:276
@ MISCREG_FAR_EL3
Definition misc.hh:691
@ MISCREG_ACTLR_EL1
Definition misc.hh:613
@ MISCREG_DBGBVR3_EL1
Definition misc.hh:491
@ MISCREG_DBGVCR
Definition misc.hh:119
@ MISCREG_MDCCINT_EL1
Definition misc.hh:483
@ MISCREG_DBGBVR6_EL1
Definition misc.hh:494
@ MISCREG_DBGWCR9_EL1
Definition misc.hh:545
@ MISCREG_IL1DATA3_EL1
Definition misc.hh:889
@ MISCREG_DC_CISW_Xt
Definition misc.hh:702
@ MISCREG_VBAR_EL2
Definition misc.hh:824
@ MISCREG_DBGBCR7_EL1
Definition misc.hh:511
@ MISCREG_ICIMVAU
Definition misc.hh:316
@ MISCREG_DBGWCR14
Definition misc.hh:186
@ MISCREG_DBGBCR5_EL1
Definition misc.hh:509
@ MISCREG_L2ACTLR
Definition misc.hh:475
@ MISCREG_ACTLR_EL2
Definition misc.hh:618
@ MISCREG_CPUMERRSR_EL1
Definition misc.hh:898
@ MISCREG_IFAR_NS
Definition misc.hh:305
@ MISCREG_DBGWVR15_EL1
Definition misc.hh:535
@ MISCREG_CTR
Definition misc.hh:224
@ MISCREG_HPFAR_EL2
Definition misc.hh:690
@ MISCREG_DBGBXVR11
Definition misc.hh:200
@ MISCREG_CLIDR
Definition misc.hh:246
@ MISCREG_SCTLR_S
Definition misc.hh:255
@ MISCREG_PMEVCNTR4
Definition misc.hh:383
@ MISCREG_DBGDTRRXint
Definition misc.hh:117
@ MISCREG_MDCR_EL2
Definition misc.hh:621
@ MISCREG_PMSELR
Definition misc.hh:374
@ MISCREG_ICIALLUIS
Definition misc.hh:310
@ MISCREG_HACTLR
Definition misc.hh:265
@ MISCREG_ID_MMFR0_EL1
Definition misc.hh:576
@ MISCREG_VBAR_EL1
Definition misc.hh:820
@ MISCREG_MIDR
Definition misc.hh:223
@ MISCREG_PMEVCNTR2_EL0
Definition misc.hh:876
@ MISCREG_CNTPS_CVAL_EL1
Definition misc.hh:855
@ MISCREG_HTCR
Definition misc.hh:281
@ MISCREG_AMAIR_EL2
Definition misc.hh:815
@ MISCREG_TLBIMVAIS
Definition misc.hh:340
@ MISCREG_TTBR1_S
Definition misc.hh:277
@ MISCREG_HVBAR
Definition misc.hh:427
@ MISCREG_JIDR
Definition misc.hh:217
@ MISCREG_DC_ISW_Xt
Definition misc.hh:696
@ MISCREG_L2CTLR
Definition misc.hh:397
@ MISCREG_DBGPRCR
Definition misc.hh:208
@ MISCREG_DBGWVR10
Definition misc.hh:166
@ MISCREG_TTBR0_EL3
Definition misc.hh:647
@ MISCREG_DBGWCR0_EL1
Definition misc.hh:536
@ MISCREG_DCZID_EL0
Definition misc.hh:606
@ MISCREG_TLBIALLH
Definition misc.hh:365
@ MISCREG_ATS12NSOPW
Definition misc.hh:327
@ MISCREG_DACR_NS
Definition misc.hh:284
@ MISCREG_TLBIMVAH
Definition misc.hh:366
@ MISCREG_DBGWVR12
Definition misc.hh:168
@ MISCREG_ISR_EL1
Definition misc.hh:823
@ MISCREG_HACR_EL2
Definition misc.hh:624
@ MISCREG_DBGBCR4
Definition misc.hh:144
@ MISCREG_OSDTRTX_EL1
Definition misc.hh:486
@ MISCREG_CNTVOFF
Definition misc.hh:463
@ MISCREG_DBGCLAIMCLR_EL1
Definition misc.hh:563
@ MISCREG_AT_S1E0W_Xt
Definition misc.hh:700
@ MISCREG_AMAIR0_S
Definition misc.hh:413
@ MISCREG_DCCSW
Definition misc.hh:331
@ MISCREG_AT_S12E1R_Xt
Definition misc.hh:710
@ MISCREG_DBGBXVR2
Definition misc.hh:191
@ MISCREG_TLBTR
Definition misc.hh:226
@ MISCREG_DBGWVR0
Definition misc.hh:156
@ MISCREG_ID_AA64AFR1_EL1
Definition misc.hh:596
@ MISCREG_DBGWCR12
Definition misc.hh:184
@ MISCREG_DCCMVAU
Definition misc.hh:334
@ MISCREG_IL1DATA2_EL1
Definition misc.hh:888
@ MISCREG_DBGBVR14_EL1
Definition misc.hh:502
@ MISCREG_DTLBIASID
Definition misc.hh:350
@ MISCREG_ID_ISAR6_EL1
Definition misc.hh:587
@ MISCREG_ELR_EL1
Definition misc.hh:652
@ MISCREG_PMXEVCNTR
Definition misc.hh:392
@ MISCREG_DBGBVR1
Definition misc.hh:125
@ MISCREG_CNTHP_CTL
Definition misc.hh:460
@ MISCREG_DBGWCR15_EL1
Definition misc.hh:551
@ MISCREG_PMCEID0
Definition misc.hh:375
@ MISCREG_TPIDR_EL2
Definition misc.hh:834
@ MISCREG_DBGBXVR14
Definition misc.hh:203
@ MISCREG_DFSR_NS
Definition misc.hh:287
@ MISCREG_ID_PFR1
Definition misc.hh:230
@ MISCREG_CNTHP_CVAL_EL2
Definition misc.hh:859
@ MISCREG_CNTV_TVAL_EL0
Definition misc.hh:845
@ MISCREG_DBGBCR2
Definition misc.hh:142
@ MISCREG_DBGWCR14_EL1
Definition misc.hh:550
@ MISCREG_DCCIMVAC
Definition misc.hh:335
@ MISCREG_L2CTLR_EL1
Definition misc.hh:818
@ MISCREG_VTCR
Definition misc.hh:282
@ MISCREG_FPSCR
Definition misc.hh:90
@ MISCREG_DBGWVR14_EL1
Definition misc.hh:534
@ MISCREG_DBGWVR1
Definition misc.hh:157
@ MISCREG_TTBR0_EL2
Definition misc.hh:640
@ MISCREG_HSCTLR
Definition misc.hh:264
@ MISCREG_SCTLR_NS
Definition misc.hh:254
@ MISCREG_DBGWVR2_EL1
Definition misc.hh:522
@ MISCREG_PMEVTYPER4
Definition misc.hh:389
@ MISCREG_ACTLR_S
Definition misc.hh:258
@ MISCREG_BPIMVA
Definition misc.hh:319
@ MISCREG_PMINTENCLR
Definition misc.hh:395
@ MISCREG_PMCNTENCLR_EL0
Definition misc.hh:798
@ MISCREG_IL1DATA2
Definition misc.hh:467
@ MISCREG_TTBR0_EL1
Definition misc.hh:632
@ MISCREG_JOSCR
Definition misc.hh:219
@ MISCREG_ICIALLU
Definition misc.hh:315
@ MISCREG_IL1DATA3
Definition misc.hh:468
@ MISCREG_CNTP_CTL_NS
Definition misc.hh:447
@ MISCREG_PMEVCNTR5_EL0
Definition misc.hh:879
@ MISCREG_TLBIALL
Definition misc.hh:351
@ MISCREG_SCTLR_EL3
Definition misc.hh:625
@ MISCREG_CNTP_TVAL_EL0
Definition misc.hh:842
@ MISCREG_CURRENTEL
Definition misc.hh:656
@ MISCREG_DBGBVR13_EL1
Definition misc.hh:501
@ MISCREG_DBGWVR6
Definition misc.hh:162
@ MISCREG_DBGAUTHSTATUS
Definition misc.hh:212
@ MISCREG_PMEVCNTR1
Definition misc.hh:380
@ MISCREG_MVFR0_EL1
Definition misc.hh:588
@ MISCREG_ID_ISAR1
Definition misc.hh:239
@ MISCREG_DBGBCR0
Definition misc.hh:140
@ MISCREG_TTBCR_S
Definition misc.hh:280
@ MISCREG_IFSR_S
Definition misc.hh:291
@ MISCREG_PMSWINC
Definition misc.hh:373
@ MISCREG_MVFR1_EL1
Definition misc.hh:589
@ MISCREG_ID_AA64AFR0_EL1
Definition misc.hh:595
@ MISCREG_ATS12NSOPR
Definition misc.hh:326
@ MISCREG_MVFR2_EL1
Definition misc.hh:590
@ MISCREG_DBGBCR3
Definition misc.hh:143
@ MISCREG_OSLSR_EL1
Definition misc.hh:559
@ MISCREG_DBGBCR9_EL1
Definition misc.hh:513
@ MISCREG_PMCNTENSET_EL0
Definition misc.hh:797
@ MISCREG_ID_ISAR1_EL1
Definition misc.hh:582
@ MISCREG_AIDR
Definition misc.hh:247
@ MISCREG_DBGWVR12_EL1
Definition misc.hh:532
@ MISCREG_CPUACTLR_EL1
Definition misc.hh:896
@ MISCREG_DBGBCR15_EL1
Definition misc.hh:519
@ MISCREG_DLR_EL0
Definition misc.hh:662
@ MISCREG_DBGBVR5
Definition misc.hh:129
@ MISCREG_DBGWVR5
Definition misc.hh:161
@ MISCREG_ID_MMFR1_EL1
Definition misc.hh:577
@ MISCREG_MAIR1_S
Definition misc.hh:410
@ MISCREG_DACR32_EL2
Definition misc.hh:649
@ MISCREG_ID_AA64ISAR0_EL1
Definition misc.hh:597
@ MISCREG_HIFAR
Definition misc.hh:308
@ MISCREG_DBGWVR8
Definition misc.hh:164
@ MISCREG_CNTHP_TVAL_EL2
Definition misc.hh:860
@ MISCREG_AT_S1E3W_Xt
Definition misc.hh:715
@ MISCREG_DBGWCR1_EL1
Definition misc.hh:537
@ MISCREG_DCISW
Definition misc.hh:321
@ MISCREG_ID_MMFR2
Definition misc.hh:235
@ MISCREG_HMAIR1
Definition misc.hh:418
@ MISCREG_VMPIDR_EL2
Definition misc.hh:608
@ MISCREG_IC_IVAU_Xt
Definition misc.hh:704
@ MISCREG_DBGBCR8
Definition misc.hh:148
@ MISCREG_VBAR_NS
Definition misc.hh:422
@ MISCREG_DBGWCR3_EL1
Definition misc.hh:539
@ MISCREG_PMEVCNTR0
Definition misc.hh:379
@ MISCREG_PMOVSCLR_EL0
Definition misc.hh:799
@ MISCREG_DBGBCR5
Definition misc.hh:145
@ MISCREG_PMCCNTR
Definition misc.hh:377
@ MISCREG_HSR
Definition misc.hh:300
@ MISCREG_HCR2
Definition misc.hh:267
@ MISCREG_DSPSR_EL0
Definition misc.hh:661
@ MISCREG_L2MERRSR_EL1
Definition misc.hh:899
@ MISCREG_CNTHP_CVAL
Definition misc.hh:461
@ MISCREG_TTBR0_NS
Definition misc.hh:273
@ MISCREG_FAR_EL2
Definition misc.hh:689
@ MISCREG_DBGBCR7
Definition misc.hh:147
@ MISCREG_DBGWVR3
Definition misc.hh:159
@ MISCREG_PMEVCNTR3_EL0
Definition misc.hh:877
@ MISCREG_RVBAR_EL3
Definition misc.hh:827
@ MISCREG_DBGBCR10_EL1
Definition misc.hh:514
@ MISCREG_OSDTRRX_EL1
Definition misc.hh:484
@ MISCREG_AT_S1E0R_Xt
Definition misc.hh:699
@ MISCREG_MDDTRTX_EL0
Definition misc.hh:554
@ MISCREG_DBGWVR6_EL1
Definition misc.hh:526
@ MISCREG_ID_ISAR3
Definition misc.hh:241
@ MISCREG_CNTHP_CTL_EL2
Definition misc.hh:858
@ MISCREG_MVBAR
Definition misc.hh:424
@ MISCREG_DBGBCR6
Definition misc.hh:146
@ MISCREG_DBGWVR8_EL1
Definition misc.hh:528
@ MISCREG_PMCR_EL0
Definition misc.hh:796
@ MISCREG_CBAR
Definition misc.hh:476
@ MISCREG_CPTR_EL3
Definition misc.hh:630
@ MISCREG_ESR_EL2
Definition misc.hh:682
@ MISCREG_HADFSR
Definition misc.hh:298
@ MISCREG_SPSR_FIQ_AA64
Definition misc.hh:669
@ MISCREG_IC_IALLUIS
Definition misc.hh:692
@ MISCREG_ID_PFR0
Definition misc.hh:229
@ MISCREG_CLIDR_EL1
Definition misc.hh:602
@ MISCREG_DBGBVR6
Definition misc.hh:130
@ MISCREG_NMRR_S
Definition misc.hh:407
@ MISCREG_DCCMVAC
Definition misc.hh:330
@ MISCREG_L2ECTLR_EL1
Definition misc.hh:819
@ MISCREG_IFAR_S
Definition misc.hh:306
@ MISCREG_ID_MMFR3_EL1
Definition misc.hh:579
@ MISCREG_SPSR_IRQ_AA64
Definition misc.hh:666
@ MISCREG_ID_MMFR4
Definition misc.hh:237
@ MISCREG_DBGBXVR1
Definition misc.hh:190
@ MISCREG_AFSR1_EL1
Definition misc.hh:675
@ MISCREG_CNTP_CVAL_S
Definition misc.hh:451
@ MISCREG_TPIDRURO_S
Definition misc.hh:437
@ MISCREG_DBGBVR4_EL1
Definition misc.hh:492
@ MISCREG_CNTKCTL
Definition misc.hh:458
@ MISCREG_DBGWVR4
Definition misc.hh:160
@ MISCREG_CONTEXTIDR_S
Definition misc.hh:431
@ MISCREG_PMCEID1_EL0
Definition misc.hh:803
@ MISCREG_TPIDRURW_NS
Definition misc.hh:433
@ MISCREG_CTR_EL0
Definition misc.hh:605
@ MISCREG_CNTFRQ_EL0
Definition misc.hh:837
@ MISCREG_ID_AFR0
Definition misc.hh:232
@ MISCREG_DBGAUTHSTATUS_EL1
Definition misc.hh:564
@ MISCREG_DBGBCR1
Definition misc.hh:141
@ MISCREG_FPEXC32_EL2
Definition misc.hh:683
@ MISCREG_TPIDRURO_NS
Definition misc.hh:436
@ MISCREG_DBGBCR13
Definition misc.hh:153
@ MISCREG_MDDTR_EL0
Definition misc.hh:553
@ MISCREG_TLBIMVAA
Definition misc.hh:354
@ MISCREG_PMEVCNTR1_EL0
Definition misc.hh:875
@ MISCREG_DBGBVR12
Definition misc.hh:136
@ MISCREG_VTTBR_EL2
Definition misc.hh:643
@ MISCREG_DBGWCR7
Definition misc.hh:179
@ MISCREG_MAIR1_NS
Definition misc.hh:409
@ MISCREG_DBGBVR15
Definition misc.hh:139
@ MISCREG_DBGBVR4
Definition misc.hh:128
@ MISCREG_ID_AA64PFR1_EL1
Definition misc.hh:592
@ MISCREG_RAMINDEX
Definition misc.hh:474
@ MISCREG_HSTR
Definition misc.hh:270
@ MISCREG_MDCR_EL3
Definition misc.hh:631
@ MISCREG_AFSR0_EL2
Definition misc.hh:680
@ MISCREG_ID_ISAR2
Definition misc.hh:240
@ MISCREG_PRRR_S
Definition misc.hh:401
@ MISCREG_CNTV_CVAL_EL0
Definition misc.hh:844
@ MISCREG_DBGWCR13
Definition misc.hh:185
@ MISCREG_SP_EL1
Definition misc.hh:665
@ MISCREG_ATS1CUW
Definition misc.hh:325
@ MISCREG_PMOVSSET_EL0
Definition misc.hh:809
constexpr RegClass vecRegClass
Definition vec.hh:101
uint32_t VecElem
Definition vec.hh:63
Bitfield< 4 > pc
Bitfield< 10, 5 > event
Bitfield< 0 > p
Bitfield< 3 > addr
Definition types.hh:84
std::ostream & output()
Get the ostream from the current global logger.
Definition trace.cc:78
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36
std::shared_ptr< FaultBase > Fault
Definition types.hh:249
std::shared_ptr< Request > RequestPtr
Definition request.hh:94
Tick curTick()
The universal simulation clock.
Definition cur_tick.hh:46
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition types.hh:147
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
Definition root.cc:220
uint64_t Tick
Tick count type.
Definition types.hh:58
void exitSimLoop(const std::string &message, int exit_code, Tick when, Tick repeat, bool serialize)
Schedule an event to exit the simulation loop (returning to Python) at the end of the current cycle (...
Definition sim_events.cc:88
constexpr decltype(nullptr) NoFault
Definition types.hh:253
std::vector< EventQueue * > mainEventQueue
Array for main event queues.
Definition eventq.cc:57
Declaration of the Packet class.
PortProxy Object Declaration.
Event triggered to check the value of the destination registers.
ThreadContext * thread
Current thread context.
std::unique_ptr< PCStateBase > pc
PC of the current instruction.
bool mismatchOnPcOrOpcode
True if a mismatch has been detected for this instruction on PC or opcode.
TarmacParser & parent
Reference to the TARMAC trace object to which this record belongs.
bool mismatch
True if a mismatch has been detected for this instruction.
const StaticInstPtr inst
Current instruction.
const char * description() const
Return a C string describing the event.

Generated on Mon Jan 13 2025 04:28:20 for gem5 by doxygen 1.9.8