Faults: Add in generic faults that work like panics, warns, etc.
authorGabe Black <gblack@eecs.umich.edu>
Tue, 27 Sep 2011 07:17:09 +0000 (00:17 -0700)
committerGabe Black <gblack@eecs.umich.edu>
Tue, 27 Sep 2011 07:17:09 +0000 (00:17 -0700)
These faults take varargs to their constructors which they print into a string
and pass to the M5DebugFault base class. They are basically faults wrapped
around panics, faults, warns, and warnonce-es so that they happen only at
commit.

src/arch/generic/debugfaults.hh

index 3389b08336ec03fb2cb6ba66b796aaf74a7560c5..2a10ced92afa131c65e2c8efb75847ce24858728 100644 (file)
@@ -47,6 +47,7 @@
 
 namespace GenericISA
 {
+
 class M5DebugFault : public FaultBase
 {
   public:
@@ -106,6 +107,21 @@ class M5DebugFault : public FaultBase
         }
     }
 };
+
+template <int func>
+class M5VarArgsFault : public M5DebugFault
+{
+  public:
+    M5VarArgsFault(const std::string &format, CPRINTF_DECLARATION) :
+        M5DebugFault((DebugFunc)func, csprintf(format, VARARGS_ALLARGS))
+    {}
+};
+
+typedef M5VarArgsFault<M5DebugFault::PanicFunc> M5PanicFault;
+typedef M5VarArgsFault<M5DebugFault::FatalFunc> M5FatalFault;
+typedef M5VarArgsFault<M5DebugFault::WarnFunc> M5WarnFault;
+typedef M5VarArgsFault<M5DebugFault::WarnOnceFunc> M5WarnOnceFault;
+
 } // namespace GenericISA
 
 #endif // __ARCH_GENERIC_DEBUGFAULTS_HH__