Moved the UnimpFault to be global

--HG--
extra : convert_revision : a42224c70c475c1559e83b8a2ef71ff3b792a3ab
This commit is contained in:
Gabe Black 2006-05-14 23:53:29 -04:00
parent 8db6dd370c
commit 9955ebd03c
8 changed files with 29 additions and 91 deletions

View file

@ -105,10 +105,6 @@ FaultName IntegerOverflowFault::_name = "intover";
FaultVect IntegerOverflowFault::_vect = 0x0501; FaultVect IntegerOverflowFault::_vect = 0x0501;
FaultStat IntegerOverflowFault::_count; FaultStat IntegerOverflowFault::_count;
FaultName UnimpFault::_name = "Unimplemented Simulator feature";
FaultVect UnimpFault::_vect = 0x0001;
FaultStat UnimpFault::_count;
#if FULL_SYSTEM #if FULL_SYSTEM
void AlphaFault::invoke(ExecContext * xc) void AlphaFault::invoke(ExecContext * xc)
@ -174,12 +170,6 @@ void ItbFault::invoke(ExecContext * xc)
AlphaFault::invoke(xc); AlphaFault::invoke(xc);
} }
void UnimpFault::invoke(ExecContext * xc)
{
FaultBase::invoke(xc);
panic("Unimpfault: %s\n", panicStr.c_str());
}
#endif #endif
} // namespace AlphaISA } // namespace AlphaISA

View file

@ -347,26 +347,6 @@ class IntegerOverflowFault : public AlphaFault
FaultStat & countStat() {return _count;} FaultStat & countStat() {return _count;}
}; };
class UnimpFault : public AlphaFault
{
private:
std::string panicStr;
static FaultName _name;
static FaultVect _vect;
static FaultStat _count;
public:
UnimpFault(std::string _str)
: panicStr(_str)
{ }
FaultName name() {return _name;}
FaultVect vect() {return _vect;}
FaultStat & countStat() {return _count;}
#if FULL_SYSTEM
void invoke(ExecContext * xc);
#endif
};
} // AlphaISA namespace } // AlphaISA namespace
#endif // __FAULTS_HH__ #endif // __FAULTS_HH__

View file

@ -98,10 +98,6 @@ FaultName IntegerOverflowFault::_name = "intover";
FaultVect IntegerOverflowFault::_vect = 0x0501; FaultVect IntegerOverflowFault::_vect = 0x0501;
FaultStat IntegerOverflowFault::_count; FaultStat IntegerOverflowFault::_count;
FaultName UnimpFault::_name = "Unimplemented Simulator feature";
FaultVect UnimpFault::_vect = 0x0001;
FaultStat UnimpFault::_count;
#if FULL_SYSTEM #if FULL_SYSTEM
void MipsFault::invoke(ExecContext * xc) void MipsFault::invoke(ExecContext * xc)
@ -129,12 +125,6 @@ void ArithmeticFault::invoke(ExecContext * xc)
panic("Arithmetic traps are unimplemented!"); panic("Arithmetic traps are unimplemented!");
} }
void UnimpFault::invoke(ExecContext * xc)
{
FaultBase::invoke(xc);
panic("Unimpfault: %s\n", panicStr.c_str());
}
#endif #endif
} // namespace MipsISA } // namespace MipsISA

View file

@ -264,26 +264,6 @@ class IntegerOverflowFault : public MipsFault
FaultStat & countStat() {return _count;} FaultStat & countStat() {return _count;}
}; };
class UnimpFault : public MipsFault
{
private:
std::string panicStr;
static FaultName _name;
static FaultVect _vect;
static FaultStat _count;
public:
UnimpFault(std::string _str)
: panicStr(_str)
{ }
FaultName name() {return _name;}
FaultVect vect() {return _vect;}
FaultStat & countStat() {return _count;}
#if FULL_SYSTEM
void invoke(ExecContext * xc);
#endif
};
} // MipsISA namespace } // MipsISA namespace
#endif // __FAULTS_HH__ #endif // __FAULTS_HH__

View file

@ -215,11 +215,6 @@ TrapType TrapInstruction::_baseTrapType = 0x100;
FaultPriority TrapInstruction::_priority = 16; FaultPriority TrapInstruction::_priority = 16;
FaultStat TrapInstruction::_count; FaultStat TrapInstruction::_count;
FaultName UnimpFault::_name = "Unimplemented Simulator feature";
TrapType UnimpFault::_trapType = 0x000;
FaultPriority UnimpFault::_priority = 0;
FaultStat UnimpFault::_count;
#if FULL_SYSTEM #if FULL_SYSTEM
void SparcFault::invoke(ExecContext * xc) void SparcFault::invoke(ExecContext * xc)
@ -245,11 +240,14 @@ void SparcFault::invoke(ExecContext * xc)
xc->regs.npc = xc->regs.pc + sizeof(MachInst);*/ xc->regs.npc = xc->regs.pc + sizeof(MachInst);*/
} }
void UnimpFault::invoke(ExecContext * xc) #endif
{
panic("Unimpfault: %s\n", panicStr.c_str());
}
#if !FULL_SYSTEM
void TrapInstruction::invoke(ExecContext * xc)
{
xc->syscall(syscall_num);
}
#endif #endif

View file

@ -573,37 +573,19 @@ class TrapInstruction : public EnumeratedFault
static TrapType _baseTrapType; static TrapType _baseTrapType;
static FaultPriority _priority; static FaultPriority _priority;
static FaultStat _count; static FaultStat _count;
uint64_t syscall_num;
TrapType baseTrapType() {return _baseTrapType;} TrapType baseTrapType() {return _baseTrapType;}
public: public:
TrapInstruction(uint32_t n) : EnumeratedFault(n) {;} TrapInstruction(uint32_t n, uint64_t syscall) :
EnumeratedFault(n), syscall_num(syscall) {;}
FaultName name() {return _name;} FaultName name() {return _name;}
FaultPriority priority() {return _priority;} FaultPriority priority() {return _priority;}
FaultStat & countStat() {return _count;} FaultStat & countStat() {return _count;}
}; #if !FULL_SYSTEM
class UnimpFault : public SparcFault
{
private:
static FaultName _name;
static TrapType _trapType;
static FaultPriority _priority;
static FaultStat _count;
std::string panicStr;
public:
UnimpFault(std::string _str)
: panicStr(_str)
{ }
FaultName name() {return _name;}
TrapType trapType() {return _trapType;}
FaultPriority priority() {return _priority;}
FaultStat & countStat() {return _count;}
#if FULL_SYSTEM
void invoke(ExecContext * xc); void invoke(ExecContext * xc);
#endif #endif
}; };
} // SparcISA namespace } // SparcISA namespace
#endif // __FAULTS_HH__ #endif // __FAULTS_HH__

View file

@ -45,3 +45,8 @@ void FaultBase::invoke(ExecContext * xc)
assert(!xc->misspeculating()); assert(!xc->misspeculating());
} }
#endif #endif
void UnimpFault::invoke(ExecContext * xc)
{
panic("Unimpfault: %s\n", panicStr.c_str());
}

View file

@ -64,4 +64,17 @@ class FaultBase : public RefCounted
FaultBase * const NoFault = 0; FaultBase * const NoFault = 0;
class UnimpFault : public FaultBase
{
private:
std::string panicStr;
public:
UnimpFault(std::string _str)
: panicStr(_str)
{ }
FaultName name() {return "Unimplemented simulator feature";}
void invoke(ExecContext * xc);
};
#endif // __FAULTS_HH__ #endif // __FAULTS_HH__