summaryrefslogtreecommitdiff
path: root/arch/alpha/faults.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2006-03-01 19:03:42 -0500
committerGabe Black <gblack@eecs.umich.edu>2006-03-01 19:03:42 -0500
commit6b7d62790399f3ff675e5d37a25c320aa068897a (patch)
tree5227a88b50bcecf37349f181b208bd39d3626b45 /arch/alpha/faults.hh
parentb71f9c801eb869b477a1e5a6f12498862efbb886 (diff)
downloadgem5-6b7d62790399f3ff675e5d37a25c320aa068897a.tar.xz
Got rid of the multiple inheritance in the Fault classes, and the base MachineCheck and Alignment faults.
--HG-- extra : convert_revision : 4b1429ef5c7a11c25e28f2bc868cc1481a08c5d1
Diffstat (limited to 'arch/alpha/faults.hh')
-rw-r--r--arch/alpha/faults.hh20
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/alpha/faults.hh b/arch/alpha/faults.hh
index b9573905a..c4a72e07c 100644
--- a/arch/alpha/faults.hh
+++ b/arch/alpha/faults.hh
@@ -50,38 +50,40 @@ class AlphaFault : public virtual FaultBase
virtual FaultVect vect() = 0;
};
-class AlphaMachineCheckFault :
- public MachineCheckFault,
- public AlphaFault
+class MachineCheckFault : public AlphaFault
{
private:
+ static FaultName _name;
static FaultVect _vect;
static FaultStat _stat;
public:
+ FaultName name() {return _name;}
FaultVect vect() {return _vect;}
FaultStat & stat() {return _stat;}
+ bool isMachineCheckFault() {return true;}
};
-class AlphaAlignmentFault :
- public AlignmentFault,
- public AlphaFault
+class AlignmentFault : public AlphaFault
{
private:
+ static FaultName _name;
static FaultVect _vect;
static FaultStat _stat;
public:
+ FaultName name() {return _name;}
FaultVect vect() {return _vect;}
FaultStat & stat() {return _stat;}
+ bool isAlignmentFault() {return true;}
};
static inline Fault genMachineCheckFault()
{
- return new AlphaMachineCheckFault;
+ return new MachineCheckFault;
}
static inline Fault genAlignmentFault()
{
- return new AlphaAlignmentFault;
+ return new AlignmentFault;
}
class ResetFault : public AlphaFault
@@ -108,7 +110,9 @@ class ArithmeticFault : public AlphaFault
FaultName name() {return _name;}
FaultVect vect() {return _vect;}
FaultStat & stat() {return _stat;}
+#if FULL_SYSTEM
void invoke(ExecContext * xc);
+#endif
};
class InterruptFault : public AlphaFault