gem5  v20.1.0.5
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
isa.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2012-2021 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 haveVHE;
98  bool havePAN;
99  bool haveSecEL2;
100  bool haveTME;
101 
103  unsigned sveVL;
104 
110 
112 
114 
117  uint32_t lower; // Lower half mapped to this register
118  uint32_t upper; // Upper half mapped to this register
119  uint64_t _reset; // value taken on reset (i.e. initialization)
120  uint64_t _res0; // reserved
121  uint64_t _res1; // reserved
122  uint64_t _raz; // read as zero (fixed at 0)
123  uint64_t _rao; // read as one (fixed at 1)
124  public:
126  lower(0), upper(0),
127  _reset(0), _res0(0), _res1(0), _raz(0), _rao(0) {}
128  uint64_t reset() const { return _reset; }
129  uint64_t res0() const { return _res0; }
130  uint64_t res1() const { return _res1; }
131  uint64_t raz() const { return _raz; }
132  uint64_t rao() const { return _rao; }
133  // raz/rao implies writes ignored
134  uint64_t wi() const { return _raz | _rao; }
135  };
136 
139 
142  std::bitset<NUM_MISCREG_INFOS> &info;
144  public:
145  chain mapsTo(uint32_t l, uint32_t u = 0) const {
146  entry.lower = l;
147  entry.upper = u;
148  return *this;
149  }
150  chain res0(uint64_t mask) const {
151  entry._res0 = mask;
152  return *this;
153  }
154  chain res1(uint64_t mask) const {
155  entry._res1 = mask;
156  return *this;
157  }
158  chain raz(uint64_t mask) const {
159  entry._raz = mask;
160  return *this;
161  }
162  chain rao(uint64_t mask) const {
163  entry._rao = mask;
164  return *this;
165  }
166  chain implemented(bool v = true) const {
168  return *this;
169  }
171  return implemented(false);
172  }
173  chain unverifiable(bool v = true) const {
175  return *this;
176  }
177  chain warnNotFail(bool v = true) const {
179  return *this;
180  }
181  chain mutex(bool v = true) const {
182  info[MISCREG_MUTEX] = v;
183  return *this;
184  }
185  chain banked(bool v = true) const {
186  info[MISCREG_BANKED] = v;
187  return *this;
188  }
189  chain banked64(bool v = true) const {
191  return *this;
192  }
193  chain bankedChild(bool v = true) const {
195  return *this;
196  }
197  chain userNonSecureRead(bool v = true) const {
199  return *this;
200  }
201  chain userNonSecureWrite(bool v = true) const {
203  return *this;
204  }
205  chain userSecureRead(bool v = true) const {
207  return *this;
208  }
209  chain userSecureWrite(bool v = true) const {
211  return *this;
212  }
213  chain user(bool v = true) const {
216  userSecureRead(v);
218  return *this;
219  }
220  chain privNonSecureRead(bool v = true) const {
222  return *this;
223  }
224  chain privNonSecureWrite(bool v = true) const {
226  return *this;
227  }
228  chain privNonSecure(bool v = true) const {
231  return *this;
232  }
233  chain privSecureRead(bool v = true) const {
235  return *this;
236  }
237  chain privSecureWrite(bool v = true) const {
239  return *this;
240  }
241  chain privSecure(bool v = true) const {
242  privSecureRead(v);
244  return *this;
245  }
246  chain priv(bool v = true) const {
247  privSecure(v);
248  privNonSecure(v);
249  return *this;
250  }
251  chain privRead(bool v = true) const {
252  privSecureRead(v);
254  return *this;
255  }
256  chain hypE2HRead(bool v = true) const {
258  return *this;
259  }
260  chain hypE2HWrite(bool v = true) const {
262  return *this;
263  }
264  chain hypE2H(bool v = true) const {
265  hypE2HRead(v);
266  hypE2HWrite(v);
267  return *this;
268  }
269  chain hypRead(bool v = true) const {
270  hypE2HRead(v);
271  info[MISCREG_HYP_RD] = v;
272  return *this;
273  }
274  chain hypWrite(bool v = true) const {
275  hypE2HWrite(v);
276  info[MISCREG_HYP_WR] = v;
277  return *this;
278  }
279  chain hyp(bool v = true) const {
280  hypRead(v);
281  hypWrite(v);
282  return *this;
283  }
284  chain monE2HRead(bool v = true) const {
286  return *this;
287  }
288  chain monE2HWrite(bool v = true) const {
290  return *this;
291  }
292  chain monE2H(bool v = true) const {
293  monE2HRead(v);
294  monE2HWrite(v);
295  return *this;
296  }
297  chain monSecureRead(bool v = true) const {
298  monE2HRead(v);
300  return *this;
301  }
302  chain monSecureWrite(bool v = true) const {
303  monE2HWrite(v);
305  return *this;
306  }
307  chain monNonSecureRead(bool v = true) const {
308  monE2HRead(v);
310  return *this;
311  }
312  chain monNonSecureWrite(bool v = true) const {
313  monE2HWrite(v);
315  return *this;
316  }
317  chain mon(bool v = true) const {
318  monSecureRead(v);
319  monSecureWrite(v);
322  return *this;
323  }
324  chain monSecure(bool v = true) const {
325  monSecureRead(v);
326  monSecureWrite(v);
327  return *this;
328  }
329  chain monNonSecure(bool v = true) const {
332  return *this;
333  }
334  chain allPrivileges(bool v = true) const {
337  userSecureRead(v);
341  privSecureRead(v);
343  hypRead(v);
344  hypWrite(v);
345  monSecureRead(v);
346  monSecureWrite(v);
349  return *this;
350  }
351  chain nonSecure(bool v = true) const {
356  hypRead(v);
357  hypWrite(v);
360  return *this;
361  }
362  chain secure(bool v = true) const {
363  userSecureRead(v);
365  privSecureRead(v);
367  monSecureRead(v);
368  monSecureWrite(v);
369  return *this;
370  }
371  chain reads(bool v) const {
373  userSecureRead(v);
375  privSecureRead(v);
376  hypRead(v);
377  monSecureRead(v);
379  return *this;
380  }
381  chain writes(bool v) const {
386  hypWrite(v);
387  monSecureWrite(v);
389  return *this;
390  }
392  user(0);
393  return *this;
394  }
395  chain highest(ArmSystem *const sys) const;
397  std::bitset<NUM_MISCREG_INFOS> &i)
398  : entry(e),
399  info(i)
400  {
401  // force unimplemented registers to be thusly declared
402  implemented(1);
403  }
404  };
405 
408  miscRegInfo[reg]);
409  }
410 
412 
415 
416  void
417  updateRegMap(CPSR cpsr)
418  {
419  if (cpsr.width == 0) {
421  } else {
422  switch (cpsr.mode) {
423  case MODE_USER:
424  case MODE_SYSTEM:
426  break;
427  case MODE_FIQ:
429  break;
430  case MODE_IRQ:
432  break;
433  case MODE_SVC:
435  break;
436  case MODE_MON:
438  break;
439  case MODE_ABORT:
441  break;
442  case MODE_HYP:
444  break;
445  case MODE_UNDEFINED:
447  break;
448  default:
449  panic("Unrecognized mode setting in CPSR.\n");
450  }
451  }
452  }
453 
456 
457  private:
458  void assert32() { assert(((CPSR)readMiscReg(MISCREG_CPSR)).width); }
459  void assert64() { assert(!((CPSR)readMiscReg(MISCREG_CPSR)).width); }
460 
461  public:
462  void clear();
463 
464  protected:
465  void clear32(const ArmISAParams *p, const SCTLR &sctlr_rst);
466  void clear64(const ArmISAParams *p);
467  void initID32(const ArmISAParams *p);
468  void initID64(const ArmISAParams *p);
469 
474 
475  public:
476  SelfDebug*
477  getSelfDebug() const
478  {
479  return selfDebug;
480  }
481 
482  static SelfDebug*
484  {
485  auto *arm_isa = static_cast<ArmISA::ISA *>(tc->getIsaPtr());
486  return arm_isa->getSelfDebug();
487  }
488 
489  RegVal readMiscRegNoEffect(int misc_reg) const;
490  RegVal readMiscReg(int misc_reg);
491  void setMiscRegNoEffect(int misc_reg, RegVal val);
492  void setMiscReg(int misc_reg, RegVal val);
493 
494  RegId
495  flattenRegId(const RegId& regId) const
496  {
497  switch (regId.classValue()) {
498  case IntRegClass:
499  return RegId(IntRegClass, flattenIntIndex(regId.index()));
500  case FloatRegClass:
501  return RegId(FloatRegClass, flattenFloatIndex(regId.index()));
502  case VecRegClass:
503  return RegId(VecRegClass, flattenVecIndex(regId.index()));
504  case VecElemClass:
505  return RegId(VecElemClass, flattenVecElemIndex(regId.index()),
506  regId.elemIndex());
507  case VecPredRegClass:
508  return RegId(VecPredRegClass,
509  flattenVecPredIndex(regId.index()));
510  case CCRegClass:
511  return RegId(CCRegClass, flattenCCIndex(regId.index()));
512  case MiscRegClass:
513  return RegId(MiscRegClass, flattenMiscIndex(regId.index()));
514  }
515  return RegId();
516  }
517 
518  int
519  flattenIntIndex(int reg) const
520  {
521  assert(reg >= 0);
522  if (reg < NUM_ARCH_INTREGS) {
523  return intRegMap[reg];
524  } else if (reg < NUM_INTREGS) {
525  return reg;
526  } else if (reg == INTREG_SPX) {
527  CPSR cpsr = miscRegs[MISCREG_CPSR];
529  (OperatingMode) (uint8_t) cpsr.mode);
530  if (!cpsr.sp && el != EL0)
531  return INTREG_SP0;
532  switch (el) {
533  case EL3:
534  return INTREG_SP3;
535  case EL2:
536  return INTREG_SP2;
537  case EL1:
538  return INTREG_SP1;
539  case EL0:
540  return INTREG_SP0;
541  default:
542  panic("Invalid exception level");
543  return 0; // Never happens.
544  }
545  } else {
546  return flattenIntRegModeIndex(reg);
547  }
548  }
549 
550  int
552  {
553  assert(reg >= 0);
554  return reg;
555  }
556 
557  int
558  flattenVecIndex(int reg) const
559  {
560  assert(reg >= 0);
561  return reg;
562  }
563 
564  int
566  {
567  assert(reg >= 0);
568  return reg;
569  }
570 
571  int
573  {
574  assert(reg >= 0);
575  return reg;
576  }
577 
578  int
579  flattenCCIndex(int reg) const
580  {
581  assert(reg >= 0);
582  return reg;
583  }
584 
585  int
587  {
588  assert(reg >= 0);
589  int flat_idx = reg;
590 
591  if (reg == MISCREG_SPSR) {
592  CPSR cpsr = miscRegs[MISCREG_CPSR];
593  switch (cpsr.mode) {
594  case MODE_EL0T:
595  warn("User mode does not have SPSR\n");
596  flat_idx = MISCREG_SPSR;
597  break;
598  case MODE_EL1T:
599  case MODE_EL1H:
600  flat_idx = MISCREG_SPSR_EL1;
601  break;
602  case MODE_EL2T:
603  case MODE_EL2H:
604  flat_idx = MISCREG_SPSR_EL2;
605  break;
606  case MODE_EL3T:
607  case MODE_EL3H:
608  flat_idx = MISCREG_SPSR_EL3;
609  break;
610  case MODE_USER:
611  warn("User mode does not have SPSR\n");
612  flat_idx = MISCREG_SPSR;
613  break;
614  case MODE_FIQ:
615  flat_idx = MISCREG_SPSR_FIQ;
616  break;
617  case MODE_IRQ:
618  flat_idx = MISCREG_SPSR_IRQ;
619  break;
620  case MODE_SVC:
621  flat_idx = MISCREG_SPSR_SVC;
622  break;
623  case MODE_MON:
624  flat_idx = MISCREG_SPSR_MON;
625  break;
626  case MODE_ABORT:
627  flat_idx = MISCREG_SPSR_ABT;
628  break;
629  case MODE_HYP:
630  flat_idx = MISCREG_SPSR_HYP;
631  break;
632  case MODE_UNDEFINED:
633  flat_idx = MISCREG_SPSR_UND;
634  break;
635  default:
636  warn("Trying to access SPSR in an invalid mode: %d\n",
637  cpsr.mode);
638  flat_idx = MISCREG_SPSR;
639  break;
640  }
641  } else if (miscRegInfo[reg][MISCREG_MUTEX]) {
642  // Mutually exclusive CP15 register
643  switch (reg) {
644  case MISCREG_PRRR_MAIR0:
647  {
648  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
649  // If the muxed reg has been flattened, work out the
650  // offset and apply it to the unmuxed reg
651  int idxOffset = reg - MISCREG_PRRR_MAIR0;
652  if (ttbcr.eae)
653  flat_idx = flattenMiscIndex(MISCREG_MAIR0 +
654  idxOffset);
655  else
656  flat_idx = flattenMiscIndex(MISCREG_PRRR +
657  idxOffset);
658  }
659  break;
660  case MISCREG_NMRR_MAIR1:
663  {
664  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
665  // If the muxed reg has been flattened, work out the
666  // offset and apply it to the unmuxed reg
667  int idxOffset = reg - MISCREG_NMRR_MAIR1;
668  if (ttbcr.eae)
669  flat_idx = flattenMiscIndex(MISCREG_MAIR1 +
670  idxOffset);
671  else
672  flat_idx = flattenMiscIndex(MISCREG_NMRR +
673  idxOffset);
674  }
675  break;
677  {
678  PMSELR pmselr = miscRegs[MISCREG_PMSELR];
679  if (pmselr.sel == 31)
681  else
683  }
684  break;
685  default:
686  panic("Unrecognized misc. register.\n");
687  break;
688  }
689  } else {
691  bool secureReg = haveSecurity && !highestELIs64 &&
694  flat_idx += secureReg ? 2 : 1;
695  } else {
696  flat_idx = snsBankedIndex64((MiscRegIndex)reg,
699  }
700  }
701  return flat_idx;
702  }
703 
708  int
709  redirectRegVHE(ThreadContext * tc, int misc_reg)
710  {
711  const HCR hcr = readMiscRegNoEffect(MISCREG_HCR_EL2);
712  if (hcr.e2h == 0x0 || currEL(tc) != EL2)
713  return misc_reg;
715  bool sec_el2 = scr.eel2 && haveSecEL2;
716  switch(misc_reg) {
717  case MISCREG_SPSR_EL1:
718  return MISCREG_SPSR_EL2;
719  case MISCREG_ELR_EL1:
720  return MISCREG_ELR_EL2;
721  case MISCREG_SCTLR_EL1:
722  return MISCREG_SCTLR_EL2;
723  case MISCREG_CPACR_EL1:
724  return MISCREG_CPTR_EL2;
725  // case :
726  // return MISCREG_TRFCR_EL2;
727  case MISCREG_TTBR0_EL1:
728  return MISCREG_TTBR0_EL2;
729  case MISCREG_TTBR1_EL1:
730  return MISCREG_TTBR1_EL2;
731  case MISCREG_TCR_EL1:
732  return MISCREG_TCR_EL2;
733  case MISCREG_AFSR0_EL1:
734  return MISCREG_AFSR0_EL2;
735  case MISCREG_AFSR1_EL1:
736  return MISCREG_AFSR1_EL2;
737  case MISCREG_ESR_EL1:
738  return MISCREG_ESR_EL2;
739  case MISCREG_FAR_EL1:
740  return MISCREG_FAR_EL2;
741  case MISCREG_MAIR_EL1:
742  return MISCREG_MAIR_EL2;
743  case MISCREG_AMAIR_EL1:
744  return MISCREG_AMAIR_EL2;
745  case MISCREG_VBAR_EL1:
746  return MISCREG_VBAR_EL2;
748  return MISCREG_CONTEXTIDR_EL2;
749  case MISCREG_CNTKCTL_EL1:
750  return MISCREG_CNTHCTL_EL2;
752  return sec_el2? MISCREG_CNTHPS_TVAL_EL2:
755  return sec_el2? MISCREG_CNTHPS_CTL_EL2:
758  return sec_el2? MISCREG_CNTHPS_CVAL_EL2:
761  return sec_el2? MISCREG_CNTHVS_TVAL_EL2:
764  return sec_el2? MISCREG_CNTHVS_CTL_EL2:
767  return sec_el2? MISCREG_CNTHVS_CVAL_EL2:
769  default:
770  return misc_reg;
771  }
772  /*should not be accessible */
773  return misc_reg;
774  }
775 
776  int
778  {
779  int reg_as_int = static_cast<int>(reg);
781  reg_as_int += (haveSecurity && !ns) ? 2 : 1;
782  }
783  return reg_as_int;
784  }
785 
786  std::pair<int,int> getMiscIndices(int misc_reg) const
787  {
788  // Note: indexes of AArch64 registers are left unchanged
789  int flat_idx = flattenMiscIndex(misc_reg);
790 
791  if (lookUpMiscReg[flat_idx].lower == 0) {
792  return std::make_pair(flat_idx, 0);
793  }
794 
795  // do additional S/NS flattenings if mapped to NS while in S
796  bool S = haveSecurity && !highestELIs64 &&
799  int lower = lookUpMiscReg[flat_idx].lower;
800  int upper = lookUpMiscReg[flat_idx].upper;
801  // upper == 0, which is CPSR, is not MISCREG_BANKED_CHILD (no-op)
802  lower += S && miscRegInfo[lower][MISCREG_BANKED_CHILD];
803  upper += S && miscRegInfo[upper][MISCREG_BANKED_CHILD];
804  return std::make_pair(lower, upper);
805  }
806 
807  unsigned getCurSveVecLenInBits() const;
808 
809  unsigned getCurSveVecLenInBitsAtReset() const { return sveVL * 128; }
810 
811  static void zeroSveVecRegUpperPart(VecRegContainer &vc,
812  unsigned eCount);
813 
814  void
815  serialize(CheckpointOut &cp) const override
816  {
817  DPRINTF(Checkpoint, "Serializing Arm Misc Registers\n");
819  }
820 
821  void
823  {
824  DPRINTF(Checkpoint, "Unserializing Arm Misc Registers\n");
826  CPSR tmp_cpsr = miscRegs[MISCREG_CPSR];
827  updateRegMap(tmp_cpsr);
828  }
829 
830  void startup() override;
831 
832  void setupThreadContext();
833 
834  void takeOverFrom(ThreadContext *new_tc,
835  ThreadContext *old_tc) override;
836 
837  Enums::DecoderFlavor decoderFlavor() const { return _decoderFlavor; }
838 
840  bool haveGICv3CpuIfc() const
841  {
842  // gicv3CpuInterface is initialized at startup time, hence
843  // trying to read its value before the startup stage will lead
844  // to an error
845  assert(afterStartup);
846  return gicv3CpuInterface != nullptr;
847  }
848 
849  Enums::VecRegRenameMode
851  {
852  return _vecRegRenameMode;
853  }
854 
855  typedef ArmISAParams Params;
856 
857  const Params *params() const;
858 
859  ISA(Params *p);
860  };
861 }
862 
863 template<>
864 struct RenameMode<ArmISA::ISA>
865 {
866  static Enums::VecRegRenameMode
867  init(const BaseISA* isa)
868  {
869  auto arm_isa = dynamic_cast<const ArmISA::ISA *>(isa);
870  assert(arm_isa);
871  return arm_isa->vecRegRenameMode();
872  }
873 
874  static Enums::VecRegRenameMode
876  {
877  if (pc.aarch64()) {
878  return Enums::Full;
879  } else {
880  return Enums::Elem;
881  }
882  }
883 
884  static bool
885  equalsInit(const BaseISA* isa1, const BaseISA* isa2)
886  {
887  return init(isa1) == init(isa2);
888  }
889 };
890 
891 #endif
ArmISA::ISA::MiscRegLUTEntryInitializer::userSecureWrite
chain userSecureWrite(bool v=true) const
Definition: isa.hh:209
ArmISA::ISA::setupThreadContext
void setupThreadContext()
Definition: isa.cc:462
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecure
chain monNonSecure(bool v=true) const
Definition: isa.hh:329
isa_device.hh
ArmISA::SelfDebug
Definition: self_debug.hh:273
ArmISA::ISA::flattenCCIndex
int flattenCCIndex(int reg) const
Definition: isa.hh:579
ArmISA::ISA::MiscRegLUTEntryInitializer::reads
chain reads(bool v) const
Definition: isa.hh:371
ArmISA::IntReg64Map
const IntRegMap IntReg64Map
Definition: intregs.hh:304
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecureRead
chain privSecureRead(bool v=true) const
Definition: isa.hh:233
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:786
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:154
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:134
ArmISA::ISA::clear
void clear()
Definition: isa.cc:132
ArmISA::ISA::MiscRegLUTEntryInitializer::banked64
chain banked64(bool v=true) const
Definition: isa.hh:189
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:130
ArmISA::ISA::decoderFlavor
Enums::DecoderFlavor decoderFlavor() const
Definition: isa.hh:837
ArmISA::MODE_EL0T
@ MODE_EL0T
Definition: types.hh:629
ArmISA::ISA::haveVHE
bool haveVHE
Definition: isa.hh:97
ArmISA::ISA::flattenMiscIndex
int flattenMiscIndex(int reg) const
Definition: isa.hh:586
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:274
ArmISA::ISA::MiscRegLUTEntryInitializer::user
chain user(bool v=true) const
Definition: isa.hh:213
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:850
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:483
ArmISA::ISA::miscRegs
RegVal miscRegs[NumMiscRegs]
Definition: isa.hh:413
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:142
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:125
ArmISA::currEL
static ExceptionLevel currEL(const ThreadContext *tc)
Definition: utility.hh:143
ArmISA::ISA::MiscRegLUTEntry::_reset
uint64_t _reset
Definition: isa.hh:119
ArmISA::ISA::MiscRegLUTEntryInitializer::hypE2H
chain hypE2H(bool v=true) const
Definition: isa.hh:264
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:334
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:838
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:117
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:181
ArmISA::ISA::MiscRegLUTEntryInitializer::monSecureRead
chain monSecureRead(bool v=true) const
Definition: isa.hh:297
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:145
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:709
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:116
ArmISA::ISA::MiscRegLUTEntry::_rao
uint64_t _rao
Definition: isa.hh:123
ArmISA::ISA::MiscRegLUTEntry::raz
uint64_t raz() const
Definition: isa.hh:131
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:284
ArmISA::ISA::MiscRegLUTEntryInitializer::monE2H
chain monE2H(bool v=true) const
Definition: isa.hh:292
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:103
ArmISA::ISA::MiscRegLUTEntryInitializer::res0
chain res0(uint64_t mask) const
Definition: isa.hh:150
ArmISA
Definition: ccregs.hh:41
types.hh
ArmISA::ISA::haveSecEL2
bool haveSecEL2
Definition: isa.hh:99
X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:87
ArmISA::ISA::Params
ArmISAParams Params
Definition: isa.hh:855
ArmISA::ISA::readMiscRegNoEffect
RegVal readMiscRegNoEffect(int misc_reg) const
Definition: isa.cc:490
ArmISA::ISA::zeroSveVecRegUpperPart
static void zeroSveVecRegUpperPart(VecRegContainer &vc, unsigned eCount)
Definition: isa.cc:2340
ArmISA::ISA::takeOverFrom
void takeOverFrom(ThreadContext *new_tc, ThreadContext *old_tc) override
Definition: isa.cc:483
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:458
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:2400
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:121
ArmISA::ISA::timer
std::unique_ptr< BaseISADevice > timer
Definition: isa.hh:82
ArmISA::ISA::MiscRegLUTEntry::upper
uint32_t upper
Definition: isa.hh:118
ArmISA::ISA::MiscRegLUTEntry::res0
uint64_t res0() const
Definition: isa.hh:129
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:840
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:109
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:459
ArmISA::ISA::MiscRegLUTEntryInitializer::userSecureRead
chain userSecureRead(bool v=true) const
Definition: isa.hh:205
ArmISA::ISA::haveTME
bool haveTME
Definition: isa.hh:100
ArmISA::ISA::MiscRegLUTEntryInitializer::exceptUserMode
chain exceptUserMode() const
Definition: isa.hh:391
cp
Definition: cprintf.cc:40
ArmISA::ISA::MiscRegLUTEntryInitializer::privRead
chain privRead(bool v=true) const
Definition: isa.hh:251
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:815
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:220
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:256
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:128
DPRINTF
#define DPRINTF(x,...)
Definition: trace.hh:234
ArmISA::ISA::clear32
void clear32(const ArmISAParams *p, const SCTLR &sctlr_rst)
Definition: isa.cc:225
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:173
ArmISA::ISA::haveCrypto
bool haveCrypto
Definition: isa.hh:92
BaseISA::tc
ThreadContext * tc
Definition: isa.hh:52
ArmISA::ISA::MiscRegLUTEntryInitializer
Definition: isa.hh:140
ArmISA::ExceptionLevel
ExceptionLevel
Definition: types.hh:621
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecureWrite
chain monNonSecureWrite(bool v=true) const
Definition: isa.hh:312
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:777
ArmISA::MISCREG_VBAR_EL1
@ MISCREG_VBAR_EL1
Definition: miscregs.hh:728
ArmISA::ISA::MiscRegLUTEntryInitializer::banked
chain banked(bool v=true) const
Definition: isa.hh:185
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:2289
ArmISA::MISCREG_UNVERIFIABLE
@ MISCREG_UNVERIFIABLE
Definition: miscregs.hh:1093
RenameMode< ArmISA::ISA >::init
static Enums::VecRegRenameMode init(const BaseISA *isa)
Definition: isa.hh:867
ArmISA::MISCREG_SPSR_ABT
@ MISCREG_SPSR_ABT
Definition: miscregs.hh:63
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecureWrite
chain privSecureWrite(bool v=true) const
Definition: isa.hh:237
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:414
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:170
ArmISA::ISA::clear64
void clear64(const ArmISAParams *p)
Definition: isa.cc:277
ArmISA::MODE_SVC
@ MODE_SVC
Definition: types.hh:639
ArmISA::ISA::MiscRegLUTEntry::_raz
uint64_t _raz
Definition: isa.hh:122
ArmISA::ISA::flattenRegId
RegId flattenRegId(const RegId &regId) const
Definition: isa.hh:495
ArmISA::ISA::selfDebug
SelfDebug * selfDebug
Definition: isa.hh:113
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:132
SERIALIZE_ARRAY
#define SERIALIZE_ARRAY(member, size)
Definition: serialize.hh:832
ArmISA::ISA::MiscRegLUTEntryInitializer::hypRead
chain hypRead(bool v=true) const
Definition: isa.hh:269
ArmISA::ISA::MiscRegLUTEntryInitializer::monNonSecureRead
chain monNonSecureRead(bool v=true) const
Definition: isa.hh:307
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:2467
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:816
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:551
ArmISA::ISA::MiscRegLUTEntryInitializer::hypE2HWrite
chain hypE2HWrite(bool v=true) const
Definition: isa.hh:260
IntRegClass
@ IntRegClass
Integer register.
Definition: reg_class.hh:53
ArmISA::ISA::MiscRegLUTEntryInitializer::rao
chain rao(uint64_t mask) const
Definition: isa.hh:162
ArmISA::MISCREG_CNTHP_TVAL_EL2
@ MISCREG_CNTHP_TVAL_EL2
Definition: miscregs.hh:768
ArmISA::ISA::flattenIntIndex
int flattenIntIndex(int reg) const
Definition: isa.hh:519
ArmISA::ISA::MiscRegLUTEntryInitializer::monSecure
chain monSecure(bool v=true) const
Definition: isa.hh:324
ArmISA::ISA::afterStartup
bool afterStartup
Definition: isa.hh:111
ArmISA::ISA::MiscRegLUTEntryInitializer::hyp
chain hyp(bool v=true) const
Definition: isa.hh:279
ArmISA::ISA::updateRegMap
void updateRegMap(CPSR cpsr)
Definition: isa.hh:417
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:197
ArmISA::e
Bitfield< 9 > e
Definition: miscregs_types.hh:61
ArmISA::ISA::getGenericTimer
BaseISADevice & getGenericTimer()
Definition: isa.cc:2268
ArmISA::ISA::flattenVecIndex
int flattenVecIndex(int reg) const
Definition: isa.hh:558
ArmISA::ISA::getSelfDebug
SelfDebug * getSelfDebug() const
Definition: isa.hh:477
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:381
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:143
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:158
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:288
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:362
ArmISA::NUM_INTREGS
@ NUM_INTREGS
Definition: intregs.hh:123
ArmISA::ISA::MiscRegLUTEntryInitializer::warnNotFail
chain warnNotFail(bool v=true) const
Definition: isa.hh:177
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:228
ArmISA::ISA::MiscRegLUTEntryInitializer::implemented
chain implemented(bool v=true) const
Definition: isa.hh:166
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:822
ArmISA::ISA::MiscRegLUTEntryInitializer::bankedChild
chain bankedChild(bool v=true) const
Definition: isa.hh:193
ArmISA::IntRegIrqMap
const IntRegMap IntRegIrqMap
Definition: intregs.hh:423
ArmISA::ISA::MiscRegLUTEntryInitializer::privNonSecureWrite
chain privNonSecureWrite(bool v=true) const
Definition: isa.hh:224
ArmISA::ISA::InitReg
const MiscRegLUTEntryInitializer InitReg(uint32_t reg)
Definition: isa.hh:406
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:445
ArmISA::ISA::readMiscReg
RegVal readMiscReg(int misc_reg)
Definition: isa.cc:514
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:317
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:2349
ArmISA::ISA::MiscRegLUTEntryInitializer::entry
struct MiscRegLUTEntry & entry
Definition: isa.hh:141
ArmISA::MISCREG_TTBR1_EL2
@ MISCREG_TTBR1_EL2
Definition: miscregs.hh:812
ArmISA::ISA::getCurSveVecLenInBits
unsigned getCurSveVecLenInBits() const
Definition: isa.cc:2296
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:302
ArmISA::MISCREG_CNTP_CTL_EL0
@ MISCREG_CNTP_CTL_EL0
Definition: miscregs.hh:748
ArmISA::ISA::initID32
void initID32(const ArmISAParams *p)
Definition: isa.cc:326
ArmISA::MODE_USER
@ MODE_USER
Definition: types.hh:636
ArmISA::ISA::MiscRegLUTEntryInitializer::priv
chain priv(bool v=true) const
Definition: isa.hh:246
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:98
MipsISA::l
Bitfield< 5 > l
Definition: pra_constants.hh:320
ArmISA::ISA::MiscRegLUTEntryInitializer::privSecure
chain privSecure(bool v=true) const
Definition: isa.hh:241
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:396
ArmISA::MISCREG_SCR
@ MISCREG_SCR
Definition: miscregs.hh:237
ArmISA::ISA::MiscRegLUTEntryInitializer::secure
chain secure(bool v=true) const
Definition: isa.hh:362
RenameMode< ArmISA::ISA >::mode
static Enums::VecRegRenameMode mode(const ArmISA::PCState &pc)
Definition: isa.hh:875
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:126
ArmISA::MISCREG_SCTLR_EL2
@ MISCREG_SCTLR_EL2
Definition: miscregs.hh:576
ArmISA::ISA::MiscRegLUTEntry::_res0
uint64_t _res0
Definition: isa.hh:120
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:565
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:138
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:885
ArmISA::ISA::flattenVecPredIndex
int flattenVecPredIndex(int reg) const
Definition: isa.hh:572
ArmISA::ISA::getCurSveVecLenInBitsAtReset
unsigned getCurSveVecLenInBitsAtReset() const
Definition: isa.hh:809
ArmISA::ISA::MiscRegLUTEntryInitializer::nonSecure
chain nonSecure(bool v=true) const
Definition: isa.hh:351
ArmISA::ISA::MiscRegLUTEntryInitializer::userNonSecureWrite
chain userNonSecureWrite(bool v=true) const
Definition: isa.hh:201
ArmISA::MISCREG_SPSR_EL1
@ MISCREG_SPSR_EL1
Definition: miscregs.hh:604
ArmISA::INTREG_SP2
@ INTREG_SP2
Definition: intregs.hh:120

Generated on Thu Mar 18 2021 12:09:08 for gem5 by doxygen 1.8.17