summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-10-07 18:17:52 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-10-07 18:17:52 -0700
commitcd36c69a4de51d45b82038a012a53cf58f4f3fa2 (patch)
tree8e9ffdde9cb4b765534956e2a148b913f5116f2a
parentefbff349a92ac8a8a994a67d1fda2ec103ec5225 (diff)
downloadgem5-cd36c69a4de51d45b82038a012a53cf58f4f3fa2.tar.xz
X86: Make faults maintain an error code which gets pushed on the stack.
--HG-- extra : convert_revision : 7576f8cfaec9ddfb65e6ba7a6f64a5f453a42069
-rw-r--r--src/arch/x86/faults.hh30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/arch/x86/faults.hh b/src/arch/x86/faults.hh
index 0579be9b5..5a573754a 100644
--- a/src/arch/x86/faults.hh
+++ b/src/arch/x86/faults.hh
@@ -69,9 +69,11 @@ namespace X86ISA
protected:
const char * faultName;
const char * mnem;
+ uint64_t errorCode;
- X86FaultBase(const char * _faultName, const char * _mnem) :
- faultName(_faultName), mnem(_mnem)
+ X86FaultBase(const char * _faultName, const char * _mnem,
+ uint64_t _errorCode = 0) :
+ faultName(_faultName), mnem(_mnem), errorCode(_errorCode)
{
}
@@ -96,8 +98,9 @@ namespace X86ISA
class X86Fault : public X86FaultBase
{
protected:
- X86Fault(const char * name, const char * mnem) :
- X86FaultBase(name, mnem)
+ X86Fault(const char * name, const char * mnem,
+ uint64_t _errorCode = 0) :
+ X86FaultBase(name, mnem, _errorCode)
{}
};
@@ -106,8 +109,9 @@ namespace X86ISA
class X86Trap : public X86FaultBase
{
protected:
- X86Trap(const char * name, const char * mnem) :
- X86FaultBase(name, mnem)
+ X86Trap(const char * name, const char * mnem,
+ uint64_t _errorCode = 0) :
+ X86FaultBase(name, mnem, _errorCode)
{}
#if FULL_SYSTEM
@@ -119,8 +123,9 @@ namespace X86ISA
class X86Abort : public X86FaultBase
{
protected:
- X86Abort(const char * name, const char * mnem) :
- X86FaultBase(name, mnem)
+ X86Abort(const char * name, const char * mnem,
+ uint64_t _errorCode = 0) :
+ X86FaultBase(name, mnem, _errorCode)
{}
#if FULL_SYSTEM
@@ -132,8 +137,9 @@ namespace X86ISA
class X86Interrupt : public X86FaultBase
{
protected:
- X86Interrupt(const char * name, const char * mnem) :
- X86FaultBase(name, mnem)
+ X86Interrupt(const char * name, const char * mnem,
+ uint64_t _errorCode = 0) :
+ X86FaultBase(name, mnem, _errorCode)
{}
#if FULL_SYSTEM
@@ -290,8 +296,8 @@ namespace X86ISA
class GeneralProtection : public X86Fault
{
public:
- GeneralProtection() :
- X86Fault("General-Protection", "#GP")
+ GeneralProtection(uint64_t _errorCode) :
+ X86Fault("General-Protection", "#GP", _errorCode)
{}
};