Moved the UnimpFault to be global
--HG-- extra : convert_revision : a42224c70c475c1559e83b8a2ef71ff3b792a3ab
This commit is contained in:
parent
8db6dd370c
commit
9955ebd03c
8 changed files with 29 additions and 91 deletions
|
@ -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
|
||||||
|
|
|
@ -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__
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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__
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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__
|
||||||
|
|
|
@ -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());
|
||||||
|
}
|
||||||
|
|
|
@ -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__
|
||||||
|
|
Loading…
Reference in a new issue