From 7e704c9f51a5ed60e46299f7b1dcef6d668b3ff6 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Mon, 19 Sep 2011 06:17:19 -0700 Subject: MIPS: Add constructors to the fault classes. --- src/arch/mips/faults.hh | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'src/arch/mips/faults.hh') 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 class AddressErrorFault : public MipsFault { 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 class StoreAddressErrorFault : public MipsFault { 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 class ItbRefillFault : public MipsFault { 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 class DtbRefillFault : public MipsFault { 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 class ItbInvalidFault : public MipsFault { 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 class TLBModifiedFault : public MipsFault { 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 class DtbInvalidFault : public MipsFault { 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); -- cgit v1.2.3