CPU: Eliminate the simPalCheck funciton.
This commit is contained in:
parent
da7209ec93
commit
f621b7b81f
15 changed files with 24 additions and 122 deletions
|
@ -547,36 +547,3 @@ copyIprs(ThreadContext *src, ThreadContext *dest)
|
|||
}
|
||||
|
||||
} // namespace AlphaISA
|
||||
|
||||
#if FULL_SYSTEM
|
||||
|
||||
using namespace AlphaISA;
|
||||
|
||||
/**
|
||||
* Check for special simulator handling of specific PAL calls.
|
||||
* If return value is false, actual PAL call will be suppressed.
|
||||
*/
|
||||
bool
|
||||
SimpleThread::simPalCheck(int palFunc)
|
||||
{
|
||||
if (kernelStats)
|
||||
kernelStats->callpal(palFunc, tc);
|
||||
|
||||
switch (palFunc) {
|
||||
case PAL::halt:
|
||||
halt();
|
||||
if (--System::numSystemsRunning == 0)
|
||||
exitSimLoop("all cpus halted");
|
||||
break;
|
||||
|
||||
case PAL::bpt:
|
||||
case PAL::bugchk:
|
||||
if (system->breakpoint())
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // FULL_SYSTEM
|
||||
|
|
|
@ -698,7 +698,28 @@ decode OPCODE default Unknown::unknown() {
|
|||
else {
|
||||
// check to see if simulator wants to do something special
|
||||
// on this PAL call (including maybe suppress it)
|
||||
bool dopal = xc->simPalCheck(palFunc);
|
||||
|
||||
bool dopal = true;
|
||||
|
||||
ThreadContext * tc = xc->tcBase();
|
||||
AlphaISA::Kernel::Statistics * kernelStats = tc->getKernelStats();
|
||||
System * system = tc->getSystemPtr();
|
||||
if (kernelStats)
|
||||
kernelStats->callpal(palFunc, tc);
|
||||
|
||||
switch (palFunc) {
|
||||
case PAL::halt:
|
||||
tc->halt();
|
||||
if (--System::numSystemsRunning == 0)
|
||||
exitSimLoop("all cpus halted");
|
||||
break;
|
||||
|
||||
case PAL::bpt:
|
||||
case PAL::bugchk:
|
||||
if (system->breakpoint())
|
||||
dopal = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (dopal) {
|
||||
xc->setMiscReg(IPR_EXC_ADDR, NPC);
|
||||
|
|
|
@ -70,6 +70,7 @@ output exec {{
|
|||
|
||||
#if FULL_SYSTEM
|
||||
#include "arch/alpha/kernel_stats.hh"
|
||||
#include "arch/alpha/osfpal.hh"
|
||||
#include "sim/pseudo_inst.hh"
|
||||
#endif
|
||||
#include "arch/alpha/ipr.hh"
|
||||
|
|
|
@ -337,7 +337,6 @@ class CheckerCPU : public BaseCPU
|
|||
|
||||
#if FULL_SYSTEM
|
||||
void ev5_trap(Fault fault) { fault->invoke(tc); }
|
||||
bool simPalCheck(int palFunc) { return thread->simPalCheck(palFunc); }
|
||||
#else
|
||||
// Assume that the normal CPU's call to syscall was successful.
|
||||
// The checker's state would have already been updated by the syscall.
|
||||
|
|
|
@ -143,13 +143,7 @@ class ExecContext {
|
|||
* given flags. */
|
||||
void writeHint(Addr addr, int size, unsigned flags);
|
||||
|
||||
#if FULL_SYSTEM
|
||||
/**
|
||||
* Check for special simulator handling of specific PAL calls. If
|
||||
* return value is false, actual PAL call will be suppressed.
|
||||
*/
|
||||
bool simPalCheck(int palFunc);
|
||||
#else
|
||||
#if !FULL_SYSTEM
|
||||
/** Executes a syscall specified by the callnum. */
|
||||
void syscall(int64_t callnum);
|
||||
#endif
|
||||
|
|
|
@ -53,10 +53,6 @@
|
|||
#include "cpu/checker/cpu.hh"
|
||||
#endif
|
||||
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
#include "arch/alpha/osfpal.hh"
|
||||
#endif
|
||||
|
||||
class BaseCPUParams;
|
||||
|
||||
using namespace TheISA;
|
||||
|
@ -905,32 +901,6 @@ FullO3CPU<Impl>::post_interrupt(int int_num, int index)
|
|||
}
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
bool
|
||||
FullO3CPU<Impl>::simPalCheck(int palFunc, unsigned tid)
|
||||
{
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
if (this->thread[tid]->kernelStats)
|
||||
this->thread[tid]->kernelStats->callpal(palFunc,
|
||||
this->threadContexts[tid]);
|
||||
|
||||
switch (palFunc) {
|
||||
case PAL::halt:
|
||||
halt();
|
||||
if (--System::numSystemsRunning == 0)
|
||||
exitSimLoop("all cpus halted");
|
||||
break;
|
||||
|
||||
case PAL::bpt:
|
||||
case PAL::bugchk:
|
||||
if (this->system->breakpoint())
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
Fault
|
||||
FullO3CPU<Impl>::getInterrupts()
|
||||
|
|
|
@ -414,8 +414,6 @@ class FullO3CPU : public BaseO3CPU
|
|||
/** Posts an interrupt. */
|
||||
void post_interrupt(int int_num, int index);
|
||||
|
||||
bool simPalCheck(int palFunc, unsigned tid);
|
||||
|
||||
/** Returns the Fault for any valid interrupt. */
|
||||
Fault getInterrupts();
|
||||
|
||||
|
|
|
@ -170,7 +170,6 @@ class BaseO3DynInst : public BaseDynInst<Impl>
|
|||
#if FULL_SYSTEM
|
||||
/** Traps to handle specified fault. */
|
||||
void trap(Fault fault);
|
||||
bool simPalCheck(int palFunc);
|
||||
#else
|
||||
/** Calls a syscall. */
|
||||
void syscall(int64_t callnum);
|
||||
|
|
|
@ -130,16 +130,6 @@ BaseO3DynInst<Impl>::trap(Fault fault)
|
|||
{
|
||||
this->cpu->trap(fault, this->threadNumber);
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
bool
|
||||
BaseO3DynInst<Impl>::simPalCheck(int palFunc)
|
||||
{
|
||||
#if THE_ISA != ALPHA_ISA
|
||||
panic("simPalCheck called, but PAL only exists in Alpha!\n");
|
||||
#endif
|
||||
return this->cpu->simPalCheck(palFunc, this->threadNumber);
|
||||
}
|
||||
#else
|
||||
template <class Impl>
|
||||
void
|
||||
|
|
|
@ -510,7 +510,6 @@ class OzoneCPU : public BaseCPU
|
|||
void dumpInsts() { frontEnd->dumpInsts(); }
|
||||
|
||||
#if FULL_SYSTEM
|
||||
bool simPalCheck(int palFunc);
|
||||
void processInterrupts();
|
||||
#else
|
||||
void syscall(uint64_t &callnum);
|
||||
|
|
|
@ -685,31 +685,6 @@ OzoneCPU<Impl>::processInterrupts()
|
|||
interrupt->invoke(thread.getTC());
|
||||
}
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
bool
|
||||
OzoneCPU<Impl>::simPalCheck(int palFunc)
|
||||
{
|
||||
// Need to move this to ISA code
|
||||
// May also need to make this per thread
|
||||
thread.kernelStats->callpal(palFunc, tc);
|
||||
|
||||
switch (palFunc) {
|
||||
case PAL::halt:
|
||||
haltContext(thread.readTid());
|
||||
if (--System::numSystemsRunning == 0)
|
||||
exitSimLoop("all cpus halted");
|
||||
break;
|
||||
|
||||
case PAL::bpt:
|
||||
case PAL::bugchk:
|
||||
if (system->breakpoint())
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
template <class Impl>
|
||||
|
|
|
@ -241,7 +241,6 @@ class OzoneDynInst : public BaseDynInst<Impl>
|
|||
|
||||
#if FULL_SYSTEM
|
||||
void trap(Fault fault);
|
||||
bool simPalCheck(int palFunc);
|
||||
#else
|
||||
void syscall(uint64_t &callnum);
|
||||
#endif
|
||||
|
|
|
@ -254,13 +254,6 @@ OzoneDynInst<Impl>::trap(Fault fault)
|
|||
{
|
||||
fault->invoke(this->thread->getTC());
|
||||
}
|
||||
|
||||
template <class Impl>
|
||||
bool
|
||||
OzoneDynInst<Impl>::simPalCheck(int palFunc)
|
||||
{
|
||||
return this->cpu->simPalCheck(palFunc);
|
||||
}
|
||||
#else
|
||||
template <class Impl>
|
||||
void
|
||||
|
|
|
@ -414,7 +414,6 @@ class BaseSimpleCPU : public BaseCPU
|
|||
|
||||
#if FULL_SYSTEM
|
||||
void ev5_trap(Fault fault) { fault->invoke(tc); }
|
||||
bool simPalCheck(int palFunc) { return thread->simPalCheck(palFunc); }
|
||||
#else
|
||||
void syscall(int64_t callnum) { thread->syscall(callnum); }
|
||||
#endif
|
||||
|
|
|
@ -185,8 +185,6 @@ class SimpleThread : public ThreadState
|
|||
|
||||
void dumpFuncProfile();
|
||||
|
||||
bool simPalCheck(int palFunc);
|
||||
|
||||
#endif
|
||||
|
||||
/*******************************************
|
||||
|
|
Loading…
Reference in a new issue