diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2006-03-01 05:26:08 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2006-03-01 05:26:08 -0500 |
commit | 2eff368dd03c93a503e13ab82cf4c4abb0c06aa9 (patch) | |
tree | b00065517fbbe2d95b913c2ff3d8f160e69ffc9e /cpu | |
parent | 1cfc27742448ab0e364d2f7ffc7460d90714a6d2 (diff) | |
download | gem5-2eff368dd03c93a503e13ab82cf4c4abb0c06aa9.tar.xz |
Cleaned up some of the Fault system.
arch/alpha/ev5.cc:
Commented out the intr_post function since it's not used. If this really -is- needed, it should be moved into the fault class.
arch/alpha/faults.cc:
arch/alpha/faults.hh:
Moved the fault invocation code into the fault class fully, and got rid of the need for isA.
cpu/exec_context.cc:
cpu/exec_context.hh:
Removed the trap function from the ExecContext. The faults will execute normally in full system mode, but always panic in syscall emulation mode.
cpu/ozone/cpu.hh:
cpu/simple/cpu.hh:
Changed the execution context executing a fault to a fault executing on the execution context.
sim/faults.cc:
If not in full system mode, trying to invoke a fault causes a panic.
sim/faults.hh:
Removed the isA function.
--HG--
extra : convert_revision : 894dc8f0755c8efc4b7ef5a09fb2cf7373042395
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/exec_context.cc | 12 | ||||
-rw-r--r-- | cpu/exec_context.hh | 9 | ||||
-rw-r--r-- | cpu/ozone/cpu.hh | 2 | ||||
-rw-r--r-- | cpu/simple/cpu.hh | 2 |
4 files changed, 2 insertions, 23 deletions
diff --git a/cpu/exec_context.cc b/cpu/exec_context.cc index 0e787a547..9b6ff427b 100644 --- a/cpu/exec_context.cc +++ b/cpu/exec_context.cc @@ -220,15 +220,3 @@ ExecContext::regStats(const string &name) #endif } -void -ExecContext::trap(Fault fault) -{ - //TheISA::trap(fault); //One possible way to do it... - - /** @todo: Going to hack it for now. Do a true fixup later. */ -#if FULL_SYSTEM - fault->invoke(this); -#else - fatal("fault (%d) detected @ PC 0x%08p", fault, readPC()); -#endif -} diff --git a/cpu/exec_context.hh b/cpu/exec_context.hh index 7ab8c589e..033d3d30a 100644 --- a/cpu/exec_context.hh +++ b/cpu/exec_context.hh @@ -427,18 +427,9 @@ class ExecContext void setIntrFlag(int val) { regs.intrflag = val; } Fault hwrei(); bool inPalMode() { return AlphaISA::PcPAL(regs.pc); } - void ev5_temp_trap(Fault fault); bool simPalCheck(int palFunc); #endif - /** Meant to be more generic trap function to be - * called when an instruction faults. - * @param fault The fault generated by executing the instruction. - * @todo How to do this properly so it's dependent upon ISA only? - */ - - void trap(Fault fault); - #if !FULL_SYSTEM TheISA::IntReg getSyscallArg(int i) { diff --git a/cpu/ozone/cpu.hh b/cpu/ozone/cpu.hh index 667e2b3f8..f5d84d656 100644 --- a/cpu/ozone/cpu.hh +++ b/cpu/ozone/cpu.hh @@ -517,7 +517,7 @@ class OoOCPU : 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 trap(Fault fault) { fault->invoke(xc); } bool simPalCheck(int palFunc) { return xc->simPalCheck(palFunc); } #else void syscall() { xc->syscall(); } diff --git a/cpu/simple/cpu.hh b/cpu/simple/cpu.hh index 8396937a8..0b8d84e53 100644 --- a/cpu/simple/cpu.hh +++ b/cpu/simple/cpu.hh @@ -347,7 +347,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) { fault->invoke(xc); } + void trap(Fault fault) { fault->invoke(xc); } bool simPalCheck(int palFunc) { return xc->simPalCheck(palFunc); } #else void syscall() { xc->syscall(); } |