gem5  v20.1.0.0
isa.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2012-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  * Copyright (c) 2009 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef __ARCH_ARM_ISA_HH__
42 #define __ARCH_ARM_ISA_HH__
43 
44 #include "arch/arm/isa_device.hh"
45 #include "arch/arm/miscregs.hh"
46 #include "arch/arm/registers.hh"
47 #include "arch/arm/self_debug.hh"
48 #include "arch/arm/system.hh"
49 #include "arch/arm/tlb.hh"
50 #include "arch/arm/types.hh"
51 #include "arch/generic/isa.hh"
52 #include "arch/generic/traits.hh"
53 #include "debug/Checkpoint.hh"
54 #include "enums/DecoderFlavor.hh"
55 #include "enums/VecRegRenameMode.hh"
56 #include "sim/sim_object.hh"
57 
58 struct ArmISAParams;
59 struct DummyArmISADeviceParams;
60 class Checkpoint;
61 class EventManager;
62 
63 namespace ArmISA
64 {
65  class ISA : public BaseISA
66  {
67  protected:
68  // Parent system
70 
71  // Micro Architecture
72  const Enums::DecoderFlavor _decoderFlavor;
73  const Enums::VecRegRenameMode _vecRegRenameMode;
74 
77 
78  // PMU belonging to this ISA
80 
81  // Generic timer interface belonging to this ISA
82  std::unique_ptr<BaseISADevice> timer;
83 
84  // GICv3 CPU interface belonging to this ISA
85  std::unique_ptr<BaseISADevice> gicv3CpuInterface;
86 
87  // Cached copies of system-level properties
90  bool haveLPAE;
92  bool haveCrypto;
94  uint8_t physAddrRange;
95  bool haveSVE;
96  bool haveLSE;
97  bool havePAN;
98  bool haveSecEL2;
99  bool haveTME;
100 
102  unsigned sveVL;
103 
109 
111 
113 
116  uint32_t lower; // Lower half mapped to this register
117  uint32_t upper; // Upper half mapped to this register
118  uint64_t _reset; // value taken on reset (i.e. initialization)
119  uint64_t _res0; // reserved
120  uint64_t _res1; // reserved
121  uint64_t _raz; // read as zero (fixed at 0)
122  uint64_t _rao; // read as one (fixed at 1)
123  public:
125  lower(0), upper(0),
126  _reset(0), _res0(0), _res1(0), _raz(0), _rao(0) {}
127  uint64_t reset() const { return _reset; }
128  uint64_t res0() const { return _res0; }
129  uint64_t res1() const { return _res1; }
130  uint64_t raz() const { return _raz; }
131  uint64_t rao() const { return _rao; }
132  // raz/rao implies writes ignored
133  uint64_t wi() const { return _raz | _rao; }
134  };
135 
138 
141  std::bitset<NUM_MISCREG_INFOS> &info;
143  public:
144  chain mapsTo(uint32_t l, uint32_t u = 0) const {
145  entry.lower = l;
146  entry.upper = u;
147  return *this;
148  }
149  chain res0(uint64_t mask) const {
150  entry._res0 = mask;
151  return *this;
152  }
153  chain res1(uint64_t mask) const {
154  entry._res1 = mask;
155  return *this;
156  }
157  chain raz(uint64_t mask) const {
158  entry._raz = mask;
159  return *this;
160  }
161  chain rao(uint64_t mask) const {
162  entry._rao = mask;
163  return *this;
164  }
165  chain implemented(bool v = true) const {
167  return *this;
168  }
170  return implemented(false);
171  }
172  chain unverifiable(bool v = true) const {
174  return *this;
175  }
176  chain warnNotFail(bool v = true) const {
178  return *this;
179  }
180  chain mutex(bool v = true) const {
181  info[MISCREG_MUTEX] = v;
182  return *this;
183  }
184  chain banked(bool v = true) const {
185  info[MISCREG_BANKED] = v;
186  return *this;
187  }
188  chain banked64(bool v = true) const {
190  return *this;
191  }
192  chain bankedChild(bool v = true) const {
194  return *this;
195  }
196  chain userNonSecureRead(bool v = true) const {
198  return *this;
199  }
200  chain userNonSecureWrite(bool v = true) const {
202  return *this;
203  }
204  chain userSecureRead(bool v = true) const {
206  return *this;
207  }
208  chain userSecureWrite(bool v = true) const {
210  return *this;
211  }
212  chain user(bool v = true) const {
215  userSecureRead(v);
217  return *this;
218  }
219  chain privNonSecureRead(bool v = true) const {
221  return *this;
222  }
223  chain privNonSecureWrite(bool v = true) const {
225  return *this;
226  }
227  chain privNonSecure(bool v = true) const {
230  return *this;
231  }
232  chain privSecureRead(bool v = true) const {
234  return *this;
235  }
236  chain privSecureWrite(bool v = true) const {
238  return *this;
239  }
240  chain privSecure(bool v = true) const {
241  privSecureRead(v);
243  return *this;
244  }
245  chain priv(bool v = true) const {
246  privSecure(v);
247  privNonSecure(v);
248  return *this;
249  }
250  chain privRead(bool v = true) const {
251  privSecureRead(v);
253  return *this;
254  }
255  chain hypE2HRead(bool v = true) const {
257  return *this;
258  }
259  chain hypE2HWrite(bool v = true) const {
261  return *this;
262  }
263  chain hypE2H(bool v = true) const {
264  hypE2HRead(v);
265  hypE2HWrite(v);
266  return *this;
267  }
268  chain hypRead(bool v = true) const {
269  hypE2HRead(v);
270  info[MISCREG_HYP_RD] = v;
271  return *this;
272  }
273  chain hypWrite(bool v = true) const {
274  hypE2HWrite(v);
275  info[MISCREG_HYP_WR] = v;
276  return *this;
277  }
278  chain hyp(bool v = true) const {
279  hypRead(v);
280  hypWrite(v);
281  return *this;
282  }
283  chain monE2HRead(bool v = true) const {
285  return *this;
286  }
287  chain monE2HWrite(bool v = true) const {
289  return *this;
290  }
291  chain monE2H(bool v = true) const {
292  monE2HRead(v);
293  monE2HWrite(v);
294  return *this;
295  }
296  chain monSecureRead(bool v = true) const {
297  monE2HRead(v);
299  return *this;
300  }
301  chain monSecureWrite(bool v = true) const {
302  monE2HWrite(v);
304  return *this;
305  }
306  chain monNonSecureRead(bool v = true) const {
307  monE2HRead(v);
309  return *this;
310  }
311  chain monNonSecureWrite(bool v = true) const {
312  monE2HWrite(v);
314  return *this;
315  }
316  chain mon(bool v = true) const {
317  monSecureRead(v);
318  monSecureWrite(v);
321  return *this;
322  }
323  chain monSecure(bool v = true) const {
324  monSecureRead(v);
325  monSecureWrite(v);
326  return *this;
327  }
328  chain monNonSecure(bool v = true) const {
331  return *this;
332  }
333  chain allPrivileges(bool v = true) const {
336  userSecureRead(v);
340  privSecureRead(v);
342  hypRead(v);
343  hypWrite(v);
344  monSecureRead(v);
345  monSecureWrite(v);
348  return *this;
349  }
350  chain nonSecure(bool v = true) const {
355  hypRead(v);
356  hypWrite(v);
359  return *this;
360  }
361  chain secure(bool v = true) const {
362  userSecureRead(v);
364  privSecureRead(v);
366  monSecureRead(v);
367  monSecureWrite(v);
368  return *this;
369  }
370  chain reads(bool v) const {
372  userSecureRead(v);
374  privSecureRead(v);
375  hypRead(v);
376  monSecureRead(v);
378  return *this;
379  }
380  chain writes(bool v) const {
385  hypWrite(v);
386  monSecureWrite(v);
388  return *this;
389  }
391  user(0);
392  return *this;
393  }
394  chain highest(ArmSystem *const sys) const;
396  std::bitset<NUM_MISCREG_INFOS> &i)
397  : entry(e),
398  info(i)
399  {
400  // force unimplemented registers to be thusly declared
401  implemented(1);
402  }
403  };
404 
407  miscRegInfo[reg]);
408  }
409 
411 
414 
415  void
416  updateRegMap(CPSR cpsr)
417  {
418  if (cpsr.width == 0) {
420  } else {
421  switch (cpsr.mode) {
422  case MODE_USER:
423  case MODE_SYSTEM:
425  break;
426  case MODE_FIQ:
428  break;
429  case MODE_IRQ:
431  break;
432  case MODE_SVC:
434  break;
435  case MODE_MON:
437  break;
438  case MODE_ABORT:
440  break;
441  case MODE_HYP:
443  break;
444  case MODE_UNDEFINED:
446  break;
447  default:
448  panic("Unrecognized mode setting in CPSR.\n");
449  }
450  }
451  }
452 
455 
456  private:
457  void assert32() { assert(((CPSR)readMiscReg(MISCREG_CPSR)).width); }
458  void assert64() { assert(!((CPSR)readMiscReg(MISCREG_CPSR)).width); }
459 
460  public:
461  void clear();
462 
463  protected:
464  void clear32(const ArmISAParams *p, const SCTLR &sctlr_rst);
465  void clear64(const ArmISAParams *p);
466  void initID32(const ArmISAParams *p);
467  void initID64(const ArmISAParams *p);
468 
473 
474  public:
475  SelfDebug*
476  getSelfDebug() const
477  {
478  return selfDebug;
479  }
480 
481  static SelfDebug*
483  {
484  auto *arm_isa = static_cast<ArmISA::ISA *>(tc->getIsaPtr());
485  return arm_isa->getSelfDebug();
486  }
487 
488  RegVal readMiscRegNoEffect(int misc_reg) const;
489  RegVal readMiscReg(int misc_reg);
490  void setMiscRegNoEffect(int misc_reg, RegVal val);
491  void setMiscReg(int misc_reg, RegVal val);
492 
493  RegId
494  flattenRegId(const RegId& regId) const
495  {
496  switch (regId.classValue()) {
497  case IntRegClass:
498  return RegId(IntRegClass, flattenIntIndex(regId.index()));
499  case FloatRegClass:
500  return RegId(FloatRegClass, flattenFloatIndex(regId.index()));
501  case VecRegClass:
502  return RegId(VecRegClass, flattenVecIndex(regId.index()));
503  case VecElemClass:
504  return RegId(VecElemClass, flattenVecElemIndex(regId.index()),
505  regId.elemIndex());
506  case VecPredRegClass:
507  return RegId(VecPredRegClass,
508  flattenVecPredIndex(regId.index()));
509  case CCRegClass:
510  return RegId(CCRegClass, flattenCCIndex(regId.index()));
511  case MiscRegClass:
512  return RegId(MiscRegClass, flattenMiscIndex(regId.index()));
513  }
514  return RegId();
515  }
516 
517  int
518  flattenIntIndex(int reg) const
519  {
520  assert(reg >= 0);
521  if (reg < NUM_ARCH_INTREGS) {
522  return intRegMap[reg];
523  } else if (reg < NUM_INTREGS) {
524  return reg;
525  } else if (reg == INTREG_SPX) {
526  CPSR cpsr = miscRegs[MISCREG_CPSR];
528  (OperatingMode) (uint8_t) cpsr.mode);
529  if (!cpsr.sp && el != EL0)
530  return INTREG_SP0;
531  switch (el) {
532  case EL3:
533  return INTREG_SP3;
534  case EL2:
535  return INTREG_SP2;
536  case EL1:
537  return INTREG_SP1;
538  case EL0:
539  return INTREG_SP0;
540  default:
541  panic("Invalid exception level");
542  return 0; // Never happens.
543  }
544  } else {
545  return flattenIntRegModeIndex(reg);
546  }
547  }
548 
549  int
551  {
552  assert(reg >= 0);
553  return reg;
554  }
555 
556  int
557  flattenVecIndex(int reg) const
558  {
559  assert(reg >= 0);
560  return reg;
561  }
562 
563  int
565  {
566  assert(reg >= 0);
567  return reg;
568  }
569 
570  int
572  {
573  assert(reg >= 0);
574  return reg;
575  }
576 
577  int
578  flattenCCIndex(int reg) const
579  {
580  assert(reg >= 0);
581  return reg;
582  }
583 
584  int
586  {
587  assert(reg >= 0);
588  int flat_idx = reg;
589 
590  if (reg == MISCREG_SPSR) {
591  CPSR cpsr = miscRegs[MISCREG_CPSR];
592  switch (cpsr.mode) {
593  case MODE_EL0T:
594  warn("User mode does not have SPSR\n");
595  flat_idx = MISCREG_SPSR;
596  break;
597  case MODE_EL1T:
598  case MODE_EL1H:
599  flat_idx = MISCREG_SPSR_EL1;
600  break;
601  case MODE_EL2T:
602  case MODE_EL2H:
603  flat_idx = MISCREG_SPSR_EL2;
604  break;
605  case MODE_EL3T:
606  case MODE_EL3H:
607  flat_idx = MISCREG_SPSR_EL3;
608  break;
609  case MODE_USER:
610  warn("User mode does not have SPSR\n");
611  flat_idx = MISCREG_SPSR;
612  break;
613  case MODE_FIQ:
614  flat_idx = MISCREG_SPSR_FIQ;
615  break;
616  case MODE_IRQ:
617  flat_idx = MISCREG_SPSR_IRQ;
618  break;
619  case MODE_SVC:
620  flat_idx = MISCREG_SPSR_SVC;
621  break;
622  case MODE_MON:
623  flat_idx = MISCREG_SPSR_MON;
624  break;
625  case MODE_ABORT:
626  flat_idx = MISCREG_SPSR_ABT;
627  break;
628  case MODE_HYP:
629  flat_idx = MISCREG_SPSR_HYP;
630  break;
631  case MODE_UNDEFINED:
632  flat_idx = MISCREG_SPSR_UND;
633  break;
634  default:
635  warn("Trying to access SPSR in an invalid mode: %d\n",
636  cpsr.mode);
637  flat_idx = MISCREG_SPSR;
638  break;
639  }
640  } else if (miscRegInfo[reg][MISCREG_MUTEX]) {
641  // Mutually exclusive CP15 register
642  switch (reg) {
643  case MISCREG_PRRR_MAIR0:
646  {
647  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
648  // If the muxed reg has been flattened, work out the
649  // offset and apply it to the unmuxed reg
650  int idxOffset = reg - MISCREG_PRRR_MAIR0;
651  if (ttbcr.eae)
652  flat_idx = flattenMiscIndex(MISCREG_MAIR0 +
653  idxOffset);
654  else
655  flat_idx = flattenMiscIndex(MISCREG_PRRR +
656  idxOffset);
657  }
658  break;
659  case MISCREG_NMRR_MAIR1:
662  {
663  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
664  // If the muxed reg has been flattened, work out the
665  // offset and apply it to the unmuxed reg
666  int idxOffset = reg - MISCREG_NMRR_MAIR1;
667  if (ttbcr.eae)
668  flat_idx = flattenMiscIndex(MISCREG_MAIR1 +
669  idxOffset);
670  else
671  flat_idx = flattenMiscIndex(MISCREG_NMRR +
672  idxOffset);
673  }
674  break;
676  {
677  PMSELR pmselr = miscRegs[MISCREG_PMSELR];
678  if (pmselr.sel == 31)
680  else
682  }
683  break;
684  default:
685  panic("Unrecognized misc. register.\n");
686  break;
687  }
688  } else {
690  bool secureReg = haveSecurity && !highestELIs64 &&
693  flat_idx += secureReg ? 2 : 1;
694  } else {
695  flat_idx = snsBankedIndex64((MiscRegIndex)reg,
698  }
699  }
700  return flat_idx;
701  }
702 
707  int
708  redirectRegVHE(ThreadContext * tc, int misc_reg)
709  {
710  const HCR hcr = readMiscRegNoEffect(MISCREG_HCR_EL2);
711  if (hcr.e2h == 0x0 || currEL(tc) != EL2)
712  return misc_reg;
714  bool sec_el2 = scr.eel2 && haveSecEL2;
715  switch(misc_reg) {
716  case MISCREG_SPSR_EL1:
717  return MISCREG_SPSR_EL2;
718  case MISCREG_ELR_EL1:
719  return MISCREG_ELR_EL2;
720  case MISCREG_SCTLR_EL1:
721  return MISCREG_SCTLR_EL2;
722  case MISCREG_CPACR_EL1:
723  return MISCREG_CPTR_EL2;
724  // case :
725  // return MISCREG_TRFCR_EL2;
726  case MISCREG_TTBR0_EL1:
727  return MISCREG_TTBR0_EL2;
728  case MISCREG_TTBR1_EL1:
729  return MISCREG_TTBR1_EL2;
730  case MISCREG_TCR_EL1:
731  return MISCREG_TCR_EL2;
732  case MISCREG_AFSR0_EL1:
733  return MISCREG_AFSR0_EL2;
734  case MISCREG_AFSR1_EL1:
735  return MISCREG_AFSR1_EL2;
736  case MISCREG_ESR_EL1:
737  return MISCREG_ESR_EL2;
738  case MISCREG_FAR_EL1:
739  return MISCREG_FAR_EL2;
740  case MISCREG_MAIR_EL1:
741  return MISCREG_MAIR_EL2;
742  case MISCREG_AMAIR_EL1:
743  return MISCREG_AMAIR_EL2;
744  case MISCREG_VBAR_EL1:
745  return MISCREG_VBAR_EL2;
747  return MISCREG_CONTEXTIDR_EL2;
748  case MISCREG_CNTKCTL_EL1:
749  return MISCREG_CNTHCTL_EL2;
751  return sec_el2? MISCREG_CNTHPS_TVAL_EL2:
754  return sec_el2? MISCREG_CNTHPS_CTL_EL2:
757  return sec_el2? MISCREG_CNTHPS_CVAL_EL2:
760  return sec_el2? MISCREG_CNTHVS_TVAL_EL2:
763  return sec_el2? MISCREG_CNTHVS_CTL_EL2:
766  return sec_el2? MISCREG_CNTHVS_CVAL_EL2:
768  default:
769  return misc_reg;
770  }
771  /*should not be accessible */
772  return misc_reg;
773  }
774 
775  int
777  {
778  int reg_as_int = static_cast<int>(reg);
780  reg_as_int += (haveSecurity && !ns) ? 2 : 1;
781  }
782  return reg_as_int;
783  }
784 
785  std::pair<int,int> getMiscIndices(int misc_reg) const
786  {
787  // Note: indexes of AArch64 registers are left unchanged
788  int flat_idx = flattenMiscIndex(misc_reg);
789 
790  if (lookUpMiscReg[flat_idx].lower == 0) {
791  return std::make_pair(flat_idx, 0);
792  }
793 
794  // do additional S/NS flattenings if mapped to NS while in S
795  bool S = haveSecurity && !highestELIs64 &&
798  int lower = lookUpMiscReg[flat_idx].lower;
799  int upper = lookUpMiscReg[flat_idx].upper;
800  // upper == 0, which is CPSR, is not MISCREG_BANKED_CHILD (no-op)
801  lower += S && miscRegInfo[lower][MISCREG_BANKED_CHILD];
802  upper += S && miscRegInfo[upper][MISCREG_BANKED_CHILD];
803  return std::make_pair(lower, upper);
804  }
805 
806  unsigned getCurSveVecLenInBits() const;
807 
808  unsigned getCurSveVecLenInBitsAtReset() const { return sveVL * 128; }
809 
810  static void zeroSveVecRegUpperPart(VecRegContainer &vc,
811  unsigned eCount);
812 
813  void
814  serialize(CheckpointOut &cp) const override
815  {
816  DPRINTF(Checkpoint, "Serializing Arm Misc Registers\n");
818  }
819 
820  void
822  {
823  DPRINTF(Checkpoint, "Unserializing Arm Misc Registers\n");
825  CPSR tmp_cpsr = miscRegs[MISCREG_CPSR];
826  updateRegMap(tmp_cpsr);
827  }
828 
829  void startup() override;
830 
831  void setupThreadContext();
832 
833  void takeOverFrom(ThreadContext *new_tc,
834  ThreadContext *old_tc) override;
835 
836  Enums::DecoderFlavor decoderFlavor() const { return _decoderFlavor; }
837 
839  bool haveGICv3CpuIfc() const
840  {
841  // gicv3CpuInterface is initialized at startup time, hence
842  // trying to read its value before the startup stage will lead
843  // to an error
844  assert(afterStartup);
845  return gicv3CpuInterface != nullptr;
846  }
847 
848  Enums::VecRegRenameMode
850  {
851  return _vecRegRenameMode;
852  }
853 
854  typedef ArmISAParams Params;
855 
856  const Params *params() const;
857 
858  ISA(Params *p);
859  };
860 }
861 
862 template<>
863 struct RenameMode<ArmISA::ISA>
864 {
865  static Enums::VecRegRenameMode
866  init(const BaseISA* isa)
867  {
868  auto arm_isa = dynamic_cast<const ArmISA::ISA *>(isa);
869  assert(arm_isa);
870  return arm_isa->vecRegRenameMode();
871  }
872 
873  static Enums::VecRegRenameMode
875  {
876  if (pc.aarch64()) {
877  return Enums::Full;
878  } else {
879  return Enums::Elem;
880  }
881  }
882 
883  static bool
884  equalsInit(const BaseISA* isa1, const BaseISA* isa2)
885  {
886  return init(isa1) == init(isa2);
887  }
888 };
889 
890 #endif
ArmISA::ISA::MiscRegLUTEntryInitializer::userSecureWrite
chain userSecureWrite(bool v=true) const
Definition: isa.hh:208
ArmISA::ISA::setupThreadContext
void setupThreadContext()
Definition: isa.cc:456
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecure
chain monNonSecure(bool v=true) const
Definition: isa.hh:328
isa_device.hh
ArmISA::SelfDebug
Definition: self_debug.hh:273
ArmISA::ISA::flattenCCIndex
int flattenCCIndex(int reg) const
Definition: isa.hh:578
ArmISA::ISA::MiscRegLUTEntryInitializer::reads
chain reads(bool v) const
Definition: isa.hh:370
ArmISA::IntReg64Map
const IntRegMap IntReg64Map
Definition: intregs.hh:304
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecureRead
chain privSecureRead(bool v=true) const
Definition: isa.hh:232
ArmISA::MISCREG_BANKED64
@ MISCREG_BANKED64
Definition: miscregs.hh:1103
ArmISA::ns
Bitfield< 0 > ns
Definition: miscregs_types.hh:328
ArmISA::ISA::getMiscIndices
std::pair< int, int > getMiscIndices(int misc_reg) const
Definition: isa.hh:785
ArmISA::MODE_HYP
@ MODE_HYP
Definition: types.hh:642
ArmISA::MISCREG_CNTHPS_TVAL_EL2
@ MISCREG_CNTHPS_TVAL_EL2
Definition: miscregs.hh:771
ArmISA::ISA::initializeMiscRegMetadata
void initializeMiscRegMetadata()
Definition: miscregs.cc:3384
warn
#define warn(...)
Definition: logging.hh:239
ArmISA::ISA::MiscRegLUTEntryInitializer::res1
chain res1(uint64_t mask) const
Definition: isa.hh:153
ArmISA::MISCREG_IMPLEMENTED
@ MISCREG_IMPLEMENTED
Definition: miscregs.hh:1092
ArmISA::MISCREG_CNTHV_TVAL_EL2
@ MISCREG_CNTHV_TVAL_EL2
Definition: miscregs.hh:775
ArmISA::MISCREG_CNTHP_CTL_EL2
@ MISCREG_CNTHP_CTL_EL2
Definition: miscregs.hh:766
ArmISA::EL2
@ EL2
Definition: types.hh:624
ArmISA::ISA::MiscRegLUTEntry::wi
uint64_t wi() const
Definition: isa.hh:133
ArmISA::ISA::clear
void clear()
Definition: isa.cc:130
ArmISA::ISA::MiscRegLUTEntryInitializer::banked64
chain banked64(bool v=true) const
Definition: isa.hh:188
ArmISA::MODE_UNDEFINED
@ MODE_UNDEFINED
Definition: types.hh:643
ArmISA::MISCREG_MON_E2H_WR
@ MISCREG_MON_E2H_WR
Definition: miscregs.hh:1135
ArmISA::ISA::MiscRegLUTEntry::res1
uint64_t res1() const
Definition: isa.hh:129
ArmISA::ISA::decoderFlavor
Enums::DecoderFlavor decoderFlavor() const
Definition: isa.hh:836
ArmISA::MODE_EL0T
@ MODE_EL0T
Definition: types.hh:629
ArmISA::ISA::flattenMiscIndex
int flattenMiscIndex(int reg) const
Definition: isa.hh:585
ArmISA::MISCREG_PRRR_MAIR0_NS
@ MISCREG_PRRR_MAIR0_NS
Definition: miscregs.hh:81
ArmISA::MISCREG_SPSR_HYP
@ MISCREG_SPSR_HYP
Definition: miscregs.hh:64
ArmISA::ISA::MiscRegLUTEntryInitializer::hypWrite
chain hypWrite(bool v=true) const
Definition: isa.hh:273
ArmISA::ISA::MiscRegLUTEntryInitializer::user
chain user(bool v=true) const
Definition: isa.hh:212
VecElemClass
@ VecElemClass
Vector Register Native Elem lane.
Definition: reg_class.hh:58
ArmISA::MISCREG_CONTEXTIDR_EL1
@ MISCREG_CONTEXTIDR_EL1
Definition: miscregs.hh:737
ArmISA::ISA::vecRegRenameMode
Enums::VecRegRenameMode vecRegRenameMode() const
Definition: isa.hh:849
ArmISA::MISCREG_SPSR_UND
@ MISCREG_SPSR_UND
Definition: miscregs.hh:65
ArmISA::BaseISADevice
Base class for devices that use the MiscReg interfaces.
Definition: isa_device.hh:58
ArmISA::TLB::ArmTranslationType
ArmTranslationType
Definition: tlb.hh:118
ArmISA::ISA::getSelfDebug
static SelfDebug * getSelfDebug(ThreadContext *tc)
Definition: isa.hh:482
ArmISA::ISA::miscRegs
RegVal miscRegs[NumMiscRegs]
Definition: isa.hh:412
ArmISA::MISCREG_PMXEVTYPER
@ MISCREG_PMXEVTYPER
Definition: miscregs.hh:354
ArmISA::i
Bitfield< 7 > i
Definition: miscregs_types.hh:63
ArmISA::MISCREG_HYP_E2H_WR
@ MISCREG_HYP_E2H_WR
Definition: miscregs.hh:1126
ArmISA::ISA::haveLPAE
bool haveLPAE
Definition: isa.hh:90
ArmISA::EL0
@ EL0
Definition: types.hh:622
ArmISA::ISA::MiscRegLUTEntryInitializer::info
std::bitset< NUM_MISCREG_INFOS > & info
Definition: isa.hh:141
ArmISA::MODE_EL3H
@ MODE_EL3H
Definition: types.hh:635
Flags< FlagsType >
ArmISA::ISA::gicv3CpuInterface
std::unique_ptr< BaseISADevice > gicv3CpuInterface
Definition: isa.hh:85
ArmISA::MISCREG_CNTP_TVAL_EL0
@ MISCREG_CNTP_TVAL_EL0
Definition: miscregs.hh:750
ArmISA::width
Bitfield< 4 > width
Definition: miscregs_types.hh:68
ArmISA::MISCREG_TTBR0_EL1
@ MISCREG_TTBR0_EL1
Definition: miscregs.hh:589
ArmISA::OperatingMode
OperatingMode
Definition: types.hh:628
ArmISA::ISA::MiscRegLUTEntry::MiscRegLUTEntry
MiscRegLUTEntry()
Definition: isa.hh:124
ArmISA::currEL
static ExceptionLevel currEL(const ThreadContext *tc)
Definition: utility.hh:143
ArmISA::ISA::MiscRegLUTEntry::_reset
uint64_t _reset
Definition: isa.hh:118
ArmISA::ISA::MiscRegLUTEntryInitializer::hypE2H
chain hypE2H(bool v=true) const
Definition: isa.hh:263
ArmISA::MISCREG_CNTV_CVAL_EL0
@ MISCREG_CNTV_CVAL_EL0
Definition: miscregs.hh:752
ArmISA::IntRegUndMap
const IntRegMap IntRegUndMap
Definition: intregs.hh:405
BaseTLB::Mode
Mode
Definition: tlb.hh:57
ArmISA::ISA::MiscRegLUTEntryInitializer::allPrivileges
chain allPrivileges(bool v=true) const
Definition: isa.hh:333
ArmISA::MISCREG_MON_E2H_RD
@ MISCREG_MON_E2H_RD
Definition: miscregs.hh:1134
ArmISA::MISCREG_HYP_RD
@ MISCREG_HYP_RD
Definition: miscregs.hh:1122
ArmISA::ISA::setMiscReg
void setMiscReg(int misc_reg, RegVal val)
Definition: isa.cc:832
ArmISA::IntRegIndex
IntRegIndex
Definition: intregs.hh:51
ArmISA::MODE_SYSTEM
@ MODE_SYSTEM
Definition: types.hh:644
ArmISA::ISA::MiscRegLUTEntry::lower
uint32_t lower
Definition: isa.hh:116
ArmISA::MISCREG_CNTV_TVAL_EL0
@ MISCREG_CNTV_TVAL_EL0
Definition: miscregs.hh:753
ArmISA::inSecureState
static bool inSecureState(SCR scr, CPSR cpsr)
Definition: utility.hh:246
ArmISA::ISA::MiscRegLUTEntryInitializer::mutex
chain mutex(bool v=true) const
Definition: isa.hh:180
ArmISA::ISA::MiscRegLUTEntryInitializer::monSecureRead
chain monSecureRead(bool v=true) const
Definition: isa.hh:296
ArmISA::MISCREG_MON_NS0_WR
@ MISCREG_MON_NS0_WR
Definition: miscregs.hh:1129
ArmISA::MISCREG_USR_NS_WR
@ MISCREG_USR_NS_WR
Definition: miscregs.hh:1113
ArmISA::MISCREG_NMRR_MAIR1
@ MISCREG_NMRR_MAIR1
Definition: miscregs.hh:83
ArmISA::ISA::MiscRegLUTEntryInitializer::mapsTo
chain mapsTo(uint32_t l, uint32_t u=0) const
Definition: isa.hh:144
ArmISA::MODE_EL1T
@ MODE_EL1T
Definition: types.hh:630
tlb.hh
std::vector
STL vector class.
Definition: stl.hh:37
ArmISA::MISCREG_CNTHPS_CTL_EL2
@ MISCREG_CNTHPS_CTL_EL2
Definition: miscregs.hh:769
ArmISA::ISA::redirectRegVHE
int redirectRegVHE(ThreadContext *tc, int misc_reg)
Returns the enconcing equivalent when VHE is implemented and HCR_EL2.E2H is enabled and executing at ...
Definition: isa.hh:708
ArmISA::EL3
@ EL3
Definition: types.hh:625
ArmISA::MISCREG_ELR_EL2
@ MISCREG_ELR_EL2
Definition: miscregs.hh:618
ArmISA::MISCREG_PRI_S_RD
@ MISCREG_PRI_S_RD
Definition: miscregs.hh:1119
ArmISA::MISCREG_ESR_EL1
@ MISCREG_ESR_EL1
Definition: miscregs.hh:631
ArmISA::MISCREG_TCR_EL2
@ MISCREG_TCR_EL2
Definition: miscregs.hh:596
ArmISA::ISA
Definition: isa.hh:65
ArmISA::ISA::MiscRegLUTEntry
MiscReg metadata.
Definition: isa.hh:115
ArmISA::ISA::MiscRegLUTEntry::_rao
uint64_t _rao
Definition: isa.hh:122
ArmISA::ISA::MiscRegLUTEntry::raz
uint64_t raz() const
Definition: isa.hh:130
ArmISA::MISCREG_CNTHPS_CVAL_EL2
@ MISCREG_CNTHPS_CVAL_EL2
Definition: miscregs.hh:770
ArmISA::MISCREG_ELR_EL1
@ MISCREG_ELR_EL1
Definition: miscregs.hh:606
ArmISA::ISA::MiscRegLUTEntryInitializer::monE2HRead
chain monE2HRead(bool v=true) const
Definition: isa.hh:283
ArmISA::ISA::MiscRegLUTEntryInitializer::monE2H
chain monE2H(bool v=true) const
Definition: isa.hh:291
system.hh
ArmISA::MISCREG_CNTV_CTL_EL0
@ MISCREG_CNTV_CTL_EL0
Definition: miscregs.hh:751
RenameMode
Helper structure to get the vector register mode for a given ISA.
Definition: traits.hh:53
ArmISA::ISA::sveVL
unsigned sveVL
SVE vector length in quadwords.
Definition: isa.hh:102
ArmISA::ISA::MiscRegLUTEntryInitializer::res0
chain res0(uint64_t mask) const
Definition: isa.hh:149
ArmISA
Definition: ccregs.hh:41
types.hh
ArmISA::ISA::haveSecEL2
bool haveSecEL2
Definition: isa.hh:98
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:87
ArmISA::ISA::Params
ArmISAParams Params
Definition: isa.hh:854
ArmISA::ISA::readMiscRegNoEffect
RegVal readMiscRegNoEffect(int misc_reg) const
Definition: isa.cc:484
ArmISA::ISA::zeroSveVecRegUpperPart
static void zeroSveVecRegUpperPart(VecRegContainer &vc, unsigned eCount)
Definition: isa.cc:2334
ArmISA::ISA::takeOverFrom
void takeOverFrom(ThreadContext *new_tc, ThreadContext *old_tc) override
Definition: isa.cc:477
ArmISA::MISCREG_AFSR1_EL2
@ MISCREG_AFSR1_EL2
Definition: miscregs.hh:635
RegId::elemIndex
const RegIndex & elemIndex() const
Elem accessor.
Definition: reg_class.hh:198
ArmISA::MISCREG_CNTKCTL_EL1
@ MISCREG_CNTKCTL_EL1
Definition: miscregs.hh:760
ArmISA::ISA::assert32
void assert32()
Definition: isa.hh:457
ArmISA::ISA::system
ArmSystem * system
Definition: isa.hh:69
ArmISA::ISA::addressTranslation
void addressTranslation(TLB::ArmTranslationType tran_type, BaseTLB::Mode mode, Request::Flags flags, RegVal val)
Definition: isa.cc:2394
RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:75
ArmISA::ISA::MiscRegLUTEntry::_res1
uint64_t _res1
Definition: isa.hh:120
ArmISA::ISA::timer
std::unique_ptr< BaseISADevice > timer
Definition: isa.hh:82
ArmISA::ISA::MiscRegLUTEntry::upper
uint32_t upper
Definition: isa.hh:117
ArmISA::ISA::MiscRegLUTEntry::res0
uint64_t res0() const
Definition: isa.hh:128
ArmISA::ISA::_vecRegRenameMode
const Enums::VecRegRenameMode _vecRegRenameMode
Definition: isa.hh:73
ThreadContext::getIsaPtr
virtual BaseISA * getIsaPtr()=0
ArmISA::MISCREG_CNTP_CVAL_EL0
@ MISCREG_CNTP_CVAL_EL0
Definition: miscregs.hh:749
ArmISA::ISA::haveGICv3CpuIfc
bool haveGICv3CpuIfc() const
Returns true if the ISA has a GICv3 cpu interface.
Definition: isa.hh:839
ArmISA::MISCREG_VBAR_EL2
@ MISCREG_VBAR_EL2
Definition: miscregs.hh:732
ArmISA::ISA::impdefAsNop
bool impdefAsNop
If true, accesses to IMPLEMENTATION DEFINED registers are treated as NOP hence not causing UNDEFINED ...
Definition: isa.hh:108
ArmISA::MISCREG_CNTHVS_TVAL_EL2
@ MISCREG_CNTHVS_TVAL_EL2
Definition: miscregs.hh:778
ArmISA::MISCREG_AFSR0_EL2
@ MISCREG_AFSR0_EL2
Definition: miscregs.hh:634
ArmISA::ISA::haveLargeAsid64
bool haveLargeAsid64
Definition: isa.hh:93
ArmISA::ISA::haveLSE
bool haveLSE
Definition: isa.hh:96
ArmISA::INTREG_SPX
@ INTREG_SPX
Definition: intregs.hh:160
ArmISA::MISCREG_PRRR_MAIR0
@ MISCREG_PRRR_MAIR0
Definition: miscregs.hh:80
ArmISA::MISCREG_AMAIR_EL1
@ MISCREG_AMAIR_EL1
Definition: miscregs.hh:720
ArmISA::MISCREG_PMSELR
@ MISCREG_PMSELR
Definition: miscregs.hh:350
ArmISA::MISCREG_NMRR_MAIR1_S
@ MISCREG_NMRR_MAIR1_S
Definition: miscregs.hh:85
ArmISA::ISA::assert64
void assert64()
Definition: isa.hh:458
ArmISA::ISA::MiscRegLUTEntryInitializer::userSecureRead
chain userSecureRead(bool v=true) const
Definition: isa.hh:204
ArmISA::ISA::haveTME
bool haveTME
Definition: isa.hh:99
ArmISA::ISA::MiscRegLUTEntryInitializer::exceptUserMode
chain exceptUserMode() const
Definition: isa.hh:390
cp
Definition: cprintf.cc:40
ArmISA::ISA::MiscRegLUTEntryInitializer::privRead
chain privRead(bool v=true) const
Definition: isa.hh:250
ArmISA::MISCREG_USR_S_WR
@ MISCREG_USR_S_WR
Definition: miscregs.hh:1115
FloatRegClass
@ FloatRegClass
Floating-point register.
Definition: reg_class.hh:54
ArmISA::ISA::serialize
void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition: isa.hh:814
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
ArmISA::IntRegHypMap
const IntRegMap IntRegHypMap
Definition: intregs.hh:333
ArmISA::ISA::MiscRegLUTEntryInitializer::privNonSecureRead
chain privNonSecureRead(bool v=true) const
Definition: isa.hh:219
ArmISA::MISCREG_MON_NS0_RD
@ MISCREG_MON_NS0_RD
Definition: miscregs.hh:1128
ArmISA::MISCREG_ESR_EL2
@ MISCREG_ESR_EL2
Definition: miscregs.hh:636
ArmISA::ISA::haveSVE
bool haveSVE
Definition: isa.hh:95
ArmISA::MODE_EL1H
@ MODE_EL1H
Definition: types.hh:631
ArmISA::ISA::dummyDevice
DummyISADevice dummyDevice
Dummy device for to handle non-existing ISA devices.
Definition: isa.hh:76
ArmISA::IntRegUsrMap
const IntRegMap IntRegUsrMap
Definition: intregs.hh:315
ArmISA::ISA::MiscRegLUTEntryInitializer::hypE2HRead
chain hypE2HRead(bool v=true) const
Definition: isa.hh:255
ArmISA::MISCREG_HYP_E2H_RD
@ MISCREG_HYP_E2H_RD
Definition: miscregs.hh:1125
ArmISA::MISCREG_AMAIR_EL2
@ MISCREG_AMAIR_EL2
Definition: miscregs.hh:723
sim_object.hh
ArmISA::ISA::MiscRegLUTEntry::reset
uint64_t reset() const
Definition: isa.hh:127
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:234
ArmISA::ISA::clear32
void clear32(const ArmISAParams *p, const SCTLR &sctlr_rst)
Definition: isa.cc:223
ArmISA::MISCREG_CONTEXTIDR_EL2
@ MISCREG_CONTEXTIDR_EL2
Definition: miscregs.hh:809
ArmISA::MISCREG_AFSR0_EL1
@ MISCREG_AFSR0_EL1
Definition: miscregs.hh:627
ArmISA::ISA::MiscRegLUTEntryInitializer::unverifiable
chain unverifiable(bool v=true) const
Definition: isa.hh:172
ArmISA::ISA::haveCrypto
bool haveCrypto
Definition: isa.hh:92
BaseISA::tc
ThreadContext * tc
Definition: isa.hh:52
ArmISA::ISA::MiscRegLUTEntryInitializer
Definition: isa.hh:139
ArmISA::ExceptionLevel
ExceptionLevel
Definition: types.hh:621
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecureWrite
chain monNonSecureWrite(bool v=true) const
Definition: isa.hh:311
ArmISA::MISCREG_PRRR_MAIR0_S
@ MISCREG_PRRR_MAIR0_S
Definition: miscregs.hh:82
MipsISA::pc
Bitfield< 4 > pc
Definition: pra_constants.hh:240
ArmISA::ISA::ISA
ISA(Params *p)
Definition: isa.cc:63
ArmISA::DummyISADevice
Dummy device that prints a warning when it is accessed.
Definition: isa_device.hh:94
ArmISA::ISA::snsBankedIndex64
int snsBankedIndex64(MiscRegIndex reg, bool ns) const
Definition: isa.hh:776
ArmISA::MISCREG_VBAR_EL1
@ MISCREG_VBAR_EL1
Definition: miscregs.hh:728
ArmISA::ISA::MiscRegLUTEntryInitializer::banked
chain banked(bool v=true) const
Definition: isa.hh:184
traits.hh
ArmISA::flattenIntRegModeIndex
static int flattenIntRegModeIndex(int reg)
Definition: intregs.hh:469
ArmISA::MISCREG_SPSR_IRQ
@ MISCREG_SPSR_IRQ
Definition: miscregs.hh:60
ArmISA::MISCREG_TCR_EL1
@ MISCREG_TCR_EL1
Definition: miscregs.hh:593
ArmISA::mode
Bitfield< 4, 0 > mode
Definition: miscregs_types.hh:70
RenameMode::init
static Enums::VecRegRenameMode init(const BaseISA *)
Definition: traits.hh:55
ArmISA::el
Bitfield< 3, 2 > el
Definition: miscregs_types.hh:69
ArmISA::ISA::getGICv3CPUInterface
BaseISADevice & getGICv3CPUInterface()
Definition: isa.cc:2283
ArmISA::MISCREG_UNVERIFIABLE
@ MISCREG_UNVERIFIABLE
Definition: miscregs.hh:1093
RenameMode< ArmISA::ISA >::init
static Enums::VecRegRenameMode init(const BaseISA *isa)
Definition: isa.hh:866
ArmISA::MISCREG_SPSR_ABT
@ MISCREG_SPSR_ABT
Definition: miscregs.hh:63
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecureWrite
chain privSecureWrite(bool v=true) const
Definition: isa.hh:236
ArmISA::MISCREG_TTBCR
@ MISCREG_TTBCR
Definition: miscregs.hh:254
ArmISA::MISCREG_HYP_WR
@ MISCREG_HYP_WR
Definition: miscregs.hh:1123
ArmISA::ISA::intRegMap
const IntRegIndex * intRegMap
Definition: isa.hh:413
ArmISA::opModeToEL
static ExceptionLevel opModeToEL(OperatingMode mode)
Definition: types.hh:736
ArmISA::MISCREG_CNTHVS_CVAL_EL2
@ MISCREG_CNTHVS_CVAL_EL2
Definition: miscregs.hh:777
ArmISA::MISCREG_FAR_EL1
@ MISCREG_FAR_EL1
Definition: miscregs.hh:641
ArmISA::ISA::MiscRegLUTEntryInitializer::unimplemented
chain unimplemented() const
Definition: isa.hh:169
ArmISA::ISA::clear64
void clear64(const ArmISAParams *p)
Definition: isa.cc:275
ArmISA::MODE_SVC
@ MODE_SVC
Definition: types.hh:639
ArmISA::ISA::MiscRegLUTEntry::_raz
uint64_t _raz
Definition: isa.hh:121
ArmISA::ISA::flattenRegId
RegId flattenRegId(const RegId &regId) const
Definition: isa.hh:494
ArmISA::ISA::selfDebug
SelfDebug * selfDebug
Definition: isa.hh:112
ArmISA::MISCREG_TTBR0_EL2
@ MISCREG_TTBR0_EL2
Definition: miscregs.hh:595
ArmISA::INTREG_SP0
@ INTREG_SP0
Definition: intregs.hh:118
ArmISA::ISA::MiscRegLUTEntry::rao
uint64_t rao() const
Definition: isa.hh:131
SERIALIZE_ARRAY
#define SERIALIZE_ARRAY(member, size)
Definition: serialize.hh:832
ArmISA::ISA::MiscRegLUTEntryInitializer::hypRead
chain hypRead(bool v=true) const
Definition: isa.hh:268
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecureRead
chain monNonSecureRead(bool v=true) const
Definition: isa.hh:306
std::pair
STL pair class.
Definition: stl.hh:58
VecPredRegClass
@ VecPredRegClass
Definition: reg_class.hh:59
ArmISA::MODE_FIQ
@ MODE_FIQ
Definition: types.hh:637
ArmISA::IntRegMonMap
const IntRegMap IntRegMonMap
Definition: intregs.hh:369
ArmISA::ISA::MiscRegLUTEntryInitializer::highest
chain highest(ArmSystem *const sys) const
Definition: isa.cc:2461
ArmISA::MISCREG_HCR_EL2
@ MISCREG_HCR_EL2
Definition: miscregs.hh:578
ArmISA::MODE_EL2T
@ MODE_EL2T
Definition: types.hh:632
ArmISA::ISA::setMiscRegNoEffect
void setMiscRegNoEffect(int misc_reg, RegVal val)
Definition: isa.cc:810
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
ArmISA::MISCREG_PRI_S_WR
@ MISCREG_PRI_S_WR
Definition: miscregs.hh:1120
ArmISA::MISCREG_TTBR1_EL1
@ MISCREG_TTBR1_EL1
Definition: miscregs.hh:591
ArmISA::MISCREG_SPSR
@ MISCREG_SPSR
Definition: miscregs.hh:58
ArmISA::EL1
@ EL1
Definition: types.hh:623
ArmISA::IntRegAbtMap
const IntRegMap IntRegAbtMap
Definition: intregs.hh:387
ArmISA::MISCREG_WARN_NOT_FAIL
@ MISCREG_WARN_NOT_FAIL
Definition: miscregs.hh:1095
ArmISA::ISA::flattenFloatIndex
int flattenFloatIndex(int reg) const
Definition: isa.hh:550
ArmISA::ISA::MiscRegLUTEntryInitializer::hypE2HWrite
chain hypE2HWrite(bool v=true) const
Definition: isa.hh:259
IntRegClass
@ IntRegClass
Integer register.
Definition: reg_class.hh:53
ArmISA::ISA::MiscRegLUTEntryInitializer::rao
chain rao(uint64_t mask) const
Definition: isa.hh:161
ArmISA::MISCREG_CNTHP_TVAL_EL2
@ MISCREG_CNTHP_TVAL_EL2
Definition: miscregs.hh:768
ArmISA::ISA::flattenIntIndex
int flattenIntIndex(int reg) const
Definition: isa.hh:518
ArmISA::ISA::MiscRegLUTEntryInitializer::monSecure
chain monSecure(bool v=true) const
Definition: isa.hh:323
ArmISA::ISA::afterStartup
bool afterStartup
Definition: isa.hh:110
ArmISA::ISA::MiscRegLUTEntryInitializer::hyp
chain hyp(bool v=true) const
Definition: isa.hh:278
ArmISA::ISA::updateRegMap
void updateRegMap(CPSR cpsr)
Definition: isa.hh:416
CCRegClass
@ CCRegClass
Condition-code register.
Definition: reg_class.hh:60
ArmISA::MISCREG_NMRR
@ MISCREG_NMRR
Definition: miscregs.hh:369
ArmISA::ISA::MiscRegLUTEntryInitializer::userNonSecureRead
chain userNonSecureRead(bool v=true) const
Definition: isa.hh:196
ArmISA::e
Bitfield< 9 > e
Definition: miscregs_types.hh:61
ArmISA::ISA::getGenericTimer
BaseISADevice & getGenericTimer()
Definition: isa.cc:2262
ArmISA::ISA::flattenVecIndex
int flattenVecIndex(int reg) const
Definition: isa.hh:557
ArmISA::ISA::getSelfDebug
SelfDebug * getSelfDebug() const
Definition: isa.hh:476
ArmISA::MISCREG_CNTHCTL_EL2
@ MISCREG_CNTHCTL_EL2
Definition: miscregs.hh:765
ArmISA::MISCREG_MON_NS1_WR
@ MISCREG_MON_NS1_WR
Definition: miscregs.hh:1132
ArmISA::ISA::haveVirtualization
bool haveVirtualization
Definition: isa.hh:91
ArmISA::ISA::MiscRegLUTEntryInitializer::writes
chain writes(bool v) const
Definition: isa.hh:380
ArmISA::MISCREG_PRI_NS_RD
@ MISCREG_PRI_NS_RD
Definition: miscregs.hh:1117
ArmISA::MODE_EL3T
@ MODE_EL3T
Definition: types.hh:634
ArmISA::ISA::MiscRegLUTEntryInitializer::chain
const typedef MiscRegLUTEntryInitializer & chain
Definition: isa.hh:142
ArmISA::MISCREG_PRRR
@ MISCREG_PRRR
Definition: miscregs.hh:363
ArmSystem
Definition: system.hh:59
miscregs.hh
ArmISA::u
Bitfield< 22 > u
Definition: miscregs_types.hh:348
ArmISA::MISCREG_SCR_EL3
@ MISCREG_SCR_EL3
Definition: miscregs.hh:585
ArmISA::MISCREG_CNTHVS_CTL_EL2
@ MISCREG_CNTHVS_CTL_EL2
Definition: miscregs.hh:776
isa.hh
ArmISA::ISA::haveSecurity
bool haveSecurity
Definition: isa.hh:89
ArmISA::MISCREG_CPTR_EL2
@ MISCREG_CPTR_EL2
Definition: miscregs.hh:580
ArmISA::MISCREG_BANKED_CHILD
@ MISCREG_BANKED_CHILD
Definition: miscregs.hh:1106
ArmISA::MISCREG_SPSR_MON
@ MISCREG_SPSR_MON
Definition: miscregs.hh:62
ArmISA::MODE_IRQ
@ MODE_IRQ
Definition: types.hh:638
ArmISA::MODE_ABORT
@ MODE_ABORT
Definition: types.hh:641
MiscRegClass
@ MiscRegClass
Control (misc) register.
Definition: reg_class.hh:61
VecRegClass
@ VecRegClass
Vector Register.
Definition: reg_class.hh:56
ArmISA::MISCREG_PMCCFILTR
@ MISCREG_PMCCFILTR
Definition: miscregs.hh:355
ArmISA::ISA::MiscRegLUTEntryInitializer::raz
chain raz(uint64_t mask) const
Definition: isa.hh:157
ArmISA::MISCREG_MAIR1
@ MISCREG_MAIR1
Definition: miscregs.hh:372
ArmISA::NUM_ARCH_INTREGS
@ NUM_ARCH_INTREGS
Definition: intregs.hh:124
ArmISA::INTREG_SP3
@ INTREG_SP3
Definition: intregs.hh:121
ArmISA::MISCREG_MUTEX
@ MISCREG_MUTEX
Definition: miscregs.hh:1098
ArmISA::MISCREG_CPSR
@ MISCREG_CPSR
Definition: miscregs.hh:57
ArmISA::MISCREG_CNTHV_CTL_EL2
@ MISCREG_CNTHV_CTL_EL2
Definition: miscregs.hh:773
ArmISA::MISCREG_USR_NS_RD
@ MISCREG_USR_NS_RD
Definition: miscregs.hh:1112
ArmISA::MISCREG_CNTHP_CVAL_EL2
@ MISCREG_CNTHP_CVAL_EL2
Definition: miscregs.hh:767
ArmISA::ISA::physAddrRange
uint8_t physAddrRange
Definition: isa.hh:94
ArmISA::IntRegFiqMap
const IntRegMap IntRegFiqMap
Definition: intregs.hh:441
ArmISA::MISCREG_AFSR1_EL1
@ MISCREG_AFSR1_EL1
Definition: miscregs.hh:629
ArmISA::ISA::MiscRegLUTEntryInitializer::monE2HWrite
chain monE2HWrite(bool v=true) const
Definition: isa.hh:287
ArmISA::ISA::pmu
BaseISADevice * pmu
Definition: isa.hh:79
UNSERIALIZE_ARRAY
#define UNSERIALIZE_ARRAY(member, size)
Definition: serialize.hh:840
MipsISA::PCState
GenericISA::DelaySlotPCState< MachInst > PCState
Definition: types.hh:41
registers.hh
ArmISA::MISCREG_USR_S_RD
@ MISCREG_USR_S_RD
Definition: miscregs.hh:1114
ArmISA::ISA::initID64
void initID64(const ArmISAParams *p)
Definition: isa.cc:360
ArmISA::NUM_INTREGS
@ NUM_INTREGS
Definition: intregs.hh:123
ArmISA::ISA::MiscRegLUTEntryInitializer::warnNotFail
chain warnNotFail(bool v=true) const
Definition: isa.hh:176
ArmISA::MISCREG_MAIR_EL2
@ MISCREG_MAIR_EL2
Definition: miscregs.hh:722
ArmISA::MISCREG_PRI_NS_WR
@ MISCREG_PRI_NS_WR
Definition: miscregs.hh:1118
ArmISA::ISA::MiscRegLUTEntryInitializer::privNonSecure
chain privNonSecure(bool v=true) const
Definition: isa.hh:227
ArmISA::ISA::MiscRegLUTEntryInitializer::implemented
chain implemented(bool v=true) const
Definition: isa.hh:165
ArmISA::MISCREG_NMRR_MAIR1_NS
@ MISCREG_NMRR_MAIR1_NS
Definition: miscregs.hh:84
ArmISA::MISCREG_PMXEVTYPER_PMCCFILTR
@ MISCREG_PMXEVTYPER_PMCCFILTR
Definition: miscregs.hh:86
ArmISA::MISCREG_SPSR_SVC
@ MISCREG_SPSR_SVC
Definition: miscregs.hh:61
ArmISA::MISCREG_MON_NS1_RD
@ MISCREG_MON_NS1_RD
Definition: miscregs.hh:1131
ArmISA::MiscRegIndex
MiscRegIndex
Definition: miscregs.hh:56
ArmISA::ISA::unserialize
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition: isa.hh:821
ArmISA::ISA::MiscRegLUTEntryInitializer::bankedChild
chain bankedChild(bool v=true) const
Definition: isa.hh:192
ArmISA::IntRegIrqMap
const IntRegMap IntRegIrqMap
Definition: intregs.hh:423
ArmISA::ISA::MiscRegLUTEntryInitializer::privNonSecureWrite
chain privNonSecureWrite(bool v=true) const
Definition: isa.hh:223
ArmISA::ISA::InitReg
const MiscRegLUTEntryInitializer InitReg(uint32_t reg)
Definition: isa.hh:405
CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:63
ArmISA::MISCREG_MAIR0
@ MISCREG_MAIR0
Definition: miscregs.hh:366
ArmISA::MODE_MON
@ MODE_MON
Definition: types.hh:640
ArmISA::MISCREG_MAIR_EL1
@ MISCREG_MAIR_EL1
Definition: miscregs.hh:718
ArmISA::ISA::startup
void startup() override
startup() is the final initialization call before simulation.
Definition: isa.cc:439
ArmISA::ISA::readMiscReg
RegVal readMiscReg(int misc_reg)
Definition: isa.cc:508
EventManager
Definition: eventq.hh:973
ArmISA::MISCREG_CNTHV_CVAL_EL2
@ MISCREG_CNTHV_CVAL_EL2
Definition: miscregs.hh:774
ArmISA::ISA::MiscRegLUTEntryInitializer::mon
chain mon(bool v=true) const
Definition: isa.hh:316
RegId::index
const RegIndex & index() const
Index accessors.
Definition: reg_class.hh:173
ArmISA::ISA::addressTranslation64
void addressTranslation64(TLB::ArmTranslationType tran_type, BaseTLB::Mode mode, Request::Flags flags, RegVal val)
Definition: isa.cc:2343
ArmISA::ISA::MiscRegLUTEntryInitializer::entry
struct MiscRegLUTEntry & entry
Definition: isa.hh:140
ArmISA::MISCREG_TTBR1_EL2
@ MISCREG_TTBR1_EL2
Definition: miscregs.hh:812
ArmISA::ISA::getCurSveVecLenInBits
unsigned getCurSveVecLenInBits() const
Definition: isa.cc:2290
MipsISA::p
Bitfield< 0 > p
Definition: pra_constants.hh:323
self_debug.hh
ArmISA::NUM_PHYS_MISCREGS
@ NUM_PHYS_MISCREGS
Definition: miscregs.hh:1057
ArmISA::MISCREG_CPACR_EL1
@ MISCREG_CPACR_EL1
Definition: miscregs.hh:574
ArmISA::ISA::MiscRegLUTEntryInitializer::monSecureWrite
chain monSecureWrite(bool v=true) const
Definition: isa.hh:301
ArmISA::MISCREG_CNTP_CTL_EL0
@ MISCREG_CNTP_CTL_EL0
Definition: miscregs.hh:748
ArmISA::ISA::initID32
void initID32(const ArmISAParams *p)
Definition: isa.cc:324
ArmISA::MODE_USER
@ MODE_USER
Definition: types.hh:636
ArmISA::ISA::MiscRegLUTEntryInitializer::priv
chain priv(bool v=true) const
Definition: isa.hh:245
ArmISA::MISCREG_FAR_EL2
@ MISCREG_FAR_EL2
Definition: miscregs.hh:643
ArmISA::INTREG_SP1
@ INTREG_SP1
Definition: intregs.hh:119
ArmISA::MISCREG_SPSR_EL3
@ MISCREG_SPSR_EL3
Definition: miscregs.hh:624
ArmISA::IntRegSvcMap
const IntRegMap IntRegSvcMap
Definition: intregs.hh:351
CheckpointIn
Definition: serialize.hh:67
ArmISA::ISA::havePAN
bool havePAN
Definition: isa.hh:97
MipsISA::l
Bitfield< 5 > l
Definition: pra_constants.hh:320
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecure
chain privSecure(bool v=true) const
Definition: isa.hh:240
ArmISA::NumMiscRegs
const int NumMiscRegs
Definition: registers.hh:85
RegId::classValue
const RegClass & classValue() const
Class accessor.
Definition: reg_class.hh:200
ArmISA::ISA::MiscRegLUTEntryInitializer::MiscRegLUTEntryInitializer
MiscRegLUTEntryInitializer(struct MiscRegLUTEntry &e, std::bitset< NUM_MISCREG_INFOS > &i)
Definition: isa.hh:395
ArmISA::MISCREG_SCR
@ MISCREG_SCR
Definition: miscregs.hh:237
ArmISA::ISA::MiscRegLUTEntryInitializer::secure
chain secure(bool v=true) const
Definition: isa.hh:361
RenameMode< ArmISA::ISA >::mode
static Enums::VecRegRenameMode mode(const ArmISA::PCState &pc)
Definition: isa.hh:874
ArmISA::MISCREG_BANKED
@ MISCREG_BANKED
Definition: miscregs.hh:1100
ArmISA::MODE_EL2H
@ MODE_EL2H
Definition: types.hh:633
BaseISA
Definition: isa.hh:47
ArmISA::MISCREG_SPSR_EL2
@ MISCREG_SPSR_EL2
Definition: miscregs.hh:617
ArmISA::miscRegInfo
bitset< NUM_MISCREG_INFOS > miscRegInfo[NUM_MISCREGS]
Definition: miscregs.cc:3381
ArmISA::ISA::params
const Params * params() const
Definition: isa.cc:124
ArmISA::MISCREG_SCTLR_EL2
@ MISCREG_SCTLR_EL2
Definition: miscregs.hh:576
ArmISA::ISA::MiscRegLUTEntry::_res0
uint64_t _res0
Definition: isa.hh:119
ArmISA::ISA::highestELIs64
bool highestELIs64
Definition: isa.hh:88
ArmISA::MISCREG_SPSR_FIQ
@ MISCREG_SPSR_FIQ
Definition: miscregs.hh:59
ArmISA::v
Bitfield< 28 > v
Definition: miscregs_types.hh:51
ArmISA::ISA::_decoderFlavor
const Enums::DecoderFlavor _decoderFlavor
Definition: isa.hh:72
ArmISA::ISA::flattenVecElemIndex
int flattenVecElemIndex(int reg) const
Definition: isa.hh:564
RegVal
uint64_t RegVal
Definition: types.hh:168
VecRegContainer
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
Definition: vec_reg.hh:156
ArmISA::mask
Bitfield< 28, 24 > mask
Definition: miscregs_types.hh:711
ArmISA::MISCREG_SCTLR_EL1
@ MISCREG_SCTLR_EL1
Definition: miscregs.hh:571
ArmISA::ISA::lookUpMiscReg
static std::vector< struct MiscRegLUTEntry > lookUpMiscReg
Metadata table accessible via the value of the register.
Definition: isa.hh:137
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:171
RenameMode< ArmISA::ISA >::equalsInit
static bool equalsInit(const BaseISA *isa1, const BaseISA *isa2)
Definition: isa.hh:884
ArmISA::ISA::flattenVecPredIndex
int flattenVecPredIndex(int reg) const
Definition: isa.hh:571
ArmISA::ISA::getCurSveVecLenInBitsAtReset
unsigned getCurSveVecLenInBitsAtReset() const
Definition: isa.hh:808
ArmISA::ISA::MiscRegLUTEntryInitializer::nonSecure
chain nonSecure(bool v=true) const
Definition: isa.hh:350
ArmISA::ISA::MiscRegLUTEntryInitializer::userNonSecureWrite
chain userNonSecureWrite(bool v=true) const
Definition: isa.hh:200
ArmISA::MISCREG_SPSR_EL1
@ MISCREG_SPSR_EL1
Definition: miscregs.hh:604
ArmISA::INTREG_SP2
@ INTREG_SP2
Definition: intregs.hh:120

Generated on Wed Sep 30 2020 14:01:59 for gem5 by doxygen 1.8.17