sim-se: Add prlimit system call
[gem5.git] / src / sim / faults.cc
index c409aa95b601f388a97fd59c35be6b422f5f2920..b0fa6fedb11f4f90ea26dc51637666f303b759e3 100644 (file)
  *          Gabe Black
  */
 
+#include "sim/faults.hh"
+
 #include "arch/isa_traits.hh"
 #include "base/misc.hh"
 #include "cpu/base.hh"
 #include "cpu/thread_context.hh"
 #include "debug/Fault.hh"
 #include "mem/page_table.hh"
-#include "sim/faults.hh"
 #include "sim/full_system.hh"
 #include "sim/process.hh"
 
-void FaultBase::invoke(ThreadContext * tc, StaticInstPtr inst)
+void FaultBase::invoke(ThreadContext * tc, const StaticInstPtr &inst)
 {
     if (FullSystem) {
         DPRINTF(Fault, "Fault %s at PC: %s\n", name(), tc->pcState());
-        assert(!tc->misspeculating());
     } else {
         panic("fault (%s) detected @ PC %s", name(), tc->pcState());
     }
 }
 
-void UnimpFault::invoke(ThreadContext * tc, StaticInstPtr inst)
+void UnimpFault::invoke(ThreadContext * tc, const StaticInstPtr &inst)
 {
     panic("Unimpfault: %s\n", panicStr.c_str());
 }
 
-void ReExec::invoke(ThreadContext *tc, StaticInstPtr inst)
+void ReExec::invoke(ThreadContext *tc, const StaticInstPtr &inst)
+{
+    tc->pcState(tc->pcState());
+}
+
+void SyscallRetryFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
 {
     tc->pcState(tc->pcState());
 }
 
-void GenericPageTableFault::invoke(ThreadContext *tc, StaticInstPtr inst)
+void GenericPageTableFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
 {
     bool handled = false;
     if (!FullSystem) {
@@ -71,7 +76,7 @@ void GenericPageTableFault::invoke(ThreadContext *tc, StaticInstPtr inst)
 
 }
 
-void GenericAlignmentFault::invoke(ThreadContext *tc, StaticInstPtr inst)
+void GenericAlignmentFault::invoke(ThreadContext *tc, const StaticInstPtr &inst)
 {
     panic("Alignment fault when accessing virtual address %#x\n", vaddr);
 }