summaryrefslogtreecommitdiff
path: root/src/arch/arm/faults.hh
diff options
context:
space:
mode:
authorMin Kyu Jeong <minkyu.jeong@arm.com>2010-08-25 19:10:43 -0500
committerMin Kyu Jeong <minkyu.jeong@arm.com>2010-08-25 19:10:43 -0500
commitc23e8c31ebd4e856f205f5bdd8f4eb5e1eec87ee (patch)
treea04e718c24dc0d40829342042fba144b187fd1bb /src/arch/arm/faults.hh
parent8376f7bca3814844ab9cc592ff8f32c702a18629 (diff)
downloadgem5-c23e8c31ebd4e856f205f5bdd8f4eb5e1eec87ee.tar.xz
ARM: Adding a bogus fault that does nothing.
This fault can used to flush the pipe, not including the faulting instruction. The particular case I needed this was for a self-modifying code. It needed to drain the store queue and force the following instruction to refetch from icache. DCCMVAC cp15 mcr instruction is modified to raise this fault.
Diffstat (limited to 'src/arch/arm/faults.hh')
-rw-r--r--src/arch/arm/faults.hh8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/arch/arm/faults.hh b/src/arch/arm/faults.hh
index 7dd881435..3eef0e551 100644
--- a/src/arch/arm/faults.hh
+++ b/src/arch/arm/faults.hh
@@ -227,6 +227,14 @@ class DataAbort : public AbortFault<DataAbort>
class Interrupt : public ArmFaultVals<Interrupt> {};
class FastInterrupt : public ArmFaultVals<FastInterrupt> {};
+// A fault that flushes the pipe, excluding the faulting instructions
+class FlushPipe : public ArmFaultVals<FlushPipe>
+{
+ public:
+ FlushPipe() {}
+ void invoke(ThreadContext *tc);
+};
+
static inline Fault genMachineCheckFault()
{
return new Reset();