gem5  [DEVELOP-FOR-23.0]
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-2023 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/mmu.hh"
46 #include "arch/arm/pcstate.hh"
47 #include "arch/arm/regs/int.hh"
48 #include "arch/arm/regs/mat.hh"
49 #include "arch/arm/regs/misc.hh"
50 #include "arch/arm/regs/vec.hh"
51 #include "arch/arm/self_debug.hh"
52 #include "arch/arm/system.hh"
53 #include "arch/arm/types.hh"
54 #include "arch/arm/utility.hh"
55 #include "arch/generic/isa.hh"
56 #include "debug/Checkpoint.hh"
57 #include "enums/DecoderFlavor.hh"
58 #include "sim/sim_object.hh"
59 
60 namespace gem5
61 {
62 
63 struct ArmISAParams;
64 struct DummyArmISADeviceParams;
65 class Checkpoint;
66 class EventManager;
67 
68 namespace ArmISA
69 {
70  class ISA : public BaseISA
71  {
72  protected:
73  // Parent system
75 
76  // Micro Architecture
77  const enums::DecoderFlavor _decoderFlavor;
78 
81 
82  // PMU belonging to this ISA
84 
85  // Generic timer interface belonging to this ISA
86  std::unique_ptr<BaseISADevice> timer;
87 
88  // GICv3 CPU interface belonging to this ISA
89  std::unique_ptr<BaseISADevice> gicv3CpuInterface;
90 
91  // Cached copies of system-level properties
94  uint8_t physAddrRange;
95 
97  unsigned sveVL;
98 
100  unsigned smeVL;
101 
104 
110 
112 
114  InitReg(uint32_t reg)
115  {
117  }
118 
120 
124 
126  const RegId *intRegMap;
127 
128  void
129  updateRegMap(CPSR cpsr)
130  {
131  if (cpsr.width == 0) {
133  } else {
134  switch (cpsr.mode) {
135  case MODE_USER:
136  case MODE_SYSTEM:
138  break;
139  case MODE_FIQ:
141  break;
142  case MODE_IRQ:
144  break;
145  case MODE_SVC:
147  break;
148  case MODE_MON:
150  break;
151  case MODE_ABORT:
153  break;
154  case MODE_HYP:
156  break;
157  case MODE_UNDEFINED:
159  break;
160  default:
161  panic("Unrecognized mode setting in CPSR.\n");
162  }
163  }
164  }
165 
166  public:
167  const RegId &mapIntRegId(RegIndex idx) const { return intRegMap[idx]; }
168 
169  public:
170  void clear() override;
171 
172  protected:
177 
178  public:
179  SelfDebug*
180  getSelfDebug() const
181  {
182  return selfDebug;
183  }
184 
185  static SelfDebug*
187  {
188  auto *arm_isa = static_cast<ArmISA::ISA *>(tc->getIsaPtr());
189  return arm_isa->getSelfDebug();
190  }
191 
192  const ArmRelease* getRelease() const { return release; }
193 
194  RegVal readMiscRegNoEffect(RegIndex idx) const override;
195  RegVal readMiscReg(RegIndex idx) override;
196  void setMiscRegNoEffect(RegIndex idx, RegVal val) override;
197  void setMiscReg(RegIndex, RegVal val) override;
198 
201 
202  int
204  {
205  assert(reg >= 0);
206  int flat_idx = reg;
207 
208  if (reg == MISCREG_SPSR) {
209  CPSR cpsr = miscRegs[MISCREG_CPSR];
210  switch (cpsr.mode) {
211  case MODE_EL0T:
212  warn("User mode does not have SPSR\n");
213  flat_idx = MISCREG_SPSR;
214  break;
215  case MODE_EL1T:
216  case MODE_EL1H:
217  flat_idx = MISCREG_SPSR_EL1;
218  break;
219  case MODE_EL2T:
220  case MODE_EL2H:
221  flat_idx = MISCREG_SPSR_EL2;
222  break;
223  case MODE_EL3T:
224  case MODE_EL3H:
225  flat_idx = MISCREG_SPSR_EL3;
226  break;
227  case MODE_USER:
228  warn("User mode does not have SPSR\n");
229  flat_idx = MISCREG_SPSR;
230  break;
231  case MODE_FIQ:
232  flat_idx = MISCREG_SPSR_FIQ;
233  break;
234  case MODE_IRQ:
235  flat_idx = MISCREG_SPSR_IRQ;
236  break;
237  case MODE_SVC:
238  flat_idx = MISCREG_SPSR_SVC;
239  break;
240  case MODE_MON:
241  flat_idx = MISCREG_SPSR_MON;
242  break;
243  case MODE_ABORT:
244  flat_idx = MISCREG_SPSR_ABT;
245  break;
246  case MODE_HYP:
247  flat_idx = MISCREG_SPSR_HYP;
248  break;
249  case MODE_UNDEFINED:
250  flat_idx = MISCREG_SPSR_UND;
251  break;
252  default:
253  warn("Trying to access SPSR in an invalid mode: %d\n",
254  cpsr.mode);
255  flat_idx = MISCREG_SPSR;
256  break;
257  }
258  } else if (lookUpMiscReg[reg].info[MISCREG_MUTEX]) {
259  // Mutually exclusive CP15 register
260  switch (reg) {
261  case MISCREG_PRRR_MAIR0:
264  {
265  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
266  // If the muxed reg has been flattened, work out the
267  // offset and apply it to the unmuxed reg
268  int idxOffset = reg - MISCREG_PRRR_MAIR0;
269  if (ttbcr.eae)
270  flat_idx = flattenMiscIndex(MISCREG_MAIR0 +
271  idxOffset);
272  else
273  flat_idx = flattenMiscIndex(MISCREG_PRRR +
274  idxOffset);
275  }
276  break;
277  case MISCREG_NMRR_MAIR1:
280  {
281  TTBCR ttbcr = readMiscRegNoEffect(MISCREG_TTBCR);
282  // If the muxed reg has been flattened, work out the
283  // offset and apply it to the unmuxed reg
284  int idxOffset = reg - MISCREG_NMRR_MAIR1;
285  if (ttbcr.eae)
286  flat_idx = flattenMiscIndex(MISCREG_MAIR1 +
287  idxOffset);
288  else
289  flat_idx = flattenMiscIndex(MISCREG_NMRR +
290  idxOffset);
291  }
292  break;
294  {
295  PMSELR pmselr = miscRegs[MISCREG_PMSELR];
296  if (pmselr.sel == 31)
298  else
300  }
301  break;
302  default:
303  panic("Unrecognized misc. register.\n");
304  break;
305  }
306  } else {
307  if (lookUpMiscReg[reg].info[MISCREG_BANKED]) {
308  bool secure_reg = !highestELIs64 && inSecureState();
309  flat_idx += secure_reg ? 2 : 1;
310  } else {
311  flat_idx = snsBankedIndex64((MiscRegIndex)reg,
312  !inSecureState());
313  }
314  }
315  return flat_idx;
316  }
317 
322  int redirectRegVHE(int misc_reg);
323 
324  int
326  {
327  int reg_as_int = static_cast<int>(reg);
328  if (lookUpMiscReg[reg].info[MISCREG_BANKED64]) {
329  reg_as_int += (release->has(ArmExtension::SECURITY) && !ns) ?
330  2 : 1;
331  }
332  return reg_as_int;
333  }
334 
336  getMiscIndices(int misc_reg) const
337  {
338  // Note: indexes of AArch64 registers are left unchanged
339  int flat_idx = flattenMiscIndex(misc_reg);
340 
341  if (lookUpMiscReg[flat_idx].lower == 0) {
342  return std::make_pair(flat_idx, 0);
343  }
344 
345  // do additional S/NS flattenings if mapped to NS while in S
346  bool S = !highestELIs64 && inSecureState();
347 
348  int lower = lookUpMiscReg[flat_idx].lower;
349  int upper = lookUpMiscReg[flat_idx].upper;
350  // upper == 0, which is CPSR, is not MISCREG_BANKED_CHILD (no-op)
351  lower += S && lookUpMiscReg[lower].info[MISCREG_BANKED_CHILD];
352  upper += S && lookUpMiscReg[upper].info[MISCREG_BANKED_CHILD];
353  return std::make_pair(lower, upper);
354  }
355 
357  bool inSecureState() const;
358 
362  ExceptionLevel currEL() const;
363 
364  unsigned getCurSveVecLenInBits() const;
365 
366  unsigned getCurSveVecLenInBitsAtReset() const { return sveVL * 128; }
367 
368  unsigned getCurSmeVecLenInBits() const;
369 
370  unsigned getCurSmeVecLenInBitsAtReset() const { return smeVL * 128; }
371 
372  template <typename Elem>
373  static void
374  zeroSveVecRegUpperPart(Elem *v, unsigned eCount)
375  {
376  static_assert(sizeof(Elem) <= sizeof(uint64_t),
377  "Elem type is too large.");
378  eCount *= (sizeof(uint64_t) / sizeof(Elem));
379  for (int i = 16 / sizeof(Elem); i < eCount; ++i) {
380  v[i] = 0;
381  }
382  }
383 
384  void serialize(CheckpointOut &cp) const override;
385  void unserialize(CheckpointIn &cp) override;
386 
387  void startup() override;
388 
389  void setupThreadContext();
390 
391  PCStateBase *
392  newPCState(Addr new_inst_addr=0) const override
393  {
394  return new PCState(new_inst_addr);
395  }
396 
397  void takeOverFrom(ThreadContext *new_tc,
398  ThreadContext *old_tc) override;
399 
400  enums::DecoderFlavor decoderFlavor() const { return _decoderFlavor; }
401 
402  PARAMS(ArmISA);
403 
404  ISA(const Params &p);
405 
406  uint64_t
407  getExecutingAsid() const override
408  {
410  }
411 
412  bool
413  inUserMode() const override
414  {
415  CPSR cpsr = miscRegs[MISCREG_CPSR];
416  return ArmISA::inUserMode(cpsr);
417  }
418 
419  void copyRegsFrom(ThreadContext *src) override;
420 
421  void handleLockedRead(const RequestPtr &req) override;
422  void handleLockedRead(ExecContext *xc, const RequestPtr &req) override;
423 
424  bool handleLockedWrite(const RequestPtr &req,
425  Addr cacheBlockMask) override;
426  bool handleLockedWrite(ExecContext *xc, const RequestPtr &req,
427  Addr cacheBlockMask) override;
428 
429  void handleLockedSnoop(PacketPtr pkt, Addr cacheBlockMask) override;
431  Addr cacheBlockMask) override;
432  void handleLockedSnoopHit() override;
433  void handleLockedSnoopHit(ExecContext *xc) override;
434 
435  void globalClearExclusive() override;
436  void globalClearExclusive(ExecContext *xc) override;
437  };
438 
439 } // namespace ArmISA
440 } // namespace gem5
441 
442 #endif
gem5::ArmISA::ISA::setMiscReg
void setMiscReg(RegIndex, RegVal val) override
Definition: isa.cc:655
isa_device.hh
gem5::ArmISA::MODE_EL2H
@ MODE_EL2H
Definition: types.hh:285
gem5::ArmISA::MISCREG_CPSR
@ MISCREG_CPSR
Definition: misc.hh:66
gem5::ArmISA::ISA::newPCState
PCStateBase * newPCState(Addr new_inst_addr=0) const override
Definition: isa.hh:392
gem5::ArmISA::ISA::PARAMS
PARAMS(ArmISA)
gem5::ArmISA::MISCREG_PMCCFILTR
@ MISCREG_PMCCFILTR
Definition: misc.hh:366
gem5::ArmISA::ISA::addressTranslation64
void addressTranslation64(MMU::ArmTranslationType tran_type, BaseMMU::Mode mode, Request::Flags flags, RegVal val)
Definition: isa.cc:1568
gem5::ArmISA::ISA::dummyDevice
DummyISADevice dummyDevice
Dummy device for to handle non-existing ISA devices.
Definition: isa.hh:80
gem5::ArmISA::ISA::zeroSveVecRegUpperPart
static void zeroSveVecRegUpperPart(Elem *v, unsigned eCount)
Definition: isa.hh:374
gem5::ArmISA::ISA::getSelfDebug
static SelfDebug * getSelfDebug(ThreadContext *tc)
Definition: isa.hh:186
gem5::ArmISA::MODE_SVC
@ MODE_SVC
Definition: types.hh:291
gem5::ArmISA::ISA::currEL
ExceptionLevel currEL() const
Returns the current Exception Level (EL) of the ISA object.
Definition: isa.cc:1431
gem5::ArmISA::MODE_MON
@ MODE_MON
Definition: types.hh:292
gem5::ArmISA::int_reg::Reg64Map
const RegMap Reg64Map
Definition: int.hh:437
gem5::BaseISA::tc
ThreadContext * tc
Definition: isa.hh:66
warn
#define warn(...)
Definition: logging.hh:256
gem5::ArmISA::ISA::selfDebug
SelfDebug * selfDebug
Definition: isa.hh:111
gem5::ArmISA::ISA::getCurSmeVecLenInBitsAtReset
unsigned getCurSmeVecLenInBitsAtReset() const
Definition: isa.hh:370
gem5::RegVal
uint64_t RegVal
Definition: types.hh:173
gem5::ArmISA::MISCREG_BANKED64
@ MISCREG_BANKED64
Definition: misc.hh:1155
gem5::ArmISA::ISA::getCurSveVecLenInBits
unsigned getCurSveVecLenInBits() const
Definition: isa.cc:1439
gem5::ArmISA::MODE_FIQ
@ MODE_FIQ
Definition: types.hh:289
gem5::ArmISA::SelfDebug
Definition: self_debug.hh:242
gem5::ArmISA::ISA::gicv3CpuInterface
std::unique_ptr< BaseISADevice > gicv3CpuInterface
Definition: isa.hh:89
gem5::ArmISA::MISCREG_PRRR_MAIR0_S
@ MISCREG_PRRR_MAIR0_S
Definition: misc.hh:91
gem5::ArmISA::MISCREG_CONTEXTIDR
@ MISCREG_CONTEXTIDR
Definition: misc.hh:404
gem5::ArmISA::MISCREG_PRRR_MAIR0_NS
@ MISCREG_PRRR_MAIR0_NS
Definition: misc.hh:90
gem5::ArmISA::MISCREG_SPSR_FIQ
@ MISCREG_SPSR_FIQ
Definition: misc.hh:68
gem5::ArmISA::ISA::haveLargeAsid64
bool haveLargeAsid64
Definition: isa.hh:93
gem5::ArmISA::MODE_EL2T
@ MODE_EL2T
Definition: types.hh:284
gem5::ArmISA::ISA
Definition: isa.hh:70
gem5::ArmISA::ISA::takeOverFrom
void takeOverFrom(ThreadContext *new_tc, ThreadContext *old_tc) override
Definition: isa.cc:179
gem5::ArmISA::ISA::handleLockedSnoop
void handleLockedSnoop(PacketPtr pkt, Addr cacheBlockMask) override
Definition: isa.cc:1717
gem5::ArmISA::MODE_UNDEFINED
@ MODE_UNDEFINED
Definition: types.hh:295
gem5::ArmISA::ISA::inUserMode
bool inUserMode() const override
Definition: isa.hh:413
gem5::BaseMMU::Mode
Mode
Definition: mmu.hh:56
gem5::ArmISA::MODE_EL1H
@ MODE_EL1H
Definition: types.hh:283
gem5::ArmISA::MODE_IRQ
@ MODE_IRQ
Definition: types.hh:290
gem5::ArmISA::ISA::updateRegMap
void updateRegMap(CPSR cpsr)
Definition: isa.hh:129
gem5::ArmISA::ISA::release
const ArmRelease * release
This could be either a FS or a SE release.
Definition: isa.hh:103
gem5::CheckpointIn
Definition: serialize.hh:68
gem5::ArmISA::ISA::timer
std::unique_ptr< BaseISADevice > timer
Definition: isa.hh:86
gem5::ArmISA::MISCREG_TTBCR
@ MISCREG_TTBCR
Definition: misc.hh:265
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:776
gem5::ArmISA::ns
Bitfield< 0 > ns
Definition: misc_types.hh:388
gem5::ArmISA::ISA::intRegMap
const RegId * intRegMap
Definition: isa.hh:126
gem5::ArmISA::ISA::copyRegsFrom
void copyRegsFrom(ThreadContext *src) override
Definition: isa.cc:186
gem5::ArmISA::MISCREG_NMRR_MAIR1
@ MISCREG_NMRR_MAIR1
Definition: misc.hh:92
gem5::ArmISA::MISCREG_PRRR_MAIR0
@ MISCREG_PRRR_MAIR0
Definition: misc.hh:89
vec.hh
gem5::ArmISA::MISCREG_SPSR_MON
@ MISCREG_SPSR_MON
Definition: misc.hh:71
gem5::ArmISA::ISA::getCurSveVecLenInBitsAtReset
unsigned getCurSveVecLenInBitsAtReset() const
Definition: isa.hh:366
gem5::ArmISA::ISA::serialize
void serialize(CheckpointOut &cp) const override
Serialize an object.
Definition: isa.cc:1540
gem5::ArmISA::int_reg::RegMonMap
const RegMap RegMonMap
Definition: int.hh:493
gem5::ArmISA::ISA::sveVL
unsigned sveVL
SVE vector length in quadwords.
Definition: isa.hh:97
gem5::ArmISA::MISCREG_NMRR_MAIR1_NS
@ MISCREG_NMRR_MAIR1_NS
Definition: misc.hh:93
system.hh
gem5::ArmISA::i
Bitfield< 7 > i
Definition: misc_types.hh:67
gem5::ArmISA::MODE_EL3H
@ MODE_EL3H
Definition: types.hh:287
types.hh
gem5::SimObject::Params
SimObjectParams Params
Definition: sim_object.hh:170
mmu.hh
gem5::ArmISA::ISA::handleLockedRead
void handleLockedRead(const RequestPtr &req) override
Definition: isa.cc:1729
gem5::ArmISA::int_reg::RegHypMap
const RegMap RegHypMap
Definition: int.hh:465
gem5::ArmRelease::has
bool has(ArmExtension ext) const
Definition: system.hh:76
gem5::Flags< FlagsType >
gem5::ArmISA::MODE_EL3T
@ MODE_EL3T
Definition: types.hh:286
gem5::ArmISA::ISA::pmu
BaseISADevice * pmu
Definition: isa.hh:83
gem5::ArmISA::MISCREG_PRRR
@ MISCREG_PRRR
Definition: misc.hh:374
gem5::ArmISA::MODE_EL1T
@ MODE_EL1T
Definition: types.hh:282
gem5::ArmISA::ISA::handleLockedSnoopHit
void handleLockedSnoopHit() override
Definition: isa.cc:1747
gem5::ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
gem5::ArmISA::MODE_HYP
@ MODE_HYP
Definition: types.hh:294
gem5::VegaISA::p
Bitfield< 54 > p
Definition: pagetable.hh:70
sim_object.hh
gem5::Packet
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
Definition: packet.hh:294
gem5::ArmISA::lookUpMiscReg
std::vector< struct MiscRegLUTEntry > lookUpMiscReg(NUM_MISCREGS)
Definition: misc.hh:1627
gem5::ArmISA::MISCREG_PMSELR
@ MISCREG_PMSELR
Definition: misc.hh:361
gem5::ArmISA::MISCREG_MAIR1
@ MISCREG_MAIR1
Definition: misc.hh:383
gem5::ArmISA::ISA::snsBankedIndex64
int snsBankedIndex64(MiscRegIndex reg, bool ns) const
Definition: isa.hh:325
gem5::ArmISA::MISCREG_SPSR_IRQ
@ MISCREG_SPSR_IRQ
Definition: misc.hh:69
gem5::ArmISA::ISA::globalClearExclusive
void globalClearExclusive() override
Definition: isa.cc:1819
gem5::MipsISA::PCState
GenericISA::DelaySlotPCState< 4 > PCState
Definition: pcstate.hh:40
mat.hh
gem5::ArmISA::ISA::getMiscIndices
std::pair< int, int > getMiscIndices(int misc_reg) const
Definition: isa.hh:336
gem5::ArmISA::NUM_MISCREGS
@ NUM_MISCREGS
Definition: misc.hh:1138
gem5::ArmISA::ISA::unserialize
void unserialize(CheckpointIn &cp) override
Unserialize an object.
Definition: isa.cc:1547
gem5::ArmISA::v
Bitfield< 28 > v
Definition: misc_types.hh:54
gem5::ArmISA::ISA::ISA
ISA(const Params &p)
Definition: isa.cc:83
gem5::ArmISA::MISCREG_SPSR
@ MISCREG_SPSR
Definition: misc.hh:67
gem5::RequestPtr
std::shared_ptr< Request > RequestPtr
Definition: request.hh:92
gem5::ArmISA::int_reg::RegSvcMap
const RegMap RegSvcMap
Definition: int.hh:479
gem5::ArmISA::MISCREG_MUTEX
@ MISCREG_MUTEX
Definition: misc.hh:1150
gem5::ArmISA::ISA::addressTranslation
void addressTranslation(MMU::ArmTranslationType tran_type, BaseMMU::Mode mode, Request::Flags flags, RegVal val)
Definition: isa.cc:1619
gem5::ArmISA::MISCREG_PMXEVTYPER_PMCCFILTR
@ MISCREG_PMXEVTYPER_PMCCFILTR
Definition: misc.hh:95
gem5::ArmISA::ISA::setMiscRegReset
void setMiscRegReset(RegIndex, RegVal val)
Definition: isa.cc:1354
gem5::ArmISA::MISCREG_SPSR_EL2
@ MISCREG_SPSR_EL2
Definition: misc.hh:631
gem5::ArmISA::ISA::handleLockedWrite
bool handleLockedWrite(const RequestPtr &req, Addr cacheBlockMask) override
Definition: isa.cc:1806
flags
uint8_t flags
Definition: helpers.cc:66
gem5::ArmISA::ISA::getGICv3CPUInterface
BaseISADevice & getGICv3CPUInterface()
Definition: isa.cc:1382
gem5::ArmISA::MISCREG_BANKED
@ MISCREG_BANKED
Definition: misc.hh:1152
gem5::ArmISA::ISA::mapIntRegId
const RegId & mapIntRegId(RegIndex idx) const
Definition: isa.hh:167
gem5::ArmISA::MODE_USER
@ MODE_USER
Definition: types.hh:288
gem5::ArmISA::ISA::startup
void startup() override
startup() is the final initialization call before simulation.
Definition: isa.cc:148
std::pair< int, int >
gem5::ArmISA::ISA::readMiscReg
RegVal readMiscReg(RegIndex idx) override
Definition: isa.cc:398
gem5::ArmISA::ISA::getGenericTimer
BaseISADevice & getGenericTimer()
Definition: isa.cc:1361
gem5::ArmISA::MISCREG_SPSR_EL1
@ MISCREG_SPSR_EL1
Definition: misc.hh:618
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::ArmISA::int_reg::RegFiqMap
const RegMap RegFiqMap
Definition: int.hh:549
gem5::ArmISA::MISCREG_NMRR
@ MISCREG_NMRR
Definition: misc.hh:380
gem5::ArmISA::MiscRegIndex
MiscRegIndex
Definition: misc.hh:64
gem5::ArmISA::ISA::decoderFlavor
enums::DecoderFlavor decoderFlavor() const
Definition: isa.hh:400
pcstate.hh
gem5::ArmISA::ISA::initializeMiscRegMetadata
void initializeMiscRegMetadata()
Definition: misc.cc:2289
gem5::ArmISA::ISA::getCurSmeVecLenInBits
unsigned getCurSmeVecLenInBits() const
Definition: isa.cc:1490
gem5::ArmISA::int_reg::RegAbtMap
const RegMap RegAbtMap
Definition: int.hh:507
utility.hh
gem5::ArmISA::ISA::highestELIs64
bool highestELIs64
Definition: isa.hh:92
gem5::ArmISA::MISCREG_MAIR0
@ MISCREG_MAIR0
Definition: misc.hh:377
gem5::ArmRelease
Definition: system.hh:69
gem5::X86ISA::reg
Bitfield< 5, 3 > reg
Definition: types.hh:92
gem5::ArmISA::ISA::setupThreadContext
void setupThreadContext()
Definition: isa.cc:163
gem5::ArmISA::MISCREG_SPSR_EL3
@ MISCREG_SPSR_EL3
Definition: misc.hh:638
isa.hh
gem5::ArmISA::ISA::_decoderFlavor
const enums::DecoderFlavor _decoderFlavor
Definition: isa.hh:77
gem5::ArmISA::MMU::ArmTranslationType
ArmTranslationType
Definition: mmu.hh:114
gem5::ArmSystem
Definition: system.hh:92
gem5::ArmISA::MiscRegLUTEntryInitializer
Metadata table accessible via the value of the register.
Definition: misc.hh:1239
gem5::ArmISA::MODE_EL0T
@ MODE_EL0T
Definition: types.hh:281
gem5::ArmISA::ISA::setMiscRegNoEffect
void setMiscRegNoEffect(RegIndex idx, RegVal val) override
Definition: isa.cc:633
gem5::ArmISA::MISCREG_SPSR_SVC
@ MISCREG_SPSR_SVC
Definition: misc.hh:70
gem5::ArmISA::ISA::InitReg
const MiscRegLUTEntryInitializer InitReg(uint32_t reg)
Definition: isa.hh:114
gem5::ArmISA::ISA::readMiscRegReset
RegVal readMiscRegReset(RegIndex) const
Definition: isa.cc:1347
gem5::ArmISA::ISA::miscRegs
RegVal miscRegs[NUM_MISCREGS]
Definition: isa.hh:125
misc.hh
gem5::ArmISA::ISA::smeVL
unsigned smeVL
SME vector length in quadwords.
Definition: isa.hh:100
gem5::ArmISA::DummyISADevice
Dummy device that prints a warning when it is accessed.
Definition: isa_device.hh:97
gem5::ArmISA::ISA::getSelfDebug
SelfDebug * getSelfDebug() const
Definition: isa.hh:180
gem5::ArmISA::int_reg::RegIrqMap
const RegMap RegIrqMap
Definition: int.hh:535
gem5::ArmISA::ISA::system
ArmSystem * system
Definition: isa.hh:74
gem5::ArmISA::MODE_SYSTEM
@ MODE_SYSTEM
Definition: types.hh:296
gem5::ArmISA::inUserMode
static bool inUserMode(CPSR cpsr)
Definition: utility.hh:97
gem5::ExecContext
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
Definition: exec_context.hh:71
gem5::ArmISA::MISCREG_SPSR_ABT
@ MISCREG_SPSR_ABT
Definition: misc.hh:72
gem5::ArmISA::ISA::getExecutingAsid
uint64_t getExecutingAsid() const override
Definition: isa.hh:407
gem5::CheckpointOut
std::ostream CheckpointOut
Definition: serialize.hh:66
gem5::ArmISA::MISCREG_PMXEVTYPER
@ MISCREG_PMXEVTYPER
Definition: misc.hh:365
gem5::ArmISA::int_reg::RegUndMap
const RegMap RegUndMap
Definition: int.hh:521
gem5::ArmISA::ISA::physAddrRange
uint8_t physAddrRange
Definition: isa.hh:94
gem5::PCStateBase
Definition: pcstate.hh:57
gem5::ArmISA::ISA::redirectRegVHE
int redirectRegVHE(int misc_reg)
Returns the enconcing equivalent when VHE is implemented and HCR_EL2.E2H is enabled and executing at ...
Definition: isa.cc:228
gem5::ThreadContext::getIsaPtr
virtual BaseISA * getIsaPtr() const =0
self_debug.hh
gem5::BaseISA
Definition: isa.hh:58
gem5::RegIndex
uint16_t RegIndex
Definition: types.hh:176
gem5::ArmISA::MODE_ABORT
@ MODE_ABORT
Definition: types.hh:293
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::ArmISA::ISA::readMiscRegNoEffect
RegVal readMiscRegNoEffect(RegIndex idx) const override
Definition: isa.cc:374
gem5::ArmISA::MISCREG_NMRR_MAIR1_S
@ MISCREG_NMRR_MAIR1_S
Definition: misc.hh:94
gem5::ArmISA::ISA::getRelease
const ArmRelease * getRelease() const
Definition: isa.hh:192
int.hh
gem5::ArmISA::int_reg::RegUsrMap
const RegMap RegUsrMap
Definition: int.hh:451
gem5::ArmISA::MISCREG_SPSR_HYP
@ MISCREG_SPSR_HYP
Definition: misc.hh:73
gem5::ArmISA::MISCREG_BANKED_CHILD
@ MISCREG_BANKED_CHILD
Definition: misc.hh:1158
gem5::ArmISA::ISA::inSecureState
bool inSecureState() const
Return true if the PE is in Secure state.
Definition: isa.cc:1407
gem5::RegId
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:92
gem5::ArmISA::ISA::impdefAsNop
bool impdefAsNop
If true, accesses to IMPLEMENTATION DEFINED registers are treated as NOP hence not causing UNDEFINED ...
Definition: isa.hh:109
gem5::ArmISA::ExceptionLevel
ExceptionLevel
Definition: types.hh:271
panic
#define panic(...)
This implements a cprintf based panic() function.
Definition: logging.hh:188
gem5::ArmISA::ISA::clear
void clear() override
Definition: isa.cc:133
gem5::ArmISA::BaseISADevice
Base class for devices that use the MiscReg interfaces.
Definition: isa_device.hh:61
gem5::ArmISA::mode
Bitfield< 4, 0 > mode
Definition: misc_types.hh:74
gem5::ArmISA::ISA::flattenMiscIndex
int flattenMiscIndex(int reg) const
Definition: isa.hh:203
gem5::ArmISA::MISCREG_SPSR_UND
@ MISCREG_SPSR_UND
Definition: misc.hh:74

Generated on Sun Jul 30 2023 01:56:47 for gem5 by doxygen 1.8.17