gem5  v20.1.0.0
faults.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010, 2012-2013, 2016-2019 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) 2003-2005 The Regents of The University of Michigan
15  * Copyright (c) 2007-2008 The Florida State University
16  * All rights reserved.
17  *
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions are
20  * met: redistributions of source code must retain the above copyright
21  * notice, this list of conditions and the following disclaimer;
22  * redistributions in binary form must reproduce the above copyright
23  * notice, this list of conditions and the following disclaimer in the
24  * documentation and/or other materials provided with the distribution;
25  * neither the name of the copyright holders nor the names of its
26  * contributors may be used to endorse or promote products derived from
27  * this software without specific prior written permission.
28  *
29  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40  */
41 
42 #ifndef __ARM_FAULTS_HH__
43 #define __ARM_FAULTS_HH__
44 
45 #include "arch/arm/miscregs.hh"
46 #include "arch/arm/pagetable.hh"
47 #include "arch/arm/types.hh"
48 #include "base/logging.hh"
49 #include "sim/faults.hh"
50 #include "sim/full_system.hh"
51 
52 // The design of the "name" and "vect" functions is in sim/faults.hh
53 
54 namespace ArmISA
55 {
56 typedef Addr FaultOffset;
57 
58 class ArmStaticInst;
59 
60 class ArmFault : public FaultBase
61 {
62  protected:
64  uint32_t issRaw;
65 
66  // Helper variables for ARMv8 exception handling
67  bool bStep; // True if the Arm Faul exception is a software Step exception
68  bool from64; // True if the exception is generated from the AArch64 state
69  bool to64; // True if the exception is taken in AArch64 state
70  ExceptionLevel fromEL; // Source exception level
71  ExceptionLevel toEL; // Target exception level
72  OperatingMode fromMode; // Source operating mode (aarch32)
73  OperatingMode toMode; // Next operating mode (aarch32)
74 
75  // This variable is true if the above fault specific informations
76  // have been updated. This is to prevent that a client is using their
77  // un-updated default constructed value.
79 
80  bool hypRouted; // True if the fault has been routed to Hypervisor
81  bool span; // True if the fault is setting the PSTATE.PAN bit
82 
83  virtual Addr getVector(ThreadContext *tc);
85 
86  public:
92  {
94  InstructionCacheMaintenance, // Short-desc. format only
103  TLBConflictAbort, // Requires LPAE
107  AddressSizeLL, // AArch64 only
108 
109  // Not real faults. These are faults to allow the translation function
110  // to inform the memory access function not to proceed for a prefetch
111  // that misses in the TLB or that targets an uncacheable address
114 
117  };
118 
127 
129  {
130  S1PTW, // DataAbort, PrefetchAbort: Stage 1 Page Table Walk,
131  OVA, // DataAbort, PrefetchAbort: stage 1 Virtual Address for stage 2 faults
132  SAS, // DataAbort: Syndrome Access Size
133  SSE, // DataAbort: Syndrome Sign Extend
134  SRT, // DataAbort: Syndrome Register Transfer
135  CM, // DataAbort: Cache Maintenance/Address Translation Op
136  OFA, // DataAbort: Override fault Address. This is needed when
137  // the abort is triggered by a CMO. The faulting address is
138  // then the address specified in the register argument of the
139  // instruction and not the cacheline address (See FAR doc)
140 
141  // AArch64 only
142  SF, // DataAbort: width of the accessed register is SixtyFour
143  AR // DataAbort: Acquire/Release semantics
144  };
145 
147  {
151  };
152 
154  {
155  NODEBUG = 0,
160  };
161 
162  struct FaultVals
163  {
165 
167 
168  // Offsets used for exceptions taken in AArch64 state
169  const uint16_t currELTOffset;
170  const uint16_t currELHOffset;
171  const uint16_t lowerEL64Offset;
172  const uint16_t lowerEL32Offset;
173 
175 
176  const uint8_t armPcOffset;
177  const uint8_t thumbPcOffset;
178  // The following two values are used in place of armPcOffset and
179  // thumbPcOffset when the exception return address is saved into ELR
180  // registers (exceptions taken in HYP mode or in AArch64 state)
181  const uint8_t armPcElrOffset;
182  const uint8_t thumbPcElrOffset;
183 
184  const bool hypTrappable;
185  const bool abortDisable;
186  const bool fiqDisable;
187 
188  // Exception class used to appropriately set the syndrome register
189  // (exceptions taken in HYP mode or in AArch64 state)
191 
193  FaultVals(const FaultName& name_, const FaultOffset& offset_,
194  const uint16_t& currELTOffset_, const uint16_t& currELHOffset_,
195  const uint16_t& lowerEL64Offset_,
196  const uint16_t& lowerEL32Offset_,
197  const OperatingMode& nextMode_, const uint8_t& armPcOffset_,
198  const uint8_t& thumbPcOffset_, const uint8_t& armPcElrOffset_,
199  const uint8_t& thumbPcElrOffset_, const bool& hypTrappable_,
200  const bool& abortDisable_, const bool& fiqDisable_,
201  const ExceptionClass& ec_)
202  : name(name_), offset(offset_), currELTOffset(currELTOffset_),
203  currELHOffset(currELHOffset_), lowerEL64Offset(lowerEL64Offset_),
204  lowerEL32Offset(lowerEL32Offset_), nextMode(nextMode_),
205  armPcOffset(armPcOffset_), thumbPcOffset(thumbPcOffset_),
206  armPcElrOffset(armPcElrOffset_), thumbPcElrOffset(thumbPcElrOffset_),
207  hypTrappable(hypTrappable_), abortDisable(abortDisable_),
208  fiqDisable(fiqDisable_), ec(ec_) {}
209  };
210 
211  ArmFault(ExtMachInst _machInst = 0, uint32_t _iss = 0) :
212  machInst(_machInst), issRaw(_iss), bStep(false), from64(false),
214  faultUpdated(false), hypRouted(false), span(false) {}
215 
216  // Returns the actual syndrome register to use based on the target
217  // exception level
219  // Returns the actual fault address register to use based on the target
220  // exception level
222 
223  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
225  void invoke64(ThreadContext *tc, const StaticInstPtr &inst =
227  void update(ThreadContext *tc);
228  bool isResetSPSR(){ return bStep; }
229 
230  bool vectorCatch(ThreadContext *tc, const StaticInstPtr &inst);
231 
233  virtual void annotate(AnnotationIDs id, uint64_t val) {}
234  virtual FaultStat& countStat() = 0;
235  virtual FaultOffset offset(ThreadContext *tc) = 0;
236  virtual FaultOffset offset64(ThreadContext *tc) = 0;
237  virtual OperatingMode nextMode() = 0;
238  virtual bool routeToMonitor(ThreadContext *tc) const = 0;
239  virtual bool routeToHyp(ThreadContext *tc) const { return false; }
240  virtual uint8_t armPcOffset(bool isHyp) = 0;
241  virtual uint8_t thumbPcOffset(bool isHyp) = 0;
242  virtual uint8_t armPcElrOffset() = 0;
243  virtual uint8_t thumbPcElrOffset() = 0;
244  virtual bool abortDisable(ThreadContext *tc) = 0;
245  virtual bool fiqDisable(ThreadContext *tc) = 0;
246  virtual ExceptionClass ec(ThreadContext *tc) const = 0;
247  virtual uint32_t vectorCatchFlag() const { return 0x0; }
248  virtual uint32_t iss() const = 0;
249  virtual bool isStage2() const { return false; }
250  virtual FSR getFsr(ThreadContext *tc) const { return 0; }
251  virtual void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg);
252  virtual bool getFaultVAddr(Addr &va) const { return false; }
253  OperatingMode getToMode() const { return toMode; }
254 };
255 
256 template<typename T>
257 class ArmFaultVals : public ArmFault
258 {
259  protected:
260  static FaultVals vals;
261 
262  public:
263  ArmFaultVals<T>(ExtMachInst _machInst = 0, uint32_t _iss = 0) :
264  ArmFault(_machInst, _iss) {}
265  FaultName name() const override { return vals.name; }
266  FaultStat & countStat() override { return vals.count; }
267  FaultOffset offset(ThreadContext *tc) override;
268 
269  FaultOffset offset64(ThreadContext *tc) override;
270 
271  OperatingMode nextMode() override { return vals.nextMode; }
272  virtual bool routeToMonitor(ThreadContext *tc) const override {
273  return false;
274  }
275  uint8_t armPcOffset(bool isHyp) override {
276  return isHyp ? vals.armPcElrOffset
277  : vals.armPcOffset;
278  }
279  uint8_t thumbPcOffset(bool isHyp) override {
280  return isHyp ? vals.thumbPcElrOffset
282  }
283  uint8_t armPcElrOffset() override { return vals.armPcElrOffset; }
284  uint8_t thumbPcElrOffset() override { return vals.thumbPcElrOffset; }
285  bool abortDisable(ThreadContext* tc) override { return vals.abortDisable; }
286  bool fiqDisable(ThreadContext* tc) override { return vals.fiqDisable; }
287  ExceptionClass ec(ThreadContext *tc) const override { return vals.ec; }
288  uint32_t iss() const override { return issRaw; }
289 };
290 
291 class Reset : public ArmFaultVals<Reset>
292 {
293  protected:
294  Addr getVector(ThreadContext *tc) override;
295 
296  public:
297  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
299 };
300 
301 class UndefinedInstruction : public ArmFaultVals<UndefinedInstruction>
302 {
303  protected:
304  bool unknown;
305  bool disabled;
307  const char *mnemonic;
308 
309  public:
311  bool _unknown,
312  const char *_mnemonic = NULL,
313  bool _disabled = false) :
315  unknown(_unknown), disabled(_disabled),
316  overrideEc(EC_INVALID), mnemonic(_mnemonic)
317  {}
318  UndefinedInstruction(ExtMachInst _machInst, uint32_t _iss,
319  ExceptionClass _overrideEc, const char *_mnemonic = NULL) :
320  ArmFaultVals<UndefinedInstruction>(_machInst, _iss),
321  unknown(false), disabled(true), overrideEc(_overrideEc),
322  mnemonic(_mnemonic)
323  {}
324 
325  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
327  bool routeToHyp(ThreadContext *tc) const override;
328  ExceptionClass ec(ThreadContext *tc) const override;
329  uint32_t iss() const override;
330  uint32_t vectorCatchFlag() const override { return 0x02000002; }
331 };
332 
333 class SupervisorCall : public ArmFaultVals<SupervisorCall>
334 {
335  protected:
337  public:
338  SupervisorCall(ExtMachInst _machInst, uint32_t _iss,
339  ExceptionClass _overrideEc = EC_INVALID) :
340  ArmFaultVals<SupervisorCall>(_machInst, _iss),
341  overrideEc(_overrideEc)
342  {
343  bStep = true;
344  }
345 
346  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
348  bool routeToHyp(ThreadContext *tc) const override;
349  ExceptionClass ec(ThreadContext *tc) const override;
350  uint32_t iss() const override;
351  uint32_t vectorCatchFlag() const override { return 0x04000404; }
352 };
353 
354 class SecureMonitorCall : public ArmFaultVals<SecureMonitorCall>
355 {
356  public:
358  ArmFaultVals<SecureMonitorCall>(_machInst)
359  {
360  bStep = true;
361  }
362 
363  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
365  ExceptionClass ec(ThreadContext *tc) const override;
366  uint32_t iss() const override;
367  uint32_t vectorCatchFlag() const override { return 0x00000400; }
368 };
369 
370 class SupervisorTrap : public ArmFaultVals<SupervisorTrap>
371 {
372  protected:
375 
376  public:
377  SupervisorTrap(ExtMachInst _machInst, uint32_t _iss,
378  ExceptionClass _overrideEc = EC_INVALID) :
379  ArmFaultVals<SupervisorTrap>(_machInst, _iss),
380  overrideEc(_overrideEc)
381  {}
382 
383  bool routeToHyp(ThreadContext *tc) const override;
384  uint32_t iss() const override;
385  ExceptionClass ec(ThreadContext *tc) const override;
386 };
387 
388 class SecureMonitorTrap : public ArmFaultVals<SecureMonitorTrap>
389 {
390  protected:
393 
394  public:
395  SecureMonitorTrap(ExtMachInst _machInst, uint32_t _iss,
396  ExceptionClass _overrideEc = EC_INVALID) :
397  ArmFaultVals<SecureMonitorTrap>(_machInst, _iss),
398  overrideEc(_overrideEc)
399  {}
400 
401  ExceptionClass ec(ThreadContext *tc) const override;
402 };
403 
404 class HypervisorCall : public ArmFaultVals<HypervisorCall>
405 {
406  public:
407  HypervisorCall(ExtMachInst _machInst, uint32_t _imm);
408 
409  bool routeToHyp(ThreadContext *tc) const override;
410  bool routeToMonitor(ThreadContext *tc) const override;
411  ExceptionClass ec(ThreadContext *tc) const override;
412  uint32_t vectorCatchFlag() const override { return 0xFFFFFFFF; }
413 };
414 
415 class HypervisorTrap : public ArmFaultVals<HypervisorTrap>
416 {
417  protected:
420 
421  public:
422  HypervisorTrap(ExtMachInst _machInst, uint32_t _iss,
423  ExceptionClass _overrideEc = EC_INVALID) :
424  ArmFaultVals<HypervisorTrap>(_machInst, _iss),
425  overrideEc(_overrideEc)
426  {}
427 
428  ExceptionClass ec(ThreadContext *tc) const override;
429 };
430 
431 template <class T>
432 class AbortFault : public ArmFaultVals<T>
433 {
434  protected:
448  bool write;
450  uint8_t source;
451  uint8_t srcEncoded;
452  bool stage2;
453  bool s1ptw;
456 
457  public:
458  AbortFault(Addr _faultAddr, bool _write, TlbEntry::DomainType _domain,
459  uint8_t _source, bool _stage2,
462  faultAddr(_faultAddr), OVAddr(0), write(_write),
463  domain(_domain), source(_source), srcEncoded(0),
464  stage2(_stage2), s1ptw(false), tranMethod(_tranMethod), debug(_debug)
465  {}
466 
467  bool getFaultVAddr(Addr &va) const override;
468 
469  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
471 
472  FSR getFsr(ThreadContext *tc) const override;
473  uint8_t getFaultStatusCode(ThreadContext *tc) const;
474  bool abortDisable(ThreadContext *tc) override;
475  uint32_t iss() const override;
476  bool isStage2() const override { return stage2; }
477  void annotate(ArmFault::AnnotationIDs id, uint64_t val) override;
478  void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg) override;
479  bool isMMUFault() const;
480 };
481 
482 class PrefetchAbort : public AbortFault<PrefetchAbort>
483 {
484  public:
488 
489  PrefetchAbort(Addr _addr, uint8_t _source, bool _stage2 = false,
492  AbortFault<PrefetchAbort>(_addr, false, TlbEntry::DomainType::NoAccess,
493  _source, _stage2, _tranMethod, _debug)
494  {}
495 
496  ExceptionClass ec(ThreadContext *tc) const override;
497  // @todo: external aborts should be routed if SCR.EA == 1
498  bool routeToMonitor(ThreadContext *tc) const override;
499  bool routeToHyp(ThreadContext *tc) const override;
500  uint32_t vectorCatchFlag() const override { return 0x08000808; }
501 };
502 
503 class DataAbort : public AbortFault<DataAbort>
504 {
505  public:
509  bool isv;
510  uint8_t sas;
511  uint8_t sse;
512  uint8_t srt;
513  uint8_t cm;
514 
515  // AArch64 only
516  bool sf;
517  bool ar;
518 
519  DataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source,
520  bool _stage2=false,
523  AbortFault<DataAbort>(_addr, _write, _domain, _source, _stage2,
524  _tranMethod, _debug_type),
525  isv(false), sas (0), sse(0), srt(0), cm(0), sf(false), ar(false)
526  {}
527 
528  ExceptionClass ec(ThreadContext *tc) const override;
529  // @todo: external aborts should be routed if SCR.EA == 1
530  bool routeToMonitor(ThreadContext *tc) const override;
531  bool routeToHyp(ThreadContext *tc) const override;
532  uint32_t iss() const override;
533  void annotate(AnnotationIDs id, uint64_t val) override;
534  uint32_t vectorCatchFlag() const override { return 0x10001010; }
535 };
536 
537 class VirtualDataAbort : public AbortFault<VirtualDataAbort>
538 {
539  public:
543 
544  VirtualDataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write,
545  uint8_t _source) :
546  AbortFault<VirtualDataAbort>(_addr, _write, _domain, _source, false)
547  {}
548 
549  void invoke(ThreadContext *tc, const StaticInstPtr &inst) override;
550 };
551 
552 class Interrupt : public ArmFaultVals<Interrupt>
553 {
554  public:
555  bool routeToMonitor(ThreadContext *tc) const override;
556  bool routeToHyp(ThreadContext *tc) const override;
557  bool abortDisable(ThreadContext *tc) override;
558  uint32_t vectorCatchFlag() const override { return 0x40004040; }
559 };
560 
561 class VirtualInterrupt : public ArmFaultVals<VirtualInterrupt>
562 {
563  public:
565 };
566 
567 class FastInterrupt : public ArmFaultVals<FastInterrupt>
568 {
569  public:
570  bool routeToMonitor(ThreadContext *tc) const override;
571  bool routeToHyp(ThreadContext *tc) const override;
572  bool abortDisable(ThreadContext *tc) override;
573  bool fiqDisable(ThreadContext *tc) override;
574  uint32_t vectorCatchFlag() const override { return 0x80008080; }
575 };
576 
577 class VirtualFastInterrupt : public ArmFaultVals<VirtualFastInterrupt>
578 {
579  public:
581 };
582 
584 class PCAlignmentFault : public ArmFaultVals<PCAlignmentFault>
585 {
586  protected:
589  public:
590  PCAlignmentFault(Addr _faultPC) : faultPC(_faultPC)
591  {}
592  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
594  bool routeToHyp(ThreadContext *tc) const override;
595 };
596 
598 class SPAlignmentFault : public ArmFaultVals<SPAlignmentFault>
599 {
600  public:
602  bool routeToHyp(ThreadContext *tc) const override;
603 };
604 
606 class SystemError : public ArmFaultVals<SystemError>
607 {
608  public:
609  SystemError();
610  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
612  bool routeToMonitor(ThreadContext *tc) const override;
613  bool routeToHyp(ThreadContext *tc) const override;
614 };
615 
617 class SoftwareBreakpoint : public ArmFaultVals<SoftwareBreakpoint>
618 {
619  public:
620  SoftwareBreakpoint(ExtMachInst _mach_inst, uint32_t _iss);
621 
622  bool routeToHyp(ThreadContext *tc) const override;
623  ExceptionClass ec(ThreadContext *tc) const override;
624 };
625 
626 class HardwareBreakpoint : public ArmFaultVals<HardwareBreakpoint>
627 {
628  private:
630  public:
631  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
633  HardwareBreakpoint(Addr _vaddr, uint32_t _iss);
634  bool routeToHyp(ThreadContext *tc) const override;
635  ExceptionClass ec(ThreadContext *tc) const override;
636 };
637 
638 class Watchpoint : public ArmFaultVals<Watchpoint>
639 {
640  private:
642  bool write;
643  bool cm;
644 
645  public:
646  Watchpoint(ExtMachInst _mach_inst, Addr _vaddr, bool _write, bool _cm);
647  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
649  bool routeToHyp(ThreadContext *tc) const override;
650  uint32_t iss() const override;
651  ExceptionClass ec(ThreadContext *tc) const override;
652  void annotate(AnnotationIDs id, uint64_t val) override;
653 };
654 
655 class SoftwareStepFault : public ArmFaultVals<SoftwareStepFault>
656 {
657  private:
658  bool isldx;
659  bool stepped;
660 
661  public:
662  SoftwareStepFault(ExtMachInst _mach_inst, bool is_ldx, bool stepped);
663  bool routeToHyp(ThreadContext *tc) const override;
664  uint32_t iss() const override;
665  ExceptionClass ec(ThreadContext *tc) const override;
666 };
667 
668 // A fault that flushes the pipe, excluding the faulting instructions
669 class ArmSev : public ArmFaultVals<ArmSev>
670 {
671  public:
672  ArmSev () {}
673  void invoke(ThreadContext *tc, const StaticInstPtr &inst =
675 };
676 
678 class IllegalInstSetStateFault : public ArmFaultVals<IllegalInstSetStateFault>
679 {
680  public:
682 
683  bool routeToHyp(ThreadContext *tc) const override;
684 };
685 
686 /*
687  * Explicitly declare template static member variables to avoid warnings
688  * in some clang versions
689  */
714 
725 bool getFaultVAddr(Fault fault, Addr &va);
726 
727 
728 } // namespace ArmISA
729 
730 #endif // __ARM_FAULTS_HH__
ArmISA::ArmFault::SynchronousExternalAbort
@ SynchronousExternalAbort
Definition: faults.hh:102
ArmISA::SupervisorCall::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:886
ArmISA::SecureMonitorCall::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1013
ArmISA::AbortFault::getFaultVAddr
bool getFaultVAddr(Addr &va) const override
Definition: faults.cc:1264
ArmISA::DataAbort::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:534
ArmISA::ArmFault::NumFaultSources
@ NumFaultSources
Definition: faults.hh:115
ArmISA::getFaultVAddr
bool getFaultVAddr(Fault fault, Addr &va)
Returns true if the fault passed as a first argument was triggered by a memory access,...
Definition: faults.cc:1828
ArmISA::ArmFault::WPOINT_NOCM
@ WPOINT_NOCM
Definition: faults.hh:159
ArmISA::ArmFault::SAS
@ SAS
Definition: faults.hh:132
ArmISA::ArmFault::from64
bool from64
Definition: faults.hh:68
ArmISA::VirtualDataAbort
Definition: faults.hh:537
ArmISA::Watchpoint::vAddr
Addr vAddr
Definition: faults.hh:641
ArmISA::EC_INVALID
@ EC_INVALID
Definition: types.hh:649
ArmISA::MODE_UNDEFINED
@ MODE_UNDEFINED
Definition: types.hh:643
ArmISA::DataAbort::FarIndex
static const MiscRegIndex FarIndex
Definition: faults.hh:507
ArmISA::DataAbort::iss
uint32_t iss() const override
Definition: faults.cc:1388
ArmISA::SPAlignmentFault::SPAlignmentFault
SPAlignmentFault()
Definition: faults.cc:1555
ArmISA::ArmSev
Definition: faults.hh:669
ArmISA::ArmFault::BRKPOINT
@ BRKPOINT
Definition: faults.hh:156
ArmISA::ArmFault::aarch64FaultSources
static uint8_t aarch64FaultSources[NumFaultSources]
Encodings of the fault sources in AArch64 state.
Definition: faults.hh:126
ArmISA::DataAbort::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:1352
ArmISA::DataAbort::sse
uint8_t sse
Definition: faults.hh:511
ArmISA::ArmFault::VmsaTran
@ VmsaTran
Definition: faults.hh:149
ArmISA::IllegalInstSetStateFault
Illegal Instruction Set State fault (AArch64 only)
Definition: faults.hh:678
ArmISA::ArmFault::routeToMonitor
virtual bool routeToMonitor(ThreadContext *tc) const =0
ArmISA::HypervisorCall::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:412
ArmISA::ArmFaultVals::offset
FaultOffset offset(ThreadContext *tc) override
Definition: faults.cc:952
ArmISA::ArmFault::FaultVals::ec
const ExceptionClass ec
Definition: faults.hh:190
ArmISA::HypervisorTrap::overrideEc
ExceptionClass overrideEc
Definition: faults.hh:419
ArmISA::SupervisorTrap
Definition: faults.hh:370
ArmISA::ArmFault::getVector64
Addr getVector64(ThreadContext *tc)
Definition: faults.cc:340
ArmISA::SoftwareStepFault::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1750
ArmISA::ArmFault::iss
virtual uint32_t iss() const =0
ArmISA::DataAbort::FsrIndex
static const MiscRegIndex FsrIndex
Definition: faults.hh:506
ArmISA::SecureMonitorCall
Definition: faults.hh:354
ArmISA::EL0
@ EL0
Definition: types.hh:622
ArmISA::SupervisorTrap::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1045
ArmISA::Interrupt::abortDisable
bool abortDisable(ThreadContext *tc) override
Definition: faults.cc:1482
ArmISA::SecureMonitorTrap::machInst
ExtMachInst machInst
Definition: faults.hh:391
ArmISA::ArmFault::thumbPcOffset
virtual uint8_t thumbPcOffset(bool isHyp)=0
ArmISA::HypervisorCall
Definition: faults.hh:404
ArmISA::Watchpoint::iss
uint32_t iss() const override
Definition: faults.cc:1674
ArmISA::SPAlignmentFault
Stack pointer alignment fault (AArch64 only)
Definition: faults.hh:598
ArmISA::ArmSev::ArmSev
ArmSev()
Definition: faults.hh:672
ArmISA::DataAbort::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1364
pagetable.hh
ArmISA::HypervisorCall::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:939
ArmISA::ArmFault::CM
@ CM
Definition: faults.hh:135
ArmISA::SupervisorTrap::overrideEc
ExceptionClass overrideEc
Definition: faults.hh:374
ArmISA::UndefinedInstruction::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:822
ArmISA::OperatingMode
OperatingMode
Definition: types.hh:628
ArmISA::ArmFaultVals::countStat
FaultStat & countStat() override
Definition: faults.hh:266
ArmISA::ArmFault::AlignmentFault
@ AlignmentFault
Definition: faults.hh:93
ArmISA::SoftwareStepFault::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1740
ArmISA::ArmFault::AnnotationIDs
AnnotationIDs
Definition: faults.hh:128
ArmISA::ArmFault::FaultSourceInvalid
@ FaultSourceInvalid
Definition: faults.hh:116
ArmISA::ArmFault::S1PTW
@ S1PTW
Definition: faults.hh:130
ArmISA::UndefinedInstruction::disabled
bool disabled
Definition: faults.hh:305
ArmISA::ArmFault::PrefetchUncacheable
@ PrefetchUncacheable
Definition: faults.hh:113
ArmISA::ArmFault::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:486
ArmISA::ArmFaultVals::iss
uint32_t iss() const override
Definition: faults.hh:288
ArmISA::SupervisorTrap::SupervisorTrap
SupervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
Definition: faults.hh:377
ArmISA::ArmFault::VECTORCATCH
@ VECTORCATCH
Definition: faults.hh:157
ArmISA::UndefinedInstruction::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:799
ArmISA::UndefinedInstruction::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:909
ArmISA::SupervisorCall::SupervisorCall
SupervisorCall(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
Definition: faults.hh:338
ArmISA::PrefetchAbort::HFarIndex
static const MiscRegIndex HFarIndex
Definition: faults.hh:487
ArmISA::PrefetchAbort
Definition: faults.hh:482
ArmISA::VirtualDataAbort::VirtualDataAbort
VirtualDataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source)
Definition: faults.hh:544
ArmISA::AbortFault::domain
TlbEntry::DomainType domain
Definition: faults.hh:449
ArmISA::VirtualDataAbort::HFarIndex
static const MiscRegIndex HFarIndex
Definition: faults.hh:542
ArmISA::PrefetchAbort::PrefetchAbort
PrefetchAbort(Addr _addr, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
Definition: faults.hh:489
ArmISA::ArmFault::WPOINT_CM
@ WPOINT_CM
Definition: faults.hh:158
ArmISA::ArmFault::getFaultAddrReg64
MiscRegIndex getFaultAddrReg64() const
Definition: faults.cc:379
ArmISA::ArmFault::UnknownTran
@ UnknownTran
Definition: faults.hh:150
ArmISA::UndefinedInstruction::mnemonic
const char * mnemonic
Definition: faults.hh:307
ArmISA::IllegalInstSetStateFault::IllegalInstSetStateFault
IllegalInstSetStateFault()
Definition: faults.cc:1817
ArmISA::AbortFault::isStage2
bool isStage2() const override
Definition: faults.hh:476
ArmISA::ArmFault::getVector
virtual Addr getVector(ThreadContext *tc)
Definition: faults.cc:308
ArmISA::Watchpoint
Definition: faults.hh:638
ArmISA::SoftwareBreakpoint::SoftwareBreakpoint
SoftwareBreakpoint(ExtMachInst _mach_inst, uint32_t _iss)
Definition: faults.cc:1597
ArmISA::DataAbort::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1323
ArmISA::Watchpoint::annotate
void annotate(AnnotationIDs id, uint64_t val) override
Definition: faults.cc:1707
ArmISA::HardwareBreakpoint::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1631
ArmISA::ArmFault::fiqDisable
virtual bool fiqDisable(ThreadContext *tc)=0
ArmISA::ArmFault::AsynchronousExternalAbort
@ AsynchronousExternalAbort
Definition: faults.hh:105
ArmISA::ArmFault::isStage2
virtual bool isStage2() const
Definition: faults.hh:249
ArmISA::ArmFault::hypRouted
bool hypRouted
Definition: faults.hh:80
ArmISA::UndefinedInstruction::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:330
ArmISA::ArmFault::offset
virtual FaultOffset offset(ThreadContext *tc)=0
ArmISA::ArmFault::FaultVals::name
const FaultName name
Definition: faults.hh:164
ArmISA::SoftwareStepFault::isldx
bool isldx
Definition: faults.hh:658
ArmISA::AbortFault::isMMUFault
bool isMMUFault() const
Definition: faults.cc:1247
ArmISA::ArmFault::faultUpdated
bool faultUpdated
Definition: faults.hh:78
ArmISA::ArmFault::SRT
@ SRT
Definition: faults.hh:134
ArmISA::DataAbort::DataAbort
DataAbort(Addr _addr, TlbEntry::DomainType _domain, bool _write, uint8_t _source, bool _stage2=false, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug_type=ArmFault::NODEBUG)
Definition: faults.hh:519
ArmISA::ArmFault::NODEBUG
@ NODEBUG
Definition: faults.hh:155
ArmISA::PCAlignmentFault::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1540
ArmISA::SecureMonitorCall::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:367
ArmISA::ArmFault::FaultSource
FaultSource
Generic fault source enums used to index into {short/long/aarch64}DescFaultSources[] to get the actua...
Definition: faults.hh:91
faults.hh
ArmISA::PrefetchAbort::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1308
ArmISA::MISCREG_HIFAR
@ MISCREG_HIFAR
Definition: miscregs.hh:284
ArmISA::SystemError::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1570
ArmISA::SoftwareBreakpoint::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1612
ArmISA
Definition: ccregs.hh:41
ArmISA::ArmFault::bStep
bool bStep
Definition: faults.hh:67
types.hh
ArmISA::ArmFault::TLBConflictAbort
@ TLBConflictAbort
Definition: faults.hh:103
ArmISA::UndefinedInstruction::UndefinedInstruction
UndefinedInstruction(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc, const char *_mnemonic=NULL)
Definition: faults.hh:318
ArmISA::ArmFault::vectorCatch
bool vectorCatch(ThreadContext *tc, const StaticInstPtr &inst)
Definition: faults.cc:727
ArmISA::HypervisorCall::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:927
ArmISA::DataAbort::isv
bool isv
Definition: faults.hh:509
ArmISA::Reset::getVector
Addr getVector(ThreadContext *tc) override
Definition: faults.cc:753
ArmISA::AbortFault::s1ptw
bool s1ptw
Definition: faults.hh:453
ArmISA::ArmFault::DebugEvent
@ DebugEvent
Definition: faults.hh:101
ArmISA::FastInterrupt::abortDisable
bool abortDisable(ThreadContext *tc) override
Definition: faults.cc:1515
ArmISA::ArmStaticInst
Definition: static_inst.hh:60
ArmISA::ArmFault::FaultVals::fiqDisable
const bool fiqDisable
Definition: faults.hh:186
ArmISA::VirtualInterrupt::VirtualInterrupt
VirtualInterrupt()
Definition: faults.cc:1491
ArmISA::ArmFault::FaultVals::currELTOffset
const uint16_t currELTOffset
Definition: faults.hh:169
ArmISA::Interrupt::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1474
ArmISA::ArmFault::setSyndrome
virtual void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg)
Definition: faults.cc:395
ArmISA::ArmFault::fromMode
OperatingMode fromMode
Definition: faults.hh:72
Stats::Scalar
This is a simple scalar statistic, like a counter.
Definition: statistics.hh:2533
ArmISA::SecureMonitorTrap::SecureMonitorTrap
SecureMonitorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
Definition: faults.hh:395
ArmISA::SoftwareStepFault::iss
uint32_t iss() const override
Definition: faults.cc:1760
ArmISA::Interrupt::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:558
ArmISA::Interrupt
Definition: faults.hh:552
ArmISA::PCAlignmentFault::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1549
ArmISA::AbortFault::setSyndrome
void setSyndrome(ThreadContext *tc, MiscRegIndex syndrome_reg) override
Definition: faults.cc:1143
ArmISA::ArmFault::ArmFault
ArmFault(ExtMachInst _machInst=0, uint32_t _iss=0)
Definition: faults.hh:211
ArmISA::ArmFault::FaultVals::currELHOffset
const uint16_t currELHOffset
Definition: faults.hh:170
ArmISA::ArmFault::annotate
virtual void annotate(AnnotationIDs id, uint64_t val)
Definition: faults.hh:233
ArmISA::ArmFault::LpaeTran
@ LpaeTran
Definition: faults.hh:148
ArmISA::ArmFault::instrAnnotate
ArmStaticInst * instrAnnotate(const StaticInstPtr &inst)
Definition: faults.cc:741
ArmISA::HypervisorCall::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:933
ArmISA::UndefinedInstruction::iss
uint32_t iss() const override
Definition: faults.cc:830
ArmISA::Watchpoint::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1722
ArmISA::AbortFault::AbortFault
AbortFault(Addr _faultAddr, bool _write, TlbEntry::DomainType _domain, uint8_t _source, bool _stage2, ArmFault::TranMethod _tranMethod=ArmFault::UnknownTran, ArmFault::DebugType _debug=ArmFault::NODEBUG)
Definition: faults.hh:458
ThreadContext
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Definition: thread_context.hh:88
ArmISA::SecureMonitorCall::SecureMonitorCall
SecureMonitorCall(ExtMachInst _machInst)
Definition: faults.hh:357
ArmISA::ArmFault::isResetSPSR
bool isResetSPSR()
Definition: faults.hh:228
ArmISA::AbortFault::debug
ArmFault::DebugType debug
Definition: faults.hh:455
ArmISA::ArmFaultVals::name
FaultName name() const override
Definition: faults.hh:265
ArmISA::ArmFault::AR
@ AR
Definition: faults.hh:143
ArmISA::ArmFaultVals::fiqDisable
bool fiqDisable(ThreadContext *tc) override
Definition: faults.hh:286
ArmISA::ArmFault
Definition: faults.hh:60
ArmISA::ArmFault::countStat
virtual FaultStat & countStat()=0
ArmISA::ArmFaultVals::offset64
FaultOffset offset64(ThreadContext *tc) override
Definition: faults.cc:972
ArmISA::HardwareBreakpoint::vAddr
Addr vAddr
Definition: faults.hh:629
ArmISA::ArmFault::TranslationLL
@ TranslationLL
Definition: faults.hh:97
ArmISA::ArmFaultVals::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.hh:287
ArmISA::ArmFault::offset64
virtual FaultOffset offset64(ThreadContext *tc)=0
ArmISA::ArmFault::FaultVals::thumbPcOffset
const uint8_t thumbPcOffset
Definition: faults.hh:177
ArmISA::ExceptionLevel
ExceptionLevel
Definition: types.hh:621
ArmISA::PCAlignmentFault
PC alignment fault (AArch64 only)
Definition: faults.hh:584
FaultName
const typedef char * FaultName
Definition: faults.hh:49
ArmISA::SPAlignmentFault::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1559
Fault
std::shared_ptr< FaultBase > Fault
Definition: types.hh:240
ArmISA::SystemError::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1586
ArmISA::ArmFault::getSyndromeReg64
MiscRegIndex getSyndromeReg64() const
Definition: faults.cc:363
ArmISA::ArmFault::AddressSizeLL
@ AddressSizeLL
Definition: faults.hh:107
ArmISA::HypervisorCall::HypervisorCall
HypervisorCall(ExtMachInst _machInst, uint32_t _imm)
Definition: faults.cc:920
ArmISA::DataAbort::sas
uint8_t sas
Definition: faults.hh:510
ArmISA::VirtualFastInterrupt
Definition: faults.hh:577
ArmISA::VirtualInterrupt
Definition: faults.hh:561
ArmISA::ArmFault::FaultVals::offset
const FaultOffset offset
Definition: faults.hh:166
ArmISA::HardwareBreakpoint
Definition: faults.hh:626
ArmISA::AbortFault::getFaultStatusCode
uint8_t getFaultStatusCode(ThreadContext *tc) const
Definition: faults.cc:1154
ArmISA::ArmFault::armPcElrOffset
virtual uint8_t armPcElrOffset()=0
ArmISA::ArmFault::FaultVals::count
FaultStat count
Definition: faults.hh:192
ArmISA::ArmFault::machInst
ExtMachInst machInst
Definition: faults.hh:63
ArmISA::MISCREG_DFSR
@ MISCREG_DFSR
Definition: miscregs.hh:262
ArmISA::SupervisorCall::iss
uint32_t iss() const override
Definition: faults.cc:893
ArmISA::ArmFault::invoke64
void invoke64(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
Definition: faults.cc:633
ArmISA::FastInterrupt::fiqDisable
bool fiqDisable(ThreadContext *tc) override
Definition: faults.cc:1525
ArmISA::ArmFault::nextMode
virtual OperatingMode nextMode()=0
ArmISA::ArmFault::issRaw
uint32_t issRaw
Definition: faults.hh:64
ArmISA::ArmFaultVals::vals
static FaultVals vals
Definition: faults.hh:260
ArmISA::SoftwareBreakpoint
System error (AArch64 only)
Definition: faults.hh:617
ArmISA::SystemError::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:1577
ArmISA::ArmFault::span
bool span
Definition: faults.hh:81
ArmISA::PrefetchAbort::FsrIndex
static const MiscRegIndex FsrIndex
Definition: faults.hh:485
ArmISA::AbortFault::getFsr
FSR getFsr(ThreadContext *tc) const override
Definition: faults.cc:1180
ArmISA::ArmFault::FaultVals::thumbPcElrOffset
const uint8_t thumbPcElrOffset
Definition: faults.hh:182
ArmISA::AbortFault::source
uint8_t source
Definition: faults.hh:450
ArmISA::ArmFaultVals::nextMode
OperatingMode nextMode() override
Definition: faults.hh:271
ArmISA::ArmFault::FaultVals
Definition: faults.hh:162
X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:769
ArmISA::SupervisorTrap::iss
uint32_t iss() const override
Definition: faults.cc:1035
ArmISA::ArmFault::vectorCatchFlag
virtual uint32_t vectorCatchFlag() const
Definition: faults.hh:247
ArmISA::SystemError
System error (AArch64 only)
Definition: faults.hh:606
ArmISA::FastInterrupt
Definition: faults.hh:567
ArmISA::MISCREG_IFSR
@ MISCREG_IFSR
Definition: miscregs.hh:265
ArmISA::SupervisorCall::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:878
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
ArmISA::ArmFault::AsynchPtyErrOnMemoryAccess
@ AsynchPtyErrOnMemoryAccess
Definition: faults.hh:106
ArmISA::ArmFault::AccessFlagLL
@ AccessFlagLL
Definition: faults.hh:98
StaticInst::nullStaticInstPtr
static StaticInstPtr nullStaticInstPtr
Pointer to a statically allocated "null" instruction object.
Definition: static_inst.hh:237
ArmISA::ArmFault::to64
bool to64
Definition: faults.hh:69
ArmISA::MISCREG_IFAR
@ MISCREG_IFAR
Definition: miscregs.hh:280
ArmISA::Watchpoint::write
bool write
Definition: faults.hh:642
ArmISA::HardwareBreakpoint::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1622
ArmISA::Watchpoint::cm
bool cm
Definition: faults.hh:643
ArmISA::ArmFault::DebugType
DebugType
Definition: faults.hh:153
ArmISA::HardwareBreakpoint::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1641
ArmISA::ArmFault::FaultVals::lowerEL64Offset
const uint16_t lowerEL64Offset
Definition: faults.hh:171
ArmISA::SystemError::SystemError
SystemError()
Definition: faults.cc:1566
ArmISA::ArmFault::FaultVals::armPcOffset
const uint8_t armPcOffset
Definition: faults.hh:176
full_system.hh
ArmISA::ArmFaultVals::abortDisable
bool abortDisable(ThreadContext *tc) override
Definition: faults.hh:285
ArmISA::SecureMonitorTrap::overrideEc
ExceptionClass overrideEc
Definition: faults.hh:392
ArmISA::ArmFault::FaultVals::hypTrappable
const bool hypTrappable
Definition: faults.hh:184
ArmISA::SupervisorTrap::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1028
miscregs.hh
ArmISA::HypervisorTrap::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:945
ArmISA::AbortFault
Definition: faults.hh:432
ArmISA::ArmFault::toMode
OperatingMode toMode
Definition: faults.hh:73
ArmISA::Reset::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:771
ArmISA::ArmFault::FaultVals::armPcElrOffset
const uint8_t armPcElrOffset
Definition: faults.hh:181
ArmISA::AbortFault::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1062
ArmISA::TlbEntry::DomainType
DomainType
Definition: pagetable.hh:90
ArmISA::ArmFault::fromEL
ExceptionLevel fromEL
Definition: faults.hh:70
ArmISA::ArmFault::OVA
@ OVA
Definition: faults.hh:131
ArmISA::ArmFault::FaultVals::lowerEL32Offset
const uint16_t lowerEL32Offset
Definition: faults.hh:172
ArmISA::TlbEntry
Definition: pagetable.hh:81
ArmISA::ArmFaultVals::armPcOffset
uint8_t armPcOffset(bool isHyp) override
Definition: faults.hh:275
ArmISA::DataAbort::HFarIndex
static const MiscRegIndex HFarIndex
Definition: faults.hh:508
ArmISA::FastInterrupt::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:574
ArmISA::FastInterrupt::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:1495
ArmISA::VirtualFastInterrupt::VirtualFastInterrupt
VirtualFastInterrupt()
Definition: faults.cc:1536
ArmISA::SoftwareStepFault::SoftwareStepFault
SoftwareStepFault(ExtMachInst _mach_inst, bool is_ldx, bool stepped)
Definition: faults.cc:1731
ArmISA::DataAbort::sf
bool sf
Definition: faults.hh:516
ArmISA::PrefetchAbort::FarIndex
static const MiscRegIndex FarIndex
Definition: faults.hh:486
ArmISA::VirtualDataAbort::FsrIndex
static const MiscRegIndex FsrIndex
Definition: faults.hh:540
ArmISA::PrefetchAbort::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1271
ArmISA::ArmFault::SynchPtyErrOnMemoryAccess
@ SynchPtyErrOnMemoryAccess
Definition: faults.hh:104
ArmISA::ArmFault::getToMode
OperatingMode getToMode() const
Definition: faults.hh:253
ArmISA::HypervisorTrap::machInst
ExtMachInst machInst
Definition: faults.hh:418
ArmISA::ArmFault::thumbPcElrOffset
virtual uint8_t thumbPcElrOffset()=0
ArmISA::ArmFault::update
void update(ThreadContext *tc)
Definition: faults.cc:436
ArmISA::ArmFaultVals::routeToMonitor
virtual bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.hh:272
ArmISA::ArmFault::PermissionLL
@ PermissionLL
Definition: faults.hh:100
ArmISA::SecureMonitorCall::iss
uint32_t iss() const override
Definition: faults.cc:901
ArmISA::IllegalInstSetStateFault::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1821
ArmISA::FaultOffset
Addr FaultOffset
Definition: faults.hh:56
ArmISA::HypervisorTrap
Definition: faults.hh:415
ArmISA::PCAlignmentFault::PCAlignmentFault
PCAlignmentFault(Addr _faultPC)
Definition: faults.hh:590
ArmISA::SupervisorTrap::machInst
ExtMachInst machInst
Definition: faults.hh:373
ArmISA::SecureMonitorCall::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1022
ArmISA::HardwareBreakpoint::HardwareBreakpoint
HardwareBreakpoint(Addr _vaddr, uint32_t _iss)
Definition: faults.cc:1617
ArmISA::PrefetchAbort::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:1296
ArmISA::ArmFault::TranMethod
TranMethod
Definition: faults.hh:146
ArmISA::ArmFault::ec
virtual ExceptionClass ec(ThreadContext *tc) const =0
ArmISA::DataAbort::annotate
void annotate(AnnotationIDs id, uint64_t val) override
Definition: faults.cc:1415
ArmISA::MISCREG_DFAR
@ MISCREG_DFAR
Definition: miscregs.hh:277
ArmISA::Reset
Definition: faults.hh:291
ArmISA::ArmFault::armPcOffset
virtual uint8_t armPcOffset(bool isHyp)=0
ArmISA::ArmFault::getFsr
virtual FSR getFsr(ThreadContext *tc) const
Definition: faults.hh:250
ArmISA::SupervisorCall
Definition: faults.hh:333
ArmISA::ArmFault::DomainLL
@ DomainLL
Definition: faults.hh:99
ArmISA::DataAbort::cm
uint8_t cm
Definition: faults.hh:513
ArmISA::AbortFault::write
bool write
Definition: faults.hh:448
ArmISA::MiscRegIndex
MiscRegIndex
Definition: miscregs.hh:56
ArmISA::SoftwareStepFault::stepped
bool stepped
Definition: faults.hh:659
ArmISA::SecureMonitorTrap::ec
ExceptionClass ec(ThreadContext *tc) const override
Definition: faults.cc:1054
ArmISA::AbortFault::tranMethod
ArmFault::TranMethod tranMethod
Definition: faults.hh:454
ArmISA::ExceptionClass
ExceptionClass
Definition: types.hh:648
ArmISA::AbortFault::stage2
bool stage2
Definition: faults.hh:452
ArmISA::ArmFault::SynchExtAbtOnTranslTableWalkLL
@ SynchExtAbtOnTranslTableWalkLL
Definition: faults.hh:95
ArmISA::Watchpoint::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1688
logging.hh
ArmISA::SupervisorCall::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:351
ArmISA::SecureMonitorTrap
Definition: faults.hh:388
ArmISA::AbortFault::annotate
void annotate(ArmFault::AnnotationIDs id, uint64_t val) override
Definition: faults.cc:1216
ArmISA::SupervisorCall::overrideEc
ExceptionClass overrideEc
Definition: faults.hh:336
ArmISA::ArmFault::FaultVals::abortDisable
const bool abortDisable
Definition: faults.hh:185
ArmISA::PrefetchAbort::vectorCatchFlag
uint32_t vectorCatchFlag() const override
Definition: faults.hh:500
ArmISA::ArmFault::getFaultVAddr
virtual bool getFaultVAddr(Addr &va) const
Definition: faults.hh:252
ArmISA::AbortFault::OVAddr
Addr OVAddr
Original virtual address.
Definition: faults.hh:447
ArmISA::VirtualDataAbort::FarIndex
static const MiscRegIndex FarIndex
Definition: faults.hh:541
ArmISA::ArmFaultVals::thumbPcElrOffset
uint8_t thumbPcElrOffset() override
Definition: faults.hh:284
ArmISA::ArmFault::toEL
ExceptionLevel toEL
Definition: faults.hh:71
RefCountingPtr< StaticInst >
ArmISA::MISCREG_HDFAR
@ MISCREG_HDFAR
Definition: miscregs.hh:283
ArmISA::ArmFault::routeToHyp
virtual bool routeToHyp(ThreadContext *tc) const
Definition: faults.hh:239
ArmISA::DataAbort
Definition: faults.hh:503
ArmISA::ArmFaultVals::armPcElrOffset
uint8_t armPcElrOffset() override
Definition: faults.hh:283
ArmISA::ArmFaultVals::thumbPcOffset
uint8_t thumbPcOffset(bool isHyp) override
Definition: faults.hh:279
ArmISA::ArmSev::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:1776
ArmISA::SoftwareStepFault
Definition: faults.hh:655
ArmISA::HypervisorTrap::HypervisorTrap
HypervisorTrap(ExtMachInst _machInst, uint32_t _iss, ExceptionClass _overrideEc=EC_INVALID)
Definition: faults.hh:422
ArmISA::ArmFaultVals
Definition: faults.hh:257
ArmISA::Watchpoint::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1697
ArmISA::ArmFault::shortDescFaultSources
static uint8_t shortDescFaultSources[NumFaultSources]
Encodings of the fault sources when the short-desc.
Definition: faults.hh:121
ArmISA::ArmFault::SSE
@ SSE
Definition: faults.hh:133
ArmISA::UndefinedInstruction::overrideEc
ExceptionClass overrideEc
Definition: faults.hh:306
ArmISA::AbortFault::abortDisable
bool abortDisable(ThreadContext *tc) override
Definition: faults.cc:1205
ArmISA::AbortFault::srcEncoded
uint8_t srcEncoded
Definition: faults.hh:451
ArmISA::FastInterrupt::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1507
ArmISA::ArmFault::InstructionCacheMaintenance
@ InstructionCacheMaintenance
Definition: faults.hh:94
ArmISA::ArmFault::longDescFaultSources
static uint8_t longDescFaultSources[NumFaultSources]
Encodings of the fault sources when the long-desc.
Definition: faults.hh:124
ArmISA::SoftwareBreakpoint::routeToHyp
bool routeToHyp(ThreadContext *tc) const override
Definition: faults.cc:1602
ArmISA::ArmFault::FaultVals::nextMode
const OperatingMode nextMode
Definition: faults.hh:174
ArmISA::UndefinedInstruction::unknown
bool unknown
Definition: faults.hh:304
ArmISA::VirtualDataAbort::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst) override
Definition: faults.cc:1453
FaultBase
Definition: faults.hh:54
ArmISA::ArmFault::SynchPtyErrOnTranslTableWalkLL
@ SynchPtyErrOnTranslTableWalkLL
Definition: faults.hh:96
ArmISA::ArmFault::PrefetchTLBMiss
@ PrefetchTLBMiss
Definition: faults.hh:112
ArmISA::Watchpoint::Watchpoint
Watchpoint(ExtMachInst _mach_inst, Addr _vaddr, bool _write, bool _cm)
Definition: faults.cc:1667
ArmISA::UndefinedInstruction::UndefinedInstruction
UndefinedInstruction(ExtMachInst _machInst, bool _unknown, const char *_mnemonic=NULL, bool _disabled=false)
Definition: faults.hh:310
ArmISA::DataAbort::ar
bool ar
Definition: faults.hh:517
ArmISA::Interrupt::routeToMonitor
bool routeToMonitor(ThreadContext *tc) const override
Definition: faults.cc:1462
ArmISA::va
Bitfield< 8 > va
Definition: miscregs_types.hh:272
ArmISA::ArmFault::OFA
@ OFA
Definition: faults.hh:136
ArmISA::PCAlignmentFault::faultPC
Addr faultPC
The unaligned value of the PC.
Definition: faults.hh:588
ArmISA::UndefinedInstruction
Definition: faults.hh:301
ArmISA::ArmFault::FaultVals::FaultVals
FaultVals(const FaultName &name_, const FaultOffset &offset_, const uint16_t &currELTOffset_, const uint16_t &currELHOffset_, const uint16_t &lowerEL64Offset_, const uint16_t &lowerEL32Offset_, const OperatingMode &nextMode_, const uint8_t &armPcOffset_, const uint8_t &thumbPcOffset_, const uint8_t &armPcElrOffset_, const uint8_t &thumbPcElrOffset_, const bool &hypTrappable_, const bool &abortDisable_, const bool &fiqDisable_, const ExceptionClass &ec_)
Definition: faults.hh:193
ArmISA::AbortFault::iss
uint32_t iss() const override
Definition: faults.cc:1235
ArmISA::ArmFault::abortDisable
virtual bool abortDisable(ThreadContext *tc)=0
ArmISA::DataAbort::srt
uint8_t srt
Definition: faults.hh:512
ArmISA::ArmFault::SF
@ SF
Definition: faults.hh:142
ArmISA::SupervisorCall::invoke
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
Definition: faults.cc:859
ArmISA::AbortFault::faultAddr
Addr faultAddr
The virtual address the fault occured at.
Definition: faults.hh:441
MipsISA::ExtMachInst
uint64_t ExtMachInst
Definition: types.hh:39

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