/*
+ * Copyright (c) 2003-2005 The Regents of The University of Michigan
* Copyright (c) 2007 MIPS Technologies, Inc.
* All rights reserved.
*
#include "sim/faults.hh"
-// The design of the "name" and "vect" functions is in sim/faults.hh
-
namespace MipsISA
{
+
typedef const Addr FaultVect;
class MipsFault : public FaultBase
virtual bool skipFaultingInstruction() {return false;}
virtual bool setRestartAddress() {return true;}
public:
- Addr BadVAddr;
- Addr EntryHi_Asid;
- Addr EntryHi_VPN2;
- Addr EntryHi_VPN2X;
- Addr Context_BadVPN2;
+ Addr badVAddr;
+ Addr entryHiAsid;
+ Addr entryHiVPN2;
+ Addr entryHiVPN2X;
+ Addr contextBadVPN2;
#if FULL_SYSTEM
- void invoke(ThreadContext * tc) {};
- void setExceptionState(ThreadContext *,uint8_t);
- void setHandlerPC(Addr,ThreadContext *);
+ void invoke(ThreadContext * tc) {};
+ void setExceptionState(ThreadContext *, uint8_t);
+ void setHandlerPC(Addr, ThreadContext *);
#endif
virtual FaultVect vect() = 0;
virtual FaultStat & countStat() = 0;
#endif
};
+
class StoreAddressErrorFault : public MipsFault
{
private:
#if FULL_SYSTEM
void invoke(ThreadContext * tc);
#endif
-
};
+
class UnimplementedOpcodeFault : public MipsFault
{
private:
FaultStat & countStat() {return _count;}
void invoke(ThreadContext * tc);
};
+
class TLBInvalidIFetchFault : public MipsFault
{
private:
void invoke(ThreadContext * tc);
};
+
class SystemCallFault : public MipsFault
{
private:
FaultStat & countStat() {return _count;}
void invoke(ThreadContext * tc);
};
+
class DebugSingleStep : public MipsFault
{
private:
FaultStat & countStat() {return _count;}
void invoke(ThreadContext * tc);
};
+
class DebugInterrupt : public MipsFault
{
private:
void invoke(ThreadContext * tc);
};
-
class ArithmeticFault : public MipsFault
{
protected:
#if FULL_SYSTEM
void invoke(ThreadContext * tc);
#endif
-
- //void invoke(ThreadContext * tc);
};
class TrapFault : public MipsFault
void invoke(ThreadContext * tc);
#endif
};
+
class DtbRefillFault : public MipsFault
{
private:
#if FULL_SYSTEM
void invoke(ThreadContext * tc);
#endif
-
};
+
class TLBModifiedFault : public MipsFault
{
private:
#if FULL_SYSTEM
void invoke(ThreadContext * tc);
#endif
-
};
class DtbInvalidFault : public MipsFault
#if FULL_SYSTEM
void invoke(ThreadContext * tc);
#endif
-
};
class FloatEnableFault : public MipsFault