Changed ev5_trap from a function of the execution context to a function of the fault. The actual function still resides in the execution context.
--HG-- extra : convert_revision : 56e33536cdd9079ace03896b85ea3c84b6eb4e57
This commit is contained in:
@@ -227,7 +227,7 @@ ExecContext::trap(Fault fault)
|
||||
|
||||
/** @todo: Going to hack it for now. Do a true fixup later. */
|
||||
#if FULL_SYSTEM
|
||||
ev5_trap(fault);
|
||||
fault->ev5_trap(this);
|
||||
#else
|
||||
fatal("fault (%d) detected @ PC 0x%08p", fault, readPC());
|
||||
#endif
|
||||
|
||||
@@ -425,7 +425,7 @@ class ExecContext
|
||||
void setIntrFlag(int val) { regs.intrflag = val; }
|
||||
Fault hwrei();
|
||||
bool inPalMode() { return AlphaISA::PcPAL(regs.pc); }
|
||||
void ev5_trap(Fault fault);
|
||||
void ev5_temp_trap(Fault fault);
|
||||
bool simPalCheck(int palFunc);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -688,7 +688,7 @@ SimpleCPU::tick()
|
||||
if (ipl && ipl > xc->regs.ipr[IPR_IPLR]) {
|
||||
ipr[IPR_ISR] = summary;
|
||||
ipr[IPR_INTID] = ipl;
|
||||
xc->ev5_trap(new InterruptFault);
|
||||
(new InterruptFault)->ev5_trap(xc);
|
||||
|
||||
DPRINTF(Flow, "Interrupt! IPLR=%d ipl=%d summary=%x\n",
|
||||
ipr[IPR_IPLR], ipl, summary);
|
||||
@@ -812,7 +812,7 @@ SimpleCPU::tick()
|
||||
|
||||
if (fault != NoFault) {
|
||||
#if FULL_SYSTEM
|
||||
xc->ev5_trap(fault);
|
||||
fault->ev5_trap(xc);
|
||||
#else // !FULL_SYSTEM
|
||||
fatal("fault (%d) detected @ PC 0x%08p", fault, xc->regs.pc);
|
||||
#endif // FULL_SYSTEM
|
||||
|
||||
@@ -334,7 +334,7 @@ class SimpleCPU : public BaseCPU
|
||||
int readIntrFlag() { return xc->readIntrFlag(); }
|
||||
void setIntrFlag(int val) { xc->setIntrFlag(val); }
|
||||
bool inPalMode() { return xc->inPalMode(); }
|
||||
void ev5_trap(Fault fault) { xc->ev5_trap(fault); }
|
||||
void ev5_trap(Fault fault) { fault->ev5_trap(xc); }
|
||||
bool simPalCheck(int palFunc) { return xc->simPalCheck(palFunc); }
|
||||
#else
|
||||
void syscall() { xc->syscall(); }
|
||||
|
||||
Reference in New Issue
Block a user