summaryrefslogtreecommitdiff
path: root/src/arch/mips/faults.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2011-09-19 06:17:19 -0700
committerGabe Black <gblack@eecs.umich.edu>2011-09-19 06:17:19 -0700
commit7e704c9f51a5ed60e46299f7b1dcef6d668b3ff6 (patch)
tree6f8ca9bada6f5819a1270bfb6e7cc0c27071c214 /src/arch/mips/faults.hh
parent27388c0fe0da3b47e112478c787dd4bc78e32562 (diff)
downloadgem5-7e704c9f51a5ed60e46299f7b1dcef6d668b3ff6.tar.xz
MIPS: Add constructors to the fault classes.
Diffstat (limited to 'src/arch/mips/faults.hh')
-rw-r--r--src/arch/mips/faults.hh42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/arch/mips/faults.hh b/src/arch/mips/faults.hh
index 049140229..055aa597e 100644
--- a/src/arch/mips/faults.hh
+++ b/src/arch/mips/faults.hh
@@ -100,6 +100,7 @@ class AlignmentFault : public MipsFault<AlignmentFault>
class AddressErrorFault : public MipsFault<AddressErrorFault>
{
public:
+ AddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -110,6 +111,7 @@ class AddressErrorFault : public MipsFault<AddressErrorFault>
class StoreAddressErrorFault : public MipsFault<StoreAddressErrorFault>
{
public:
+ StoreAddressErrorFault(Addr vaddr) { badVAddr = vaddr; }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -254,6 +256,14 @@ class BreakpointFault : public MipsFault<BreakpointFault>
class ItbRefillFault : public MipsFault<ItbRefillFault>
{
public:
+ ItbRefillFault(Addr asid, Addr vaddr, Addr vpn)
+ {
+ entryHiAsid = asid;
+ entryHiVPN2 = vpn >> 2;
+ entryHiVPN2X = vpn & 0x3;
+ badVAddr = vaddr;
+ contextBadVPN2 = vpn >> 2;
+ }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -263,6 +273,14 @@ class ItbRefillFault : public MipsFault<ItbRefillFault>
class DtbRefillFault : public MipsFault<DtbRefillFault>
{
public:
+ DtbRefillFault(Addr asid, Addr vaddr, Addr vpn)
+ {
+ entryHiAsid = asid;
+ entryHiVPN2 = vpn >> 2;
+ entryHiVPN2X = vpn & 0x3;
+ badVAddr = vaddr;
+ contextBadVPN2 = vpn >> 2;
+ }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -281,6 +299,14 @@ class ItbPageFault : public MipsFault<ItbPageFault>
class ItbInvalidFault : public MipsFault<ItbInvalidFault>
{
public:
+ ItbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
+ {
+ entryHiAsid = asid;
+ entryHiVPN2 = vpn >> 2;
+ entryHiVPN2X = vpn & 0x3;
+ badVAddr = vaddr;
+ contextBadVPN2 = vpn >> 2;
+ }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -290,6 +316,14 @@ class ItbInvalidFault : public MipsFault<ItbInvalidFault>
class TLBModifiedFault : public MipsFault<TLBModifiedFault>
{
public:
+ TLBModifiedFault(Addr asid, Addr vaddr, Addr vpn)
+ {
+ entryHiAsid = asid;
+ entryHiVPN2 = vpn >> 2;
+ entryHiVPN2X = vpn & 0x3;
+ badVAddr = vaddr;
+ contextBadVPN2 = vpn >> 2;
+ }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInstPtr inst = StaticInst::nullStaticInstPtr);
@@ -299,6 +333,14 @@ class TLBModifiedFault : public MipsFault<TLBModifiedFault>
class DtbInvalidFault : public MipsFault<DtbInvalidFault>
{
public:
+ DtbInvalidFault(Addr asid, Addr vaddr, Addr vpn)
+ {
+ entryHiAsid = asid;
+ entryHiVPN2 = vpn >> 2;
+ entryHiVPN2X = vpn & 0x3;
+ badVAddr = vaddr;
+ contextBadVPN2 = vpn >> 2;
+ }
#if FULL_SYSTEM
void invoke(ThreadContext * tc,
StaticInst::StaticInstPtr inst = nullStaticInstPtr);