diff options
author | Korey Sewell <ksewell@umich.edu> | 2007-06-22 19:03:42 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2007-06-22 19:03:42 -0400 |
commit | 753adb38d5471d23315d1bcfc6a744d1c6e03975 (patch) | |
tree | 9ae1cc842f4c3756acf86147a5fd6772d7a6622f /src/arch/mips/faults.hh | |
parent | 16c1b5484f576b6aebea9ab5ffab4ea64f080de0 (diff) | |
download | gem5-753adb38d5471d23315d1bcfc6a744d1c6e03975.tar.xz |
mips import pt. 1
src/arch/mips/SConscript:
"mips import pt.1".
--HG--
extra : convert_revision : 2e393341938bebf32fb638a209262d074fad4cc1
Diffstat (limited to 'src/arch/mips/faults.hh')
-rw-r--r-- | src/arch/mips/faults.hh | 96 |
1 files changed, 80 insertions, 16 deletions
diff --git a/src/arch/mips/faults.hh b/src/arch/mips/faults.hh index 86c742413..05a86acd7 100644 --- a/src/arch/mips/faults.hh +++ b/src/arch/mips/faults.hh @@ -80,6 +80,42 @@ class AlignmentFault : public MipsFault bool isAlignmentFault() {return true;} }; +class UnimplementedOpcodeFault : public MipsFault +{ + private: + static FaultName _name; + static FaultVect _vect; + static FaultStat _count; + public: + FaultName name() {return _name;} + FaultVect vect() {return _vect;} + FaultStat & countStat() {return _count;} +}; + +#if !FULL_SYSTEM +//class PageTableFault : public MipsFault +//{ +//private: +// Addr vaddr; +// static FaultName _name; +// static FaultVect _vect; +// static FaultStat _count; +//public: +// PageTableFault(Addr va) +// : vaddr(va) {} +// FaultName name() {return _name;} +// FaultVect vect() {return _vect;} +// FaultStat & countStat() {return _count;} +// void invoke(ThreadContext * tc); +//}; + +static inline Fault genPageTableFault(Addr va) +{ + return new PageTableFault(va); +} +#endif + + static inline Fault genMachineCheckFault() { return new MachineCheckFault; @@ -100,8 +136,49 @@ class ResetFault : public MipsFault FaultName name() {return _name;} FaultVect vect() {return _vect;} FaultStat & countStat() {return _count;} + void invoke(ThreadContext * tc); }; +class CoprocessorUnusableFault : public MipsFault +{ + private: + static FaultName _name; + static FaultVect _vect; + static FaultStat _count; + public: + FaultName name() {return _name;} + FaultVect vect() {return _vect;} + FaultStat & countStat() {return _count;} + void invoke(ThreadContext * tc); +}; + +class ReservedInstructionFault : public MipsFault +{ + private: + static FaultName _name; + static FaultVect _vect; + static FaultStat _count; + public: + FaultName name() {return _name;} + FaultVect vect() {return _vect;} + FaultStat & countStat() {return _count;} + void invoke(ThreadContext * tc); +}; + +class ThreadFault : public MipsFault +{ + private: + static FaultName _name; + static FaultVect _vect; + static FaultStat _count; + public: + FaultName name() {return _name;} + FaultVect vect() {return _vect;} + FaultStat & countStat() {return _count;} + void invoke(ThreadContext * tc); +}; + + class ArithmeticFault : public MipsFault { protected: @@ -217,18 +294,6 @@ class ItbAcvFault : public MipsFault FaultStat & countStat() {return _count;} }; -class UnimplementedOpcodeFault : public MipsFault -{ - private: - static FaultName _name; - static FaultVect _vect; - static FaultStat _count; - public: - FaultName name() {return _name;} - FaultVect vect() {return _vect;} - FaultStat & countStat() {return _count;} -}; - class FloatEnableFault : public MipsFault { private: @@ -241,10 +306,8 @@ class FloatEnableFault : public MipsFault FaultStat & countStat() {return _count;} }; -class PalFault : public MipsFault +class IntegerOverflowFault : public MipsFault { - protected: - bool skipFaultingInstruction() {return true;} private: static FaultName _name; static FaultVect _vect; @@ -255,7 +318,7 @@ class PalFault : public MipsFault FaultStat & countStat() {return _count;} }; -class IntegerOverflowFault : public MipsFault +class DspStateDisabledFault : public MipsFault { private: static FaultName _name; @@ -265,6 +328,7 @@ class IntegerOverflowFault : public MipsFault FaultName name() {return _name;} FaultVect vect() {return _vect;} FaultStat & countStat() {return _count;} + void invoke(ThreadContext * tc); }; } // MipsISA namespace |