gem5  v21.0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
misc64.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2011-2013,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 "arch/arm/insts/misc64.hh"
39 #include "arch/arm/isa.hh"
40 
41 using namespace ArmISA;
42 
43 std::string
45 {
46  std::stringstream ss;
47  printMnemonic(ss, "", false);
48  ccprintf(ss, "#0x%x", imm);
49  return ss.str();
50 }
51 
52 std::string
54  Addr pc, const Loader::SymbolTable *symtab) const
55 {
56  std::stringstream ss;
57  printMnemonic(ss, "", false);
58  printIntReg(ss, dest);
59  ss << ", ";
60  printIntReg(ss, op1);
61  ccprintf(ss, ", #%d, #%d", imm1, imm2);
62  return ss.str();
63 }
64 
65 std::string
67  Addr pc, const Loader::SymbolTable *symtab) const
68 {
69  std::stringstream ss;
70  printMnemonic(ss, "", false);
71  printIntReg(ss, dest);
72  ss << ", ";
73  printIntReg(ss, op1);
74  ss << ", ";
75  printIntReg(ss, op2);
76  ccprintf(ss, ", #%d", imm);
77  return ss.str();
78 }
79 
80 std::string
82  Addr pc, const Loader::SymbolTable *symtab) const
83 {
84  return csprintf("%-10s (inst %#08x)", "unknown", encoding());
85 }
86 
87 Fault
89  ExceptionLevel el, uint32_t immediate) const
90 {
92 
93  // Check for traps to supervisor (FP/SIMD regs)
94  if (el <= EL1 && checkEL1Trap(tc, misc_reg, el, ec, immediate)) {
95  return std::make_shared<SupervisorTrap>(machInst, immediate, ec);
96  }
97 
98  // Check for traps to hypervisor
99  if ((ArmSystem::haveVirtualization(tc) && el <= EL2) &&
100  checkEL2Trap(tc, misc_reg, el, ec, immediate)) {
101  return std::make_shared<HypervisorTrap>(machInst, immediate, ec);
102  }
103 
104  // Check for traps to secure monitor
105  if ((ArmSystem::haveSecurity(tc) && el <= EL3) &&
106  checkEL3Trap(tc, misc_reg, el, ec, immediate)) {
107  return std::make_shared<SecureMonitorTrap>(machInst, immediate, ec);
108  }
109 
110  return NoFault;
111 }
112 
113 bool
116  uint32_t &immediate) const
117 {
118  const CPACR cpacr = tc->readMiscReg(MISCREG_CPACR_EL1);
119  const SCR scr = tc->readMiscReg(MISCREG_SCR_EL3);
120  const SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
121  const HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2);
122 
123  bool trap_to_sup = false;
124  switch (misc_reg) {
125  case MISCREG_DAIF:
126  trap_to_sup = !scr.ns && !scr.eel2 && !sctlr.uma && el == EL0;
127  trap_to_sup = trap_to_sup ||
128  (el == EL0 && (scr.ns || scr.eel2) && !hcr.tge && !sctlr.uma);
129  break;
130  case MISCREG_DC_ZVA_Xt:
131  // In syscall-emulation mode, this test is skipped and DCZVA is always
132  // allowed at EL0
133  trap_to_sup = el == EL0 && !sctlr.dze && FullSystem;
134  break;
135  case MISCREG_DC_CIVAC_Xt:
136  case MISCREG_DC_CVAC_Xt:
137  trap_to_sup = el == EL0 && !sctlr.uci;
138  break;
139  case MISCREG_FPCR:
140  case MISCREG_FPSR:
141  case MISCREG_FPEXC32_EL2:
142  if ((el == EL0 && cpacr.fpen != 0x3) ||
143  (el == EL1 && !(cpacr.fpen & 0x1))) {
144  trap_to_sup = true;
146  immediate = 0x1E00000;
147  }
148  break;
149  case MISCREG_DC_CVAU_Xt:
150  trap_to_sup = !sctlr.uci && (!hcr.tge || (!scr.ns && !scr.eel2)) &&
151  el == EL0;
152  break;
153  case MISCREG_CTR_EL0:
154  trap_to_sup = el == EL0 && !sctlr.uct &&
155  (!hcr.tge || (!scr.ns && !scr.eel2));
156  break;
157  case MISCREG_MDCCSR_EL0:
158  {
159  DBGDS32 mdscr = tc->readMiscReg(MISCREG_MDSCR_EL1);
160  trap_to_sup = el == EL0 && mdscr.tdcc &&
161  (hcr.tge == 0x0 || ( scr.ns == 0x0));
162  }
163  break;
164  case MISCREG_ZCR_EL1:
165  trap_to_sup = el == EL1 && ((cpacr.zen & 0x1) == 0x0);
166  break;
167  // Generic Timer
169  trap_to_sup = el == EL0 &&
170  isGenericTimerSystemAccessTrapEL1(misc_reg, tc);
171  break;
172  default:
173  break;
174  }
175  return trap_to_sup;
176 }
177 
178 bool
181  uint32_t &immediate) const
182 {
183  const CPTR cptr = tc->readMiscReg(MISCREG_CPTR_EL2);
184  const SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1);
185  const SCTLR sctlr2 = tc->readMiscReg(MISCREG_SCTLR_EL2);
186  const HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2);
187  const SCR scr = tc->readMiscReg(MISCREG_SCR_EL3);
188  const HDCR mdcr = tc->readMiscReg(MISCREG_MDCR_EL3);
189 
190  bool trap_to_hyp = false;
191 
192  switch (misc_reg) {
194  trap_to_hyp = EL2Enabled(tc) && hcr.tidcp && el == EL1;
195  break;
196  // GICv3 regs
198  {
199  auto *isa = static_cast<ArmISA::ISA *>(tc->getIsaPtr());
200  if (isa->haveGICv3CpuIfc())
201  trap_to_hyp = EL2Enabled(tc) && hcr.fmo && el == EL1;
202  }
203  break;
206  {
207  auto *isa = static_cast<ArmISA::ISA *>(tc->getIsaPtr());
208  if (isa->haveGICv3CpuIfc())
209  trap_to_hyp = EL2Enabled(tc) && hcr.imo && el == EL1;
210  }
211  break;
212  case MISCREG_FPCR:
213  case MISCREG_FPSR:
214  case MISCREG_FPEXC32_EL2:
215  {
216  bool from_el2 = (el == EL2) && (scr.ns || scr.eel2) &&
217  ELIs64(tc,EL2) &&
218  ((!hcr.e2h && cptr.tfp) ||
219  (hcr.e2h && (cptr.fpen == 0x0 ||
220  cptr.fpen == 0xa)));
221  bool from_el1 = (el == EL1) && hcr.nv &&
222  (!hcr.e2h || (hcr.e2h && !hcr.tge));
223  trap_to_hyp = from_el2 || from_el1;
225  immediate = 0x1E00000;
226  }
227  break;
228  case MISCREG_CPACR_EL1:
229  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && cptr.tcpac;
230  break;
231  case MISCREG_SCTLR_EL1:
232  case MISCREG_TTBR0_EL1:
233  case MISCREG_TTBR1_EL1:
234  case MISCREG_TCR_EL1:
235  case MISCREG_ESR_EL1:
236  case MISCREG_FAR_EL1:
237  case MISCREG_AFSR0_EL1:
238  case MISCREG_AFSR1_EL1:
239  case MISCREG_MAIR_EL1:
240  case MISCREG_AMAIR_EL1:
242  {
243  bool tvm = miscRead? hcr.trvm: hcr.tvm;
244  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && tvm;
245  }
246  break;
247  case MISCREG_CPACR_EL12:
248  case MISCREG_SCTLR_EL12:
249  case MISCREG_TTBR0_EL12:
250  case MISCREG_TTBR1_EL12:
251  case MISCREG_TCR_EL12:
252  case MISCREG_ESR_EL12:
253  case MISCREG_FAR_EL12:
254  case MISCREG_AFSR0_EL12:
255  case MISCREG_AFSR1_EL12:
256  case MISCREG_MAIR_EL12:
257  case MISCREG_AMAIR_EL12:
259  case MISCREG_SPSR_EL12:
260  case MISCREG_ELR_EL12:
261  case MISCREG_VBAR_EL12:
262  trap_to_hyp = EL2Enabled(tc) && (el == EL1) &&
263  (hcr.nv && (hcr.nv1 || !hcr.nv2));
264  break;
271 // case MISCREG_TLBI_RVAE1:
272 // case MISCREG_TLBI_RVAAE1:
273 // case MISCREG_TLBI_RVALE1:
274 // case MISCREG_TLBI_RVAALE1:
281 // case MISCREG_TLBI_RVAE1IS:
282 // case MISCREG_TLBI_RVAAE1IS:
283 // case MISCREG_TLBI_RVALE1IS:
284 // case MISCREG_TLBI_RVAALE1IS:
285 // case MISCREG_TLBI_VMALLE1OS:
286 // case MISCREG_TLBI_VAE1OS:
287 // case MISCREG_TLBI_ASIDE1OS:
288 // case MISCREG_TLBI_VAAE1OS:
289 // case MISCREG_TLBI_VALE1OS:
290 // case MISCREG_TLBI_VAALE1OS:
291 // case MISCREG_TLBI_RVAE1OS:
292 // case MISCREG_TLBI_RVAAE1OS:
293 // case MISCREG_TLBI_RVALE1OS:
294 // case MISCREG_TLBI_RVAALE1OS:
295  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.ttlb;
296  break;
297  case MISCREG_IC_IVAU_Xt:
298  case MISCREG_ICIALLU:
299  case MISCREG_ICIALLUIS:
300  trap_to_hyp = (el == EL1) && EL2Enabled(tc) && hcr.tpu;
301  break;
302  case MISCREG_DC_CVAU_Xt:
303  {
304  const bool el2_en = EL2Enabled(tc);
305  if (el == EL0 && el2_en) {
306  const bool in_host = hcr.e2h && hcr.tge;
307  const bool general_trap = el2_en && !in_host && hcr.tge &&
308  !sctlr.uci;
309  const bool tpu_trap = el2_en && !in_host && hcr.tpu;
310  const bool host_trap = el2_en && in_host && !sctlr2.uci;
311  trap_to_hyp = general_trap || tpu_trap || host_trap;
312  }
313  else if (el == EL1 && el2_en) {
314  trap_to_hyp = hcr.tpu;
315  }
316  }
317  break;
318  case MISCREG_DC_IVAC_Xt:
319  trap_to_hyp = EL2Enabled(tc) && el == EL1 && hcr.tpc;
320  break;
321  case MISCREG_DC_CVAC_Xt:
322 // case MISCREG_DC_CVAP_Xt:
323  case MISCREG_DC_CIVAC_Xt:
324  {
325  const bool el2_en = EL2Enabled(tc);
326  if (el == EL0 && el2_en) {
327 
328  const bool in_host = hcr.e2h && hcr.tge;
329  const bool general_trap = el2_en && !in_host && hcr.tge &&
330  !sctlr.uci;
331  const bool tpc_trap = el2_en && !in_host && hcr.tpc;
332  const bool host_trap = el2_en && in_host && !sctlr2.uci;
333  trap_to_hyp = general_trap || tpc_trap || host_trap;
334  } else if (el == EL1 && el2_en) {
335  trap_to_hyp = hcr.tpc;
336  }
337  }
338  break;
339  case MISCREG_DC_ISW_Xt:
340  case MISCREG_DC_CSW_Xt:
341  case MISCREG_DC_CISW_Xt:
342  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.tsw;
343  break;
344  case MISCREG_ACTLR_EL1:
345  trap_to_hyp = EL2Enabled (tc) && (el == EL1) && hcr.tacr;
346  break;
357  trap_to_hyp = EL2Enabled(tc) && el == EL1 && !hcr.apk;
358  break;
359  case MISCREG_ID_PFR0_EL1:
360  case MISCREG_ID_PFR1_EL1:
361  //case MISCREG_ID_PFR2_EL1:
362  case MISCREG_ID_DFR0_EL1:
363  case MISCREG_ID_AFR0_EL1:
376  case MISCREG_MVFR0_EL1:
377  case MISCREG_MVFR1_EL1:
378  case MISCREG_MVFR2_EL1:
390  trap_to_hyp = EL2Enabled(tc) && el == EL1 && hcr.tid3;
391  break;
392  case MISCREG_CTR_EL0:
393  {
394  const bool el2_en = EL2Enabled(tc);
395  if (el == EL0 && el2_en) {
396  const bool in_host = hcr.e2h && hcr.tge;
397  const bool general_trap = el2_en && !in_host && hcr.tge &&
398  !sctlr.uct;
399  const bool tid_trap = el2_en && !in_host && hcr.tid2;
400  const bool host_trap = el2_en && in_host && !sctlr2.uct;
401  trap_to_hyp = general_trap || tid_trap || host_trap;
402  } else if (el == EL1 && el2_en) {
403  trap_to_hyp = hcr.tid2;
404  }
405  }
406  break;
407  case MISCREG_CCSIDR_EL1:
408 // case MISCREG_CCSIDR2_EL1:
409  case MISCREG_CLIDR_EL1:
410  case MISCREG_CSSELR_EL1:
411  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.tid2;
412  break;
413  case MISCREG_AIDR_EL1:
414  case MISCREG_REVIDR_EL1:
415  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.tid1;
416  break;
417  // Generic Timer
419  trap_to_hyp = el <= EL1 &&
420  isGenericTimerSystemAccessTrapEL2(misc_reg, tc);
421  break;
422  case MISCREG_DAIF:
423  trap_to_hyp = EL2Enabled(tc) && el == EL0 &&
424  (hcr.tge && (hcr.e2h || !sctlr.uma));
425  break;
426  case MISCREG_SPSR_EL1:
427  case MISCREG_ELR_EL1:
428  case MISCREG_VBAR_EL1:
429  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.nv1 && !hcr.nv2;
430  break;
431  case MISCREG_HCR_EL2:
432  case MISCREG_HSTR_EL2:
433  case MISCREG_SP_EL1:
434  case MISCREG_TPIDR_EL2:
435  case MISCREG_VTCR_EL2:
436  case MISCREG_VTTBR_EL2:
437  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.nv && !hcr.nv2;
438  break;
439 // case MISCREG_AT_S1E1WP_Xt:
440 // case MISCREG_AT_S1E1RP_Xt:
441  case MISCREG_AT_S1E1R_Xt:
442  case MISCREG_AT_S1E1W_Xt:
443  case MISCREG_AT_S1E0W_Xt:
444  case MISCREG_AT_S1E0R_Xt:
445  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.at;
446  break;
447  case MISCREG_ACTLR_EL2:
448  case MISCREG_AFSR0_EL2:
449  case MISCREG_AFSR1_EL2:
450  case MISCREG_AMAIR_EL2:
452  case MISCREG_CPTR_EL2:
453  case MISCREG_DACR32_EL2:
454  case MISCREG_ESR_EL2:
455  case MISCREG_FAR_EL2:
456  case MISCREG_HACR_EL2:
457  case MISCREG_HPFAR_EL2:
458  case MISCREG_MAIR_EL2:
459 // case MISCREG_RMR_EL2:
460  case MISCREG_SCTLR_EL2:
461  case MISCREG_TCR_EL2:
462  case MISCREG_TTBR0_EL2:
463  case MISCREG_TTBR1_EL2:
464  case MISCREG_VBAR_EL2:
465  case MISCREG_VMPIDR_EL2:
466  case MISCREG_VPIDR_EL2:
467  case MISCREG_TLBI_ALLE1:
469 // case MISCREG_TLBI_ALLE1OS:
470  case MISCREG_TLBI_ALLE2:
472 // case MISCREG_TLBI_ALLE2OS:
475 // case MISCREG_TLBI_IPAS2E1OS:
478 // case MISCREG_TLBI_IPAS2LE1OS:
479 // case MISCREG_TLBI_RIPAS2E1:
480 // case MISCREG_TLBI_RIPAS2E1IS:
481 // case MISCREG_TLBI_RIPAS2E1OS:
482 // case MISCREG_TLBI_RIPAS2LE1:
483 // case MISCREG_TLBI_RIPAS2LE1IS:
484 // case MISCREG_TLBI_RIPAS2LE1OS:
485 // case MISCREG_TLBI_RVAE2:
486 // case MISCREG_TLBI_RVAE2IS:
487 // case MISCREG_TLBI_RVAE2OS:
488 // case MISCREG_TLBI_RVALE2:
489 // case MISCREG_TLBI_RVALE2IS:
490 // case MISCREG_TLBI_RVALE2OS:
493 // case MISCREG_TLBI_VAE2OS:
496 // case MISCREG_TLBI_VALE2OS:
499 // case MISCREG_TLBI_VMALLS12E1OS:
500  case MISCREG_AT_S1E2W_Xt:
501  case MISCREG_AT_S1E2R_Xt:
506  case MISCREG_SPSR_UND:
507  case MISCREG_SPSR_IRQ:
508  case MISCREG_SPSR_FIQ:
509  case MISCREG_SPSR_ABT:
510  case MISCREG_SPSR_EL2:
511  case MISCREG_ELR_EL2:
512  case MISCREG_IFSR32_EL2:
514  case MISCREG_MDCR_EL2:
515  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && hcr.nv;
516  break;
517 // case MISCREG_VSTTBR_EL2:
518 // case MISCREG_VSTCR_EL2:
519 // trap_to_hyp = (el == EL1) && !scr.ns && scr.eel2 && ELIs64(tc,EL2)
520 // && !hcr.nv2 && hcr.nv && (!hcr.e2h|| (hcr.e2h && !hcr.tge));
521 // break;
522 
523  //case MISCREG_LORC_EL1:
524  //case MISCREG_LOREA_EL1:
525  //case MISCREG_LORID_EL1:
526  //case MISCREG_LORN_EL1:
527  //case MISCREG_LORSA_EL1:
528  // trap_to_hyp = (el == EL1) && (scr.ns || scr.eel2) && ELIs64(tc,EL2)
529  // && hcr.tlor && (!hcr.e2h || (hcr.e2h && !hcr.tge));
530  // break;
531 
532  case MISCREG_DC_ZVA_Xt:
533  {
534  const bool el2_en = EL2Enabled(tc);
535  if (el == EL0 && el2_en) {
536  const bool in_host = hcr.e2h && hcr.tge;
537  const bool general_trap = el2_en && !in_host && hcr.tge &&
538  !sctlr.dze;
539  const bool tdz_trap = el2_en && !in_host && hcr.tdz;
540  const bool host_trap = el2_en && in_host && !sctlr2.dze;
541  trap_to_hyp = general_trap || tdz_trap || host_trap;
542  } else if (el == EL1 && el2_en) {
543  trap_to_hyp = hcr.tdz;
544  }
545  }
546  break;
547  case MISCREG_DBGBVR0_EL1:
548  case MISCREG_DBGBVR1_EL1:
549  case MISCREG_DBGBVR2_EL1:
550  case MISCREG_DBGBVR3_EL1:
551  case MISCREG_DBGBVR4_EL1:
552  case MISCREG_DBGBVR5_EL1:
553  case MISCREG_DBGBVR6_EL1:
554  case MISCREG_DBGBVR7_EL1:
555  case MISCREG_DBGBVR8_EL1:
556  case MISCREG_DBGBVR9_EL1:
563  case MISCREG_DBGBCR0_EL1:
564  case MISCREG_DBGBCR1_EL1:
565  case MISCREG_DBGBCR2_EL1:
566  case MISCREG_DBGBCR3_EL1:
567  case MISCREG_DBGBCR4_EL1:
568  case MISCREG_DBGBCR5_EL1:
569  case MISCREG_DBGBCR6_EL1:
570  case MISCREG_DBGBCR7_EL1:
571  case MISCREG_DBGBCR8_EL1:
572  case MISCREG_DBGBCR9_EL1:
579  case MISCREG_DBGWVR0_EL1:
580  case MISCREG_DBGWVR1_EL1:
581  case MISCREG_DBGWVR2_EL1:
582  case MISCREG_DBGWVR3_EL1:
583  case MISCREG_DBGWVR4_EL1:
584  case MISCREG_DBGWVR5_EL1:
585  case MISCREG_DBGWVR6_EL1:
586  case MISCREG_DBGWVR7_EL1:
587  case MISCREG_DBGWVR8_EL1:
588  case MISCREG_DBGWVR9_EL1:
595  case MISCREG_DBGWCR0_EL1:
596  case MISCREG_DBGWCR1_EL1:
597  case MISCREG_DBGWCR2_EL1:
598  case MISCREG_DBGWCR3_EL1:
599  case MISCREG_DBGWCR4_EL1:
600  case MISCREG_DBGWCR5_EL1:
601  case MISCREG_DBGWCR6_EL1:
602  case MISCREG_DBGWCR7_EL1:
603  case MISCREG_DBGWCR8_EL1:
604  case MISCREG_DBGWCR9_EL1:
611  case MISCREG_MDCCINT_EL1:
612  trap_to_hyp = EL2Enabled(tc) && (el == EL1) && mdcr.tda;
613  break;
614  case MISCREG_ZCR_EL1:
615  {
616  bool from_el1 = (el == EL1) && EL2Enabled(tc) &&
617  ELIs64(tc, EL2) && ((!hcr.e2h && cptr.tz) ||
618  (hcr.e2h && ((cptr.zen & 0x1) == 0x0)));
619  bool from_el2 = (el == EL2) && ((!hcr.e2h && cptr.tz) ||
620  (hcr.e2h && ((cptr.zen & 0x1) == 0x0)));
621  trap_to_hyp = from_el1 || from_el2;
622  }
623  ec = EC_TRAPPED_SVE;
624  immediate = 0;
625  break;
626  case MISCREG_ZCR_EL2:
627  {
628  bool from_el1 = (el == EL1) && EL2Enabled(tc) && hcr.nv;
629  bool from_el2 = (el == EL2) && ((!hcr.e2h && cptr.tz) ||
630  (hcr.e2h && ((cptr.zen & 0x1) == 0x0)));
631  trap_to_hyp = from_el1 || from_el2;
633  }
634  immediate = 0;
635  break;
636  default:
637  break;
638  }
639  return trap_to_hyp;
640 }
641 
642 bool
645  uint32_t &immediate) const
646 {
647  const CPTR cptr = tc->readMiscReg(MISCREG_CPTR_EL3);
648  const SCR scr = tc->readMiscReg(MISCREG_SCR_EL3);
649  const HDCR mdcr = tc->readMiscReg(MISCREG_MDCR_EL3);
650  const HCR hcr = tc->readMiscReg(MISCREG_HCR_EL2);
651  bool trap_to_mon = false;
652 
653  switch (misc_reg) {
654  // FP/SIMD regs
655  case MISCREG_FPCR:
656  case MISCREG_FPSR:
657  case MISCREG_FPEXC32_EL2:
658  trap_to_mon = cptr.tfp && ELIs64(tc, EL3);
660  immediate = 0x1E00000;
661  break;
662  // CPACR, CPTR
663  case MISCREG_CPACR_EL12:
664  trap_to_mon = ((el == EL2 && cptr.tcpac && ELIs64(tc, EL3)) ||
665  (el == EL1 && cptr.tcpac && ELIs64(tc, EL3) &&
666  (!hcr.nv2 || hcr.nv1 || !hcr.nv))) ;
667  break;
668  case MISCREG_CPACR_EL1:
669  trap_to_mon = el <= EL2 && cptr.tcpac && ELIs64(tc, EL3);
670  break;
671  case MISCREG_CPTR_EL2:
672  if (el == EL2) {
673  trap_to_mon = cptr.tcpac;
674  }
675  break;
676 // case MISCREG_LORC_EL1:
677 // case MISCREG_LOREA_EL1:
678 // case MISCREG_LORID_EL1:
679 // case MISCREG_LORN_EL1:
680 // case MISCREG_LORSA_EL1:
681 // trap_to_mon = (el <= EL2) && scr.ns && ELIs64(tc,EL3)
682 // && hcr.tlor && (!hcr.e2h || (hcr.e2h && !hcr.tge));
683 // break;
684  case MISCREG_MDCCSR_EL0:
685  trap_to_mon = (el <= EL2) && ELIs64(tc, EL3) && mdcr.tda == 0x1;
686  break;
697  trap_to_mon = (el == EL1 || el == EL2) && scr.apk == 0 &&
698  ELIs64(tc, EL3);
699  break;
700  // Generic Timer
702  trap_to_mon = el == EL1 &&
703  isGenericTimerSystemAccessTrapEL3(misc_reg, tc);
704  break;
705  case MISCREG_DBGBVR0_EL1:
706  case MISCREG_DBGBVR1_EL1:
707  case MISCREG_DBGBVR2_EL1:
708  case MISCREG_DBGBVR3_EL1:
709  case MISCREG_DBGBVR4_EL1:
710  case MISCREG_DBGBVR5_EL1:
711  case MISCREG_DBGBVR6_EL1:
712  case MISCREG_DBGBVR7_EL1:
713  case MISCREG_DBGBVR8_EL1:
714  case MISCREG_DBGBVR9_EL1:
721  case MISCREG_DBGBCR0_EL1:
722  case MISCREG_DBGBCR1_EL1:
723  case MISCREG_DBGBCR2_EL1:
724  case MISCREG_DBGBCR3_EL1:
725  case MISCREG_DBGBCR4_EL1:
726  case MISCREG_DBGBCR5_EL1:
727  case MISCREG_DBGBCR6_EL1:
728  case MISCREG_DBGBCR7_EL1:
729  case MISCREG_DBGBCR8_EL1:
730  case MISCREG_DBGBCR9_EL1:
738  case MISCREG_DBGWVR0_EL1:
739  case MISCREG_DBGWVR1_EL1:
740  case MISCREG_DBGWVR2_EL1:
741  case MISCREG_DBGWVR3_EL1:
742  case MISCREG_DBGWVR4_EL1:
743  case MISCREG_DBGWVR5_EL1:
744  case MISCREG_DBGWVR6_EL1:
745  case MISCREG_DBGWVR7_EL1:
746  case MISCREG_DBGWVR8_EL1:
747  case MISCREG_DBGWVR9_EL1:
754  case MISCREG_DBGWCR0_EL1:
755  case MISCREG_DBGWCR1_EL1:
756  case MISCREG_DBGWCR2_EL1:
757  case MISCREG_DBGWCR3_EL1:
758  case MISCREG_DBGWCR4_EL1:
759  case MISCREG_DBGWCR5_EL1:
760  case MISCREG_DBGWCR6_EL1:
761  case MISCREG_DBGWCR7_EL1:
762  case MISCREG_DBGWCR8_EL1:
763  case MISCREG_DBGWCR9_EL1:
770  case MISCREG_MDCCINT_EL1:
771  case MISCREG_MDCR_EL2:
772  trap_to_mon = ELIs64(tc, EL3) && mdcr.tda && (el == EL2);
773  break;
774  case MISCREG_ZCR_EL1:
775  trap_to_mon = !cptr.ez && ((el == EL3) ||
776  ((el <= EL2) && ArmSystem::haveEL(tc,EL3) && ELIs64(tc, EL3)));
777  ec = EC_TRAPPED_SVE;
778  immediate = 0;
779  break;
780  case MISCREG_ZCR_EL2:
781  trap_to_mon = !cptr.ez && ((el == EL3) ||
782  ((el == EL2) && ArmSystem::haveEL(tc,EL3) && ELIs64(tc, EL3)));
783  ec = EC_TRAPPED_SVE;
784  immediate = 0;
785  break;
786  case MISCREG_ZCR_EL3:
787  trap_to_mon = !cptr.ez && (el == EL3);
788  ec = EC_TRAPPED_SVE;
789  immediate = 0;
790  break;
791  default:
792  break;
793  }
794  return trap_to_mon;
795 }
796 
797 RegVal
799 {
800  if (dest == MISCREG_SPSEL) {
801  return imm & 0x1;
802  } else if (dest == MISCREG_PAN) {
803  return (imm & 0x1) << 22;
804  } else {
805  panic("Not a valid PSTATE field register\n");
806  }
807 }
808 
809 std::string
811  Addr pc, const Loader::SymbolTable *symtab) const
812 {
813  std::stringstream ss;
814  printMnemonic(ss);
815  printMiscReg(ss, dest);
816  ss << ", ";
817  ccprintf(ss, "#0x%x", imm);
818  return ss.str();
819 }
820 
821 std::string
823  Addr pc, const Loader::SymbolTable *symtab) const
824 {
825  std::stringstream ss;
826  printMnemonic(ss);
827  printMiscReg(ss, dest);
828  ss << ", ";
829  printIntReg(ss, op1);
830  return ss.str();
831 }
832 
833 std::string
835  Addr pc, const Loader::SymbolTable *symtab) const
836 {
837  std::stringstream ss;
838  printMnemonic(ss);
839  printIntReg(ss, dest);
840  ss << ", ";
841  printMiscReg(ss, op1);
842  return ss.str();
843 }
844 
845 Fault
847  Trace::InstRecord *traceData) const
848 {
849  auto tc = xc->tcBase();
850  const CPSR cpsr = tc->readMiscReg(MISCREG_CPSR);
851  const ExceptionLevel el = (ExceptionLevel) (uint8_t) cpsr.el;
852 
853  Fault fault = trap(tc, miscReg, el, imm);
854 
855  if (fault != NoFault) {
856  return fault;
857 
858  } else if (warning) {
859  warn_once("\tinstruction '%s' unimplemented\n", fullMnemonic.c_str());
860  return NoFault;
861 
862  } else {
863  return std::make_shared<UndefinedInstruction>(machInst, false,
864  mnemonic);
865  }
866 }
867 
868 std::string
870  Addr pc, const Loader::SymbolTable *symtab) const
871 {
872  return csprintf("%-10s (implementation defined)", fullMnemonic.c_str());
873 }
874 
875 std::string
877  Addr pc, const Loader::SymbolTable *symtab) const
878 {
879  std::stringstream ss;
880  printMnemonic(ss);
881  printIntReg(ss, dest);
882  return ss.str();
883 }
ArmISA::MISCREG_HPFAR_EL2
@ MISCREG_HPFAR_EL2
Definition: miscregs.hh:648
MiscRegImplDefined64::imm
const uint32_t imm
Definition: misc64.hh:214
ArmISA::MISCREG_MVFR2_EL1
@ MISCREG_MVFR2_EL1
Definition: miscregs.hh:556
ArmISA::MISCREG_DBGBCR3_EL1
@ MISCREG_DBGBCR3_EL1
Definition: miscregs.hh:473
ArmISA::MISCREG_DACR32_EL2
@ MISCREG_DACR32_EL2
Definition: miscregs.hh:607
ArmISA::isGenericTimerSystemAccessTrapEL3
bool isGenericTimerSystemAccessTrapEL3(const MiscRegIndex miscReg, ThreadContext *tc)
Definition: utility.cc:1152
ArmISA::MISCREG_ID_AA64MMFR2_EL1
@ MISCREG_ID_AA64MMFR2_EL1
Definition: miscregs.hh:818
ArmISA::MISCREG_AFSR1_EL12
@ MISCREG_AFSR1_EL12
Definition: miscregs.hh:634
ArmISA::MISCREG_APIBKeyLo_EL1
@ MISCREG_APIBKeyLo_EL1
Definition: miscregs.hh:830
ArmISA::MISCREG_DBGWVR6_EL1
@ MISCREG_DBGWVR6_EL1
Definition: miscregs.hh:492
ArmISA::EL2Enabled
bool EL2Enabled(ThreadContext *tc)
Definition: utility.cc:314
ArmISA::MISCREG_TLBI_IPAS2E1IS_Xt
@ MISCREG_TLBI_IPAS2E1IS_Xt
Definition: miscregs.hh:686
ArmISA::MISCREG_ID_AA64AFR1_EL1
@ MISCREG_ID_AA64AFR1_EL1
Definition: miscregs.hh:562
ArmISA::MISCREG_DC_CIVAC_Xt
@ MISCREG_DC_CIVAC_Xt
Definition: miscregs.hh:665
ArmISA::MISCREG_DBGBVR9_EL1
@ MISCREG_DBGBVR9_EL1
Definition: miscregs.hh:463
ArmISA::MISCREG_MVFR0_EL1
@ MISCREG_MVFR0_EL1
Definition: miscregs.hh:554
ArmISA::MISCREG_DBGBCR2_EL1
@ MISCREG_DBGBCR2_EL1
Definition: miscregs.hh:472
ArmISA::MISCREG_ID_AA64ISAR1_EL1
@ MISCREG_ID_AA64ISAR1_EL1
Definition: miscregs.hh:564
ArmISA::MISCREG_DBGWCR4_EL1
@ MISCREG_DBGWCR4_EL1
Definition: miscregs.hh:506
ArmISA::MISCREG_DBGBVR2_EL1
@ MISCREG_DBGBVR2_EL1
Definition: miscregs.hh:456
ArmISA::EL2
@ EL2
Definition: types.hh:624
RegMiscRegImmOp64::op1
ArmISA::MiscRegIndex op1
Definition: misc64.hh:195
MiscRegImmOp64::imm
uint32_t imm
Definition: misc64.hh:153
ArmISA::MISCREG_ZCR_EL2
@ MISCREG_ZCR_EL2
Definition: miscregs.hh:1052
ArmISA::MISCREG_AFSR0_EL12
@ MISCREG_AFSR0_EL12
Definition: miscregs.hh:632
ArmISA::MISCREG_DBGWCR7_EL1
@ MISCREG_DBGWCR7_EL1
Definition: miscregs.hh:509
ArmISA::MISCREG_CTR_EL0
@ MISCREG_CTR_EL0
Definition: miscregs.hh:571
ArmISA::MISCREG_DC_CVAU_Xt
@ MISCREG_DC_CVAU_Xt
Definition: miscregs.hh:664
ArmISA::MISCREG_IC_IVAU_Xt
@ MISCREG_IC_IVAU_Xt
Definition: miscregs.hh:662
ArmISA::MISCREG_CONTEXTIDR_EL1
@ MISCREG_CONTEXTIDR_EL1
Definition: miscregs.hh:741
ArmISA::MISCREG_SPSR_UND
@ MISCREG_SPSR_UND
Definition: miscregs.hh:65
ArmISA::MISCREG_DBGWCR9_EL1
@ MISCREG_DBGWCR9_EL1
Definition: miscregs.hh:511
ArmISA::MISCREG_DBGWCR0_EL1
@ MISCREG_DBGWCR0_EL1
Definition: miscregs.hh:502
ArmISA::MISCREG_TLBI_VAALE1IS_Xt
@ MISCREG_TLBI_VAALE1IS_Xt
Definition: miscregs.hh:679
ArmISA::MISCREG_APDBKeyLo_EL1
@ MISCREG_APDBKeyLo_EL1
Definition: miscregs.hh:824
ArmISA::MISCREG_DBGWCR11_EL1
@ MISCREG_DBGWCR11_EL1
Definition: miscregs.hh:513
warn_once
#define warn_once(...)
Definition: logging.hh:243
ArmISA::MISCREG_ID_AA64ISAR0_EL1
@ MISCREG_ID_AA64ISAR0_EL1
Definition: miscregs.hh:563
ArmISA::MISCREG_VMPIDR_EL2
@ MISCREG_VMPIDR_EL2
Definition: miscregs.hh:574
ArmISA::MISCREG_CNTFRQ_EL0
@ MISCREG_CNTFRQ_EL0
Definition: miscregs.hh:749
MiscRegImplDefined64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:869
ArmISA::EL0
@ EL0
Definition: types.hh:622
ArmISA::MISCREG_DBGWCR14_EL1
@ MISCREG_DBGWCR14_EL1
Definition: miscregs.hh:516
ArmISA::MISCREG_TLBI_VAAE1IS_Xt
@ MISCREG_TLBI_VAAE1IS_Xt
Definition: miscregs.hh:677
ArmISA::MISCREG_DBGBVR0_EL1
@ MISCREG_DBGBVR0_EL1
Definition: miscregs.hh:454
ArmISA::MISCREG_DBGBCR15_EL1
@ MISCREG_DBGBCR15_EL1
Definition: miscregs.hh:485
ArmISA::MISCREG_DBGWCR2_EL1
@ MISCREG_DBGWCR2_EL1
Definition: miscregs.hh:504
ArmISA::MISCREG_DBGWCR15_EL1
@ MISCREG_DBGWCR15_EL1
Definition: miscregs.hh:517
ArmISA::MISCREG_ICIALLUIS
@ MISCREG_ICIALLUIS
Definition: miscregs.hh:288
ArmISA::MISCREG_FPSR
@ MISCREG_FPSR
Definition: miscregs.hh:618
ArmISA::MISCREG_TTBR0_EL1
@ MISCREG_TTBR0_EL1
Definition: miscregs.hh:593
ArmISA::MISCREG_ICIALLU
@ MISCREG_ICIALLU
Definition: miscregs.hh:293
ArmISA::MISCREG_VTTBR_EL2
@ MISCREG_VTTBR_EL2
Definition: miscregs.hh:601
ArmISA::MISCREG_DAIF
@ MISCREG_DAIF
Definition: miscregs.hh:616
ArmISA::MISCREG_DBGWVR5_EL1
@ MISCREG_DBGWVR5_EL1
Definition: miscregs.hh:491
ArmISA::MISCREG_TLBI_VMALLE1
@ MISCREG_TLBI_VMALLE1
Definition: miscregs.hh:680
ArmISA::MISCREG_DBGBCR5_EL1
@ MISCREG_DBGBCR5_EL1
Definition: miscregs.hh:475
ArmISA::MISCREG_TLBI_VMALLS12E1
@ MISCREG_TLBI_VMALLS12E1
Definition: miscregs.hh:699
ArmISA::MISCREG_MVFR1_EL1
@ MISCREG_MVFR1_EL1
Definition: miscregs.hh:555
ArmISA::MISCREG_DBGWVR12_EL1
@ MISCREG_DBGWVR12_EL1
Definition: miscregs.hh:498
ArmISA::MISCREG_DC_CISW_Xt
@ MISCREG_DC_CISW_Xt
Definition: miscregs.hh:660
MiscRegRegImmOp64::op1
ArmISA::IntRegIndex op1
Definition: misc64.hh:177
Loader::SymbolTable
Definition: symtab.hh:58
ArmISA::MISCREG_APDBKeyHi_EL1
@ MISCREG_APDBKeyHi_EL1
Definition: miscregs.hh:823
Trace::InstRecord
Definition: insttracer.hh:55
ArmISA::MISCREG_MDCR_EL3
@ MISCREG_MDCR_EL3
Definition: miscregs.hh:592
ArmISA::MISCREG_DBGVCR32_EL2
@ MISCREG_DBGVCR32_EL2
Definition: miscregs.hh:522
ArmISA::MISCREG_TLBI_ASIDE1IS_Xt
@ MISCREG_TLBI_ASIDE1IS_Xt
Definition: miscregs.hh:676
ArmISA::MISCREG_DBGWVR7_EL1
@ MISCREG_DBGWVR7_EL1
Definition: miscregs.hh:493
ArmISA::MISCREG_TLBI_IPAS2LE1IS_Xt
@ MISCREG_TLBI_IPAS2LE1IS_Xt
Definition: miscregs.hh:687
ArmISA::MISCREG_AT_S1E0W_Xt
@ MISCREG_AT_S1E0W_Xt
Definition: miscregs.hh:658
StaticInst::machInst
const TheISA::ExtMachInst machInst
The binary machine instruction.
Definition: static_inst.hh:259
ArmISA::ArmStaticInst::printIntReg
void printIntReg(std::ostream &os, RegIndex reg_idx, uint8_t opWidth=0) const
Print a register name for disassembly given the unique dependence tag number (FP or int).
Definition: static_inst.cc:296
ArmISA::MISCREG_CLIDR_EL1
@ MISCREG_CLIDR_EL1
Definition: miscregs.hh:568
ArmISA::MISCREG_DBGWVR3_EL1
@ MISCREG_DBGWVR3_EL1
Definition: miscregs.hh:489
ArmISA::MISCREG_DBGWCR12_EL1
@ MISCREG_DBGWCR12_EL1
Definition: miscregs.hh:514
ArmISA::EL3
@ EL3
Definition: types.hh:625
ArmISA::MISCREG_ELR_EL2
@ MISCREG_ELR_EL2
Definition: miscregs.hh:622
FullSystem
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
Definition: root.cc:204
ArmISA::MISCREG_APGAKeyHi_EL1
@ MISCREG_APGAKeyHi_EL1
Definition: miscregs.hh:825
ArmISA::MISCREG_ESR_EL1
@ MISCREG_ESR_EL1
Definition: miscregs.hh:635
ArmISA::MISCREG_TCR_EL2
@ MISCREG_TCR_EL2
Definition: miscregs.hh:600
ArmISA::MISCREG_ID_ISAR3_EL1
@ MISCREG_ID_ISAR3_EL1
Definition: miscregs.hh:550
ArmISA::ISA
Definition: isa.hh:66
ArmISA::MISCREG_MDCCINT_EL1
@ MISCREG_MDCCINT_EL1
Definition: miscregs.hh:449
ArmISA::MISCREG_ELR_EL1
@ MISCREG_ELR_EL1
Definition: miscregs.hh:610
ArmISA::MISCREG_CPACR_EL12
@ MISCREG_CPACR_EL12
Definition: miscregs.hh:579
ArmISA::MISCREG_ZCR_EL1
@ MISCREG_ZCR_EL1
Definition: miscregs.hh:1054
ArmISA::MISCREG_DBGWCR13_EL1
@ MISCREG_DBGWCR13_EL1
Definition: miscregs.hh:515
ArmISA::MISCREG_AT_S1E1W_Xt
@ MISCREG_AT_S1E1W_Xt
Definition: miscregs.hh:656
ArmISA
Definition: ccregs.hh:41
ArmISA::MISCREG_TLBI_VALE2IS_Xt
@ MISCREG_TLBI_VALE2IS_Xt
Definition: miscregs.hh:691
ArmISA::MISCREG_AT_S12E0W_Xt
@ MISCREG_AT_S12E0W_Xt
Definition: miscregs.hh:671
ArmISA::MISCREG_TPIDR_EL2
@ MISCREG_TPIDR_EL2
Definition: miscregs.hh:746
ArmISA::MISCREG_CSSELR_EL1
@ MISCREG_CSSELR_EL1
Definition: miscregs.hh:570
ArmSystem::haveVirtualization
bool haveVirtualization() const
Returns true if this system implements the virtualization Extensions.
Definition: system.hh:168
ArmISA::MISCREG_ID_ISAR4_EL1
@ MISCREG_ID_ISAR4_EL1
Definition: miscregs.hh:551
ArmISA::ec
ec
Definition: miscregs_types.hh:663
ArmISA::MISCREG_DBGBCR14_EL1
@ MISCREG_DBGBCR14_EL1
Definition: miscregs.hh:484
ArmISA::MISCREG_ID_AA64MMFR0_EL1
@ MISCREG_ID_AA64MMFR0_EL1
Definition: miscregs.hh:565
ArmISA::MISCREG_AFSR1_EL2
@ MISCREG_AFSR1_EL2
Definition: miscregs.hh:639
ArmISA::MISCREG_DBGWCR5_EL1
@ MISCREG_DBGWCR5_EL1
Definition: miscregs.hh:507
ArmISA::MISCREG_ID_AA64AFR0_EL1
@ MISCREG_ID_AA64AFR0_EL1
Definition: miscregs.hh:561
ArmISA::MISCREG_DBGWVR1_EL1
@ MISCREG_DBGWVR1_EL1
Definition: miscregs.hh:487
ArmISA::MISCREG_DBGWVR14_EL1
@ MISCREG_DBGWVR14_EL1
Definition: miscregs.hh:500
ArmISA::MISCREG_DC_CVAC_Xt
@ MISCREG_DC_CVAC_Xt
Definition: miscregs.hh:663
ArmISA::MISCREG_DBGWVR15_EL1
@ MISCREG_DBGWVR15_EL1
Definition: miscregs.hh:501
ArmISA::MISCREG_ID_MMFR0_EL1
@ MISCREG_ID_MMFR0_EL1
Definition: miscregs.hh:542
ArmISA::ELIs64
bool ELIs64(ThreadContext *tc, ExceptionLevel el)
Definition: utility.cc:322
ArmISA::MISCREG_ID_AA64DFR1_EL1
@ MISCREG_ID_AA64DFR1_EL1
Definition: miscregs.hh:560
ImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:44
ThreadContext::getIsaPtr
virtual BaseISA * getIsaPtr()=0
ArmISA::MISCREG_DC_IVAC_Xt
@ MISCREG_DC_IVAC_Xt
Definition: miscregs.hh:653
ArmISA::MISCREG_VBAR_EL2
@ MISCREG_VBAR_EL2
Definition: miscregs.hh:736
ArmISA::MISCREG_ID_ISAR5_EL1
@ MISCREG_ID_ISAR5_EL1
Definition: miscregs.hh:552
ArmISA::MISCREG_AT_S12E1R_Xt
@ MISCREG_AT_S12E1R_Xt
Definition: miscregs.hh:668
ArmISA::MISCREG_AFSR0_EL2
@ MISCREG_AFSR0_EL2
Definition: miscregs.hh:638
ArmISA::MISCREG_DBGBCR1_EL1
@ MISCREG_DBGBCR1_EL1
Definition: miscregs.hh:471
ArmISA::MISCREG_DBGBCR0_EL1
@ MISCREG_DBGBCR0_EL1
Definition: miscregs.hh:470
ArmISA::MISCREG_AMAIR_EL1
@ MISCREG_AMAIR_EL1
Definition: miscregs.hh:724
RegNone::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const
Internal function to generate disassembly string.
Definition: misc64.cc:876
MiscRegImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:810
ArmISA::MISCREG_DBGWVR4_EL1
@ MISCREG_DBGWVR4_EL1
Definition: miscregs.hh:490
ArmISA::MISCREG_ICC_SGI0R_EL1
@ MISCREG_ICC_SGI0R_EL1
Definition: miscregs.hh:858
ArmISA::MISCREG_DC_ZVA_Xt
@ MISCREG_DC_ZVA_Xt
Definition: miscregs.hh:661
ArmISA::MISCREG_DBGBVR6_EL1
@ MISCREG_DBGBVR6_EL1
Definition: miscregs.hh:460
ArmISA::MISCREG_ID_MMFR1_EL1
@ MISCREG_ID_MMFR1_EL1
Definition: miscregs.hh:543
MiscRegRegImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:822
ArmISA::EC_TRAPPED_SVE
@ EC_TRAPPED_SVE
Definition: types.hh:672
misc64.hh
ArmISA::MISCREG_ID_ISAR2_EL1
@ MISCREG_ID_ISAR2_EL1
Definition: miscregs.hh:549
ArmISA::MISCREG_ID_AA64PFR0_EL1
@ MISCREG_ID_AA64PFR0_EL1
Definition: miscregs.hh:557
ArmISA::MISCREG_FAR_EL12
@ MISCREG_FAR_EL12
Definition: miscregs.hh:646
ArmISA::ss
Bitfield< 21 > ss
Definition: miscregs_types.hh:56
ArmSystem::haveSecurity
bool haveSecurity() const
Returns true if this system implements the Security Extensions.
Definition: system.hh:159
ArmISA::MISCREG_DC_ISW_Xt
@ MISCREG_DC_ISW_Xt
Definition: miscregs.hh:654
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
ArmISA::MISCREG_ESR_EL2
@ MISCREG_ESR_EL2
Definition: miscregs.hh:640
RegNone::dest
ArmISA::IntRegIndex dest
Definition: misc64.hh:240
ArmISA::MISCREG_DBGWCR3_EL1
@ MISCREG_DBGWCR3_EL1
Definition: miscregs.hh:505
ArmISA::MISCREG_SCTLR_EL12
@ MISCREG_SCTLR_EL12
Definition: miscregs.hh:576
ArmISA::MISCREG_AMAIR_EL2
@ MISCREG_AMAIR_EL2
Definition: miscregs.hh:727
MiscRegOp64::checkEL3Trap
bool checkEL3Trap(ThreadContext *tc, const ArmISA::MiscRegIndex misc_reg, ArmISA::ExceptionLevel el, ArmISA::ExceptionClass &ec, uint32_t &immediate) const
Definition: misc64.cc:643
RegMiscRegImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:834
ArmISA::MISCREG_MDSCR_EL1
@ MISCREG_MDSCR_EL1
Definition: miscregs.hh:451
ArmISA::MISCREG_ID_ISAR0_EL1
@ MISCREG_ID_ISAR0_EL1
Definition: miscregs.hh:547
ArmISA::MISCREG_ID_AFR0_EL1
@ MISCREG_ID_AFR0_EL1
Definition: miscregs.hh:541
ArmISA::MISCREG_CONTEXTIDR_EL2
@ MISCREG_CONTEXTIDR_EL2
Definition: miscregs.hh:813
ArmISA::MISCREG_AFSR0_EL1
@ MISCREG_AFSR0_EL1
Definition: miscregs.hh:631
ArmISA::MISCREG_TLBI_VAE1IS_Xt
@ MISCREG_TLBI_VAE1IS_Xt
Definition: miscregs.hh:675
ArmISA::MISCREG_DBGWVR9_EL1
@ MISCREG_DBGWVR9_EL1
Definition: miscregs.hh:495
ArmISA::ExceptionLevel
ExceptionLevel
Definition: types.hh:621
ArmISA::imm
Bitfield< 7, 0 > imm
Definition: types.hh:141
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:246
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
ArmISA::MISCREG_HSTR_EL2
@ MISCREG_HSTR_EL2
Definition: miscregs.hh:585
ArmISA::MISCREG_AT_S12E0R_Xt
@ MISCREG_AT_S12E0R_Xt
Definition: miscregs.hh:670
ArmISA::MISCREG_ID_DFR0_EL1
@ MISCREG_ID_DFR0_EL1
Definition: miscregs.hh:540
ArmISA::MISCREG_ICC_SGI1R_EL1
@ MISCREG_ICC_SGI1R_EL1
Definition: miscregs.hh:856
ArmISA::MISCREG_APIBKeyHi_EL1
@ MISCREG_APIBKeyHi_EL1
Definition: miscregs.hh:829
ArmISA::MISCREG_ID_AA64MMFR1_EL1
@ MISCREG_ID_AA64MMFR1_EL1
Definition: miscregs.hh:566
isa.hh
ArmISA::MISCREG_VBAR_EL1
@ MISCREG_VBAR_EL1
Definition: miscregs.hh:732
ArmISA::MISCREG_AT_S1E2W_Xt
@ MISCREG_AT_S1E2W_Xt
Definition: miscregs.hh:667
ArmISA::MISCREG_DBGBVR14_EL1
@ MISCREG_DBGBVR14_EL1
Definition: miscregs.hh:468
ArmISA::MISCREG_AT_S1E0R_Xt
@ MISCREG_AT_S1E0R_Xt
Definition: miscregs.hh:657
ArmISA::MISCREG_DBGWVR2_EL1
@ MISCREG_DBGWVR2_EL1
Definition: miscregs.hh:488
ArmISA::MISCREG_DBGWVR11_EL1
@ MISCREG_DBGWVR11_EL1
Definition: miscregs.hh:497
ArmISA::MISCREG_APDAKeyLo_EL1
@ MISCREG_APDAKeyLo_EL1
Definition: miscregs.hh:822
ArmISA::MISCREG_DBGWVR0_EL1
@ MISCREG_DBGWVR0_EL1
Definition: miscregs.hh:486
ArmISA::MISCREG_APGAKeyLo_EL1
@ MISCREG_APGAKeyLo_EL1
Definition: miscregs.hh:826
ArmISA::MISCREG_SPSR_IRQ
@ MISCREG_SPSR_IRQ
Definition: miscregs.hh:60
ArmISA::MISCREG_TCR_EL1
@ MISCREG_TCR_EL1
Definition: miscregs.hh:597
ArmISA::el
Bitfield< 3, 2 > el
Definition: miscregs_types.hh:69
ArmISA::ArmStaticInst::printMiscReg
void printMiscReg(std::ostream &os, RegIndex reg_idx) const
Definition: static_inst.cc:367
ArmISA::MISCREG_SPSR_ABT
@ MISCREG_SPSR_ABT
Definition: miscregs.hh:63
ExecContext
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:70
ArmISA::MISCREG_ID_AA64DFR0_EL1
@ MISCREG_ID_AA64DFR0_EL1
Definition: miscregs.hh:559
ArmISA::MISCREG_DBGWVR8_EL1
@ MISCREG_DBGWVR8_EL1
Definition: miscregs.hh:494
ArmISA::MISCREG_ACTLR_EL2
@ MISCREG_ACTLR_EL2
Definition: miscregs.hh:581
ArmISA::MISCREG_DBGBCR9_EL1
@ MISCREG_DBGBCR9_EL1
Definition: miscregs.hh:479
ArmISA::MISCREG_TLBI_VMALLS12E1IS
@ MISCREG_TLBI_VMALLS12E1IS
Definition: miscregs.hh:692
ArmISA::MISCREG_DBGBVR3_EL1
@ MISCREG_DBGBVR3_EL1
Definition: miscregs.hh:457
ArmISA::MISCREG_FAR_EL1
@ MISCREG_FAR_EL1
Definition: miscregs.hh:645
ArmISA::MISCREG_TLBI_VAAE1_Xt
@ MISCREG_TLBI_VAAE1_Xt
Definition: miscregs.hh:683
StaticInst::mnemonic
const char * mnemonic
Base mnemonic (e.g., "add").
Definition: static_inst.hh:284
ArmISA::MISCREG_DBGBVR10_EL1
@ MISCREG_DBGBVR10_EL1
Definition: miscregs.hh:464
ArmISA::MISCREG_VBAR_EL12
@ MISCREG_VBAR_EL12
Definition: miscregs.hh:733
ArmISA::MISCREG_FPEXC32_EL2
@ MISCREG_FPEXC32_EL2
Definition: miscregs.hh:641
ArmISA::MISCREG_TTBR0_EL2
@ MISCREG_TTBR0_EL2
Definition: miscregs.hh:599
ArmISA::MISCREG_TLBI_VMALLE1IS
@ MISCREG_TLBI_VMALLE1IS
Definition: miscregs.hh:674
UnknownOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:81
ArmISA::MISCREG_CNTVOFF_EL2
@ MISCREG_CNTVOFF_EL2
Definition: miscregs.hh:784
ArmISA::MISCREG_AMAIR_EL12
@ MISCREG_AMAIR_EL12
Definition: miscregs.hh:725
ArmISA::MISCREG_TLBI_VAE2_Xt
@ MISCREG_TLBI_VAE2_Xt
Definition: miscregs.hh:696
ArmISA::MISCREG_IFSR32_EL2
@ MISCREG_IFSR32_EL2
Definition: miscregs.hh:637
ArmISA::MISCREG_DBGWCR6_EL1
@ MISCREG_DBGWCR6_EL1
Definition: miscregs.hh:508
ArmISA::MISCREG_DBGBCR11_EL1
@ MISCREG_DBGBCR11_EL1
Definition: miscregs.hh:481
ArmISA::MISCREG_TCR_EL12
@ MISCREG_TCR_EL12
Definition: miscregs.hh:598
ArmISA::MISCREG_DBGWCR10_EL1
@ MISCREG_DBGWCR10_EL1
Definition: miscregs.hh:512
ArmISA::MISCREG_HCR_EL2
@ MISCREG_HCR_EL2
Definition: miscregs.hh:582
NoFault
constexpr decltype(nullptr) NoFault
Definition: types.hh:251
ArmISA::MISCREG_DBGBVR13_EL1
@ MISCREG_DBGBVR13_EL1
Definition: miscregs.hh:467
ArmISA::MISCREG_TTBR1_EL1
@ MISCREG_TTBR1_EL1
Definition: miscregs.hh:595
ArmISA::MISCREG_REVIDR_EL1
@ MISCREG_REVIDR_EL1
Definition: miscregs.hh:537
MiscRegRegImmOp64::dest
ArmISA::MiscRegIndex dest
Definition: misc64.hh:176
ArmISA::EL1
@ EL1
Definition: types.hh:623
ArmISA::MISCREG_SPSR_EL12
@ MISCREG_SPSR_EL12
Definition: miscregs.hh:609
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:148
ArmISA::MISCREG_APIAKeyLo_EL1
@ MISCREG_APIAKeyLo_EL1
Definition: miscregs.hh:828
ArmISA::MISCREG_IMPDEF_UNIMPL
@ MISCREG_IMPDEF_UNIMPL
Definition: miscregs.hh:1073
ArmISA::MISCREG_APIAKeyHi_EL1
@ MISCREG_APIAKeyHi_EL1
Definition: miscregs.hh:827
ArmISA::MISCREG_AT_S1E1R_Xt
@ MISCREG_AT_S1E1R_Xt
Definition: miscregs.hh:655
ArmISA::MISCREG_DBGBCR13_EL1
@ MISCREG_DBGBCR13_EL1
Definition: miscregs.hh:483
ArmISA::MISCREG_ZCR_EL3
@ MISCREG_ZCR_EL3
Definition: miscregs.hh:1051
ArmISA::EC_TRAPPED_MSR_MRS_64
@ EC_TRAPPED_MSR_MRS_64
Definition: types.hh:671
ArmISA::MISCREG_MAIR_EL12
@ MISCREG_MAIR_EL12
Definition: miscregs.hh:723
ArmISA::MISCREG_SP_EL1
@ MISCREG_SP_EL1
Definition: miscregs.hh:623
ArmISA::MISCREG_CONTEXTIDR_EL12
@ MISCREG_CONTEXTIDR_EL12
Definition: miscregs.hh:742
ArmISA::MISCREG_ACTLR_EL1
@ MISCREG_ACTLR_EL1
Definition: miscregs.hh:577
ArmISA::isGenericTimerSystemAccessTrapEL1
bool isGenericTimerSystemAccessTrapEL1(const MiscRegIndex miscReg, ThreadContext *tc)
Definition: utility.cc:922
ArmISA::MISCREG_PAN
@ MISCREG_PAN
Definition: miscregs.hh:1089
ArmISA::MISCREG_TLBI_VALE2_Xt
@ MISCREG_TLBI_VALE2_Xt
Definition: miscregs.hh:698
ArmISA::MISCREG_HACR_EL2
@ MISCREG_HACR_EL2
Definition: miscregs.hh:586
ArmISA::MISCREG_ID_ISAR6_EL1
@ MISCREG_ID_ISAR6_EL1
Definition: miscregs.hh:553
MiscRegImplDefined64::fullMnemonic
const std::string fullMnemonic
Definition: misc64.hh:212
ArmISA::MISCREG_DBGBCR7_EL1
@ MISCREG_DBGBCR7_EL1
Definition: miscregs.hh:477
ArmISA::MISCREG_TLBI_VAE1_Xt
@ MISCREG_TLBI_VAE1_Xt
Definition: miscregs.hh:681
ArmISA::MISCREG_DBGBVR4_EL1
@ MISCREG_DBGBVR4_EL1
Definition: miscregs.hh:458
ArmISA::MISCREG_SCR_EL3
@ MISCREG_SCR_EL3
Definition: miscregs.hh:589
ArmISA::MISCREG_CPTR_EL2
@ MISCREG_CPTR_EL2
Definition: miscregs.hh:584
ArmISA::MISCREG_APDAKeyHi_EL1
@ MISCREG_APDAKeyHi_EL1
Definition: miscregs.hh:821
ArmISA::MISCREG_SPSEL
@ MISCREG_SPSEL
Definition: miscregs.hh:613
MiscRegOp64::trap
Fault trap(ThreadContext *tc, ArmISA::MiscRegIndex misc_reg, ArmISA::ExceptionLevel el, uint32_t immediate) const
Definition: misc64.cc:88
ExecContext::tcBase
virtual ThreadContext * tcBase() const =0
Returns a pointer to the ThreadContext.
MiscRegImplDefined64::execute
Fault execute(ExecContext *xc, Trace::InstRecord *traceData) const override
Definition: misc64.cc:846
ArmISA::MISCREG_DBGBVR15_EL1
@ MISCREG_DBGBVR15_EL1
Definition: miscregs.hh:469
ArmISA::MISCREG_CPSR
@ MISCREG_CPSR
Definition: miscregs.hh:57
ArmISA::MISCREG_TLBI_VALE1IS_Xt
@ MISCREG_TLBI_VALE1IS_Xt
Definition: miscregs.hh:678
ArmISA::MISCREG_DBGBCR4_EL1
@ MISCREG_DBGBCR4_EL1
Definition: miscregs.hh:474
ArmISA::MISCREG_ELR_EL12
@ MISCREG_ELR_EL12
Definition: miscregs.hh:611
ArmISA::MISCREG_FPCR
@ MISCREG_FPCR
Definition: miscregs.hh:617
ArmISA::MISCREG_AT_S1E2R_Xt
@ MISCREG_AT_S1E2R_Xt
Definition: miscregs.hh:666
ArmISA::MISCREG_CCSIDR_EL1
@ MISCREG_CCSIDR_EL1
Definition: miscregs.hh:567
ArmISA::MISCREG_AFSR1_EL1
@ MISCREG_AFSR1_EL1
Definition: miscregs.hh:633
ArmISA::MISCREG_DBGBVR7_EL1
@ MISCREG_DBGBVR7_EL1
Definition: miscregs.hh:461
MiscRegImplDefined64::warning
const bool warning
Definition: misc64.hh:215
MiscRegImmOp64::miscRegImm
RegVal miscRegImm() const
Returns the "register view" of the immediate field.
Definition: misc64.cc:798
ArmISA::MISCREG_TLBI_ALLE2IS
@ MISCREG_TLBI_ALLE2IS
Definition: miscregs.hh:688
ArmISA::MISCREG_TLBI_ALLE1IS
@ MISCREG_TLBI_ALLE1IS
Definition: miscregs.hh:690
ArmISA::MISCREG_ID_PFR0_EL1
@ MISCREG_ID_PFR0_EL1
Definition: miscregs.hh:538
ArmISA::MISCREG_ID_ISAR1_EL1
@ MISCREG_ID_ISAR1_EL1
Definition: miscregs.hh:548
ArmISA::MISCREG_MDCR_EL2
@ MISCREG_MDCR_EL2
Definition: miscregs.hh:583
ArmISA::MISCREG_ICC_ASGI1R_EL1
@ MISCREG_ICC_ASGI1R_EL1
Definition: miscregs.hh:857
ArmISA::MISCREG_MAIR_EL2
@ MISCREG_MAIR_EL2
Definition: miscregs.hh:726
ThreadContext::readMiscReg
virtual RegVal readMiscReg(RegIndex misc_reg)=0
ArmISA::MISCREG_DBGBVR12_EL1
@ MISCREG_DBGBVR12_EL1
Definition: miscregs.hh:466
ArmISA::MISCREG_TLBI_VAALE1_Xt
@ MISCREG_TLBI_VAALE1_Xt
Definition: miscregs.hh:685
ArmISA::ArmStaticInst::printMnemonic
void printMnemonic(std::ostream &os, const std::string &suffix="", bool withPred=true, bool withCond64=false, ConditionCode cond64=COND_UC) const
Definition: static_inst.cc:374
ArmISA::MiscRegIndex
MiscRegIndex
Definition: miscregs.hh:56
ArmISA::ExceptionClass
ExceptionClass
Definition: types.hh:648
ArmSystem::haveEL
static bool haveEL(ThreadContext *tc, ArmISA::ExceptionLevel el)
Return true if the system implements a specific exception level.
Definition: system.cc:135
ccprintf
void ccprintf(cp::Print &print)
Definition: cprintf.hh:127
ArmISA::MISCREG_DBGWCR8_EL1
@ MISCREG_DBGWCR8_EL1
Definition: miscregs.hh:510
ArmISA::MISCREG_DBGBCR6_EL1
@ MISCREG_DBGBCR6_EL1
Definition: miscregs.hh:476
MiscRegImplDefined64::miscReg
const ArmISA::MiscRegIndex miscReg
Definition: misc64.hh:213
MiscRegImmOp64::dest
ArmISA::MiscRegIndex dest
Definition: misc64.hh:152
ArmISA::MISCREG_ESR_EL12
@ MISCREG_ESR_EL12
Definition: miscregs.hh:636
ArmISA::MISCREG_DBGWVR10_EL1
@ MISCREG_DBGWVR10_EL1
Definition: miscregs.hh:496
ArmISA::MISCREG_DBGBVR5_EL1
@ MISCREG_DBGBVR5_EL1
Definition: miscregs.hh:459
ArmISA::MISCREG_VPIDR_EL2
@ MISCREG_VPIDR_EL2
Definition: miscregs.hh:573
ArmISA::MISCREG_DBGBVR11_EL1
@ MISCREG_DBGBVR11_EL1
Definition: miscregs.hh:465
MiscRegOp64::checkEL1Trap
bool checkEL1Trap(ThreadContext *tc, const ArmISA::MiscRegIndex misc_reg, ArmISA::ExceptionLevel el, ArmISA::ExceptionClass &ec, uint32_t &immediate) const
Definition: misc64.cc:114
ArmISA::MISCREG_TLBI_IPAS2E1_Xt
@ MISCREG_TLBI_IPAS2E1_Xt
Definition: miscregs.hh:693
ArmISA::MISCREG_TTBR1_EL12
@ MISCREG_TTBR1_EL12
Definition: miscregs.hh:596
ArmISA::MISCREG_MAIR_EL1
@ MISCREG_MAIR_EL1
Definition: miscregs.hh:722
ArmISA::MISCREG_AIDR_EL1
@ MISCREG_AIDR_EL1
Definition: miscregs.hh:569
RegMiscRegImmOp64::dest
ArmISA::IntRegIndex dest
Definition: misc64.hh:194
RegRegRegImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:66
ArmISA::MISCREG_VTCR_EL2
@ MISCREG_VTCR_EL2
Definition: miscregs.hh:602
ArmISA::MISCREG_TTBR1_EL2
@ MISCREG_TTBR1_EL2
Definition: miscregs.hh:816
ArmISA::MISCREG_ID_PFR1_EL1
@ MISCREG_ID_PFR1_EL1
Definition: miscregs.hh:539
RegRegImmImmOp64::generateDisassembly
std::string generateDisassembly(Addr pc, const Loader::SymbolTable *symtab) const override
Internal function to generate disassembly string.
Definition: misc64.cc:53
ArmISA::MISCREG_ID_MMFR3_EL1
@ MISCREG_ID_MMFR3_EL1
Definition: miscregs.hh:545
ArmISA::MISCREG_AT_S12E1W_Xt
@ MISCREG_AT_S12E1W_Xt
Definition: miscregs.hh:669
ArmISA::MISCREG_MDCCSR_EL0
@ MISCREG_MDCCSR_EL0
Definition: miscregs.hh:518
ArmISA::MISCREG_TLBI_ALLE1
@ MISCREG_TLBI_ALLE1
Definition: miscregs.hh:697
ArmISA::MISCREG_DBGWVR13_EL1
@ MISCREG_DBGWVR13_EL1
Definition: miscregs.hh:499
ArmISA::MISCREG_CPACR_EL1
@ MISCREG_CPACR_EL1
Definition: miscregs.hh:578
ArmISA::MISCREG_DBGBCR12_EL1
@ MISCREG_DBGBCR12_EL1
Definition: miscregs.hh:482
ArmISA::MISCREG_FAR_EL2
@ MISCREG_FAR_EL2
Definition: miscregs.hh:647
ArmISA::MISCREG_ID_MMFR2_EL1
@ MISCREG_ID_MMFR2_EL1
Definition: miscregs.hh:544
ArmISA::encoding
Bitfield< 27, 25 > encoding
Definition: types.hh:99
ArmISA::MISCREG_TLBI_ALLE2
@ MISCREG_TLBI_ALLE2
Definition: miscregs.hh:695
ArmISA::MISCREG_TLBI_IPAS2LE1_Xt
@ MISCREG_TLBI_IPAS2LE1_Xt
Definition: miscregs.hh:694
ArmISA::EC_TRAPPED_SIMD_FP
@ EC_TRAPPED_SIMD_FP
Definition: types.hh:657
ArmISA::MISCREG_DBGBCR8_EL1
@ MISCREG_DBGBCR8_EL1
Definition: miscregs.hh:478
ArmISA::MISCREG_TLBI_VALE1_Xt
@ MISCREG_TLBI_VALE1_Xt
Definition: miscregs.hh:684
ArmISA::MISCREG_DBGBCR10_EL1
@ MISCREG_DBGBCR10_EL1
Definition: miscregs.hh:480
ArmISA::MISCREG_DC_CSW_Xt
@ MISCREG_DC_CSW_Xt
Definition: miscregs.hh:659
ArmISA::tvm
Bitfield< 26 > tvm
Definition: miscregs_types.hh:254
ArmISA::MISCREG_CPTR_EL3
@ MISCREG_CPTR_EL3
Definition: miscregs.hh:591
ArmISA::MISCREG_SPSR_EL2
@ MISCREG_SPSR_EL2
Definition: miscregs.hh:621
ArmISA::MISCREG_SCTLR_EL2
@ MISCREG_SCTLR_EL2
Definition: miscregs.hh:580
ArmISA::MISCREG_ID_AA64PFR1_EL1
@ MISCREG_ID_AA64PFR1_EL1
Definition: miscregs.hh:558
ArmISA::MISCREG_ID_MMFR4_EL1
@ MISCREG_ID_MMFR4_EL1
Definition: miscregs.hh:546
csprintf
std::string csprintf(const char *format, const Args &...args)
Definition: cprintf.hh:158
ArmISA::isGenericTimerSystemAccessTrapEL2
bool isGenericTimerSystemAccessTrapEL2(const MiscRegIndex miscReg, ThreadContext *tc)
Definition: utility.cc:982
ArmISA::MISCREG_DBGWCR1_EL1
@ MISCREG_DBGWCR1_EL1
Definition: miscregs.hh:503
ArmISA::MISCREG_DBGBVR8_EL1
@ MISCREG_DBGBVR8_EL1
Definition: miscregs.hh:462
ArmISA::MISCREG_SPSR_FIQ
@ MISCREG_SPSR_FIQ
Definition: miscregs.hh:59
MiscRegOp64::checkEL2Trap
bool checkEL2Trap(ThreadContext *tc, const ArmISA::MiscRegIndex misc_reg, ArmISA::ExceptionLevel el, ArmISA::ExceptionClass &ec, uint32_t &immediate) const
Definition: misc64.cc:179
ArmISA::MISCREG_TLBI_VAE2IS_Xt
@ MISCREG_TLBI_VAE2IS_Xt
Definition: miscregs.hh:689
ArmISA::MISCREG_DBGBVR1_EL1
@ MISCREG_DBGBVR1_EL1
Definition: miscregs.hh:455
RegVal
uint64_t RegVal
Definition: types.hh:174
ArmISA::MISCREG_TTBR0_EL12
@ MISCREG_TTBR0_EL12
Definition: miscregs.hh:594
ArmISA::MISCREG_SCTLR_EL1
@ MISCREG_SCTLR_EL1
Definition: miscregs.hh:575
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
ArmISA::MISCREG_TLBI_ASIDE1_Xt
@ MISCREG_TLBI_ASIDE1_Xt
Definition: miscregs.hh:682
ArmISA::MISCREG_SPSR_EL1
@ MISCREG_SPSR_EL1
Definition: miscregs.hh:608

Generated on Tue Jun 22 2021 15:28:20 for gem5 by doxygen 1.8.17