summaryrefslogtreecommitdiff
path: root/src/arch/arm/faults.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/faults.hh')
-rw-r--r--src/arch/arm/faults.hh34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/arch/arm/faults.hh b/src/arch/arm/faults.hh
index 7f8aa66b6..90a730507 100644
--- a/src/arch/arm/faults.hh
+++ b/src/arch/arm/faults.hh
@@ -1,4 +1,16 @@
/*
+ * Copyright (c) 2010 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder. You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
* Copyright (c) 2003-2005 The Regents of The University of Michigan
* Copyright (c) 2007-2008 The Florida State University
* All rights reserved.
@@ -92,7 +104,27 @@ class ArmFault : public ArmFaultBase
class Reset : public ArmFault<Reset> {};
-class UndefinedInstruction : public ArmFault<UndefinedInstruction> {};
+
+class UndefinedInstruction : public ArmFault<UndefinedInstruction>
+{
+#if !FULL_SYSTEM
+ protected:
+ ExtMachInst machInst;
+ bool unknown;
+ const char *mnemonic;
+
+ public:
+ UndefinedInstruction(ExtMachInst _machInst,
+ bool _unknown,
+ const char *_mnemonic = NULL) :
+ machInst(_machInst), unknown(_unknown), mnemonic(_mnemonic)
+ {
+ }
+
+ void invoke(ThreadContext *tc);
+#endif
+};
+
class SupervisorCall : public ArmFault<SupervisorCall> {};
class PrefetchAbort : public ArmFault<PrefetchAbort> {};
class DataAbort : public ArmFault<DataAbort> {};