diff options
author | Lisa Hsu <hsul@eecs.umich.edu> | 2007-01-11 09:18:31 -0500 |
---|---|---|
committer | Lisa Hsu <hsul@eecs.umich.edu> | 2007-01-11 09:18:31 -0500 |
commit | d939060ec60da8e11e28a0c9946898a9e651247d (patch) | |
tree | 430f9f8096f3d13cd01fc8988251c51f4dd5786f /src/arch/sparc | |
parent | 0d7282d7ab9535a12ce0a0de7e0b3ea36ea9229d (diff) | |
download | gem5-d939060ec60da8e11e28a0c9946898a9e651247d.tar.xz |
Add Trap Level Zero to interrupts, remove some unreachable code that I forgot to remove last time.
--HG--
extra : convert_revision : 74c4c4591be5a66c21077a6fc5f3f60b0ee9bcc1
Diffstat (limited to 'src/arch/sparc')
-rw-r--r-- | src/arch/sparc/interrupts.hh | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/src/arch/sparc/interrupts.hh b/src/arch/sparc/interrupts.hh index 76bd4c6e2..879cd1825 100644 --- a/src/arch/sparc/interrupts.hh +++ b/src/arch/sparc/interrupts.hh @@ -24,8 +24,6 @@ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Gabe Black */ #ifndef __ARCH_SPARC_INTERRUPT_HH__ @@ -124,11 +122,10 @@ enum interrupts_t { } else { if (interrupts[trap_level_zero]) { - //HAVEN'T IMPLed YET if ((pstate & HPSTATE::tlz) && (tc->readMiscReg(MISCREG_TL) == 0)) { interrupts[trap_level_zero] = false; --numPosted; - return NoFault; + return new TrapLevelZero; } } if (interrupts[hstick_match]) { @@ -181,22 +178,6 @@ enum interrupts_t { } } return NoFault; - - - // conditioning the softint interrups - if (tc->readMiscReg(MISCREG_HPSTATE) & HPSTATE::hpriv) { - // if running in privileged mode, then pend the interrupt - return NoFault; - } else { - int int_level = InterruptLevel(tc->readMiscReg(MISCREG_SOFTINT)); - if ((int_level <= tc->readMiscReg(MISCREG_PIL)) || - !(tc->readMiscReg(MISCREG_PSTATE) & PSTATE::ie)) { - // if PIL or no interrupt enabled, then pend the interrupt - return NoFault; - } else { - return new InterruptLevelN(int_level); - } - } } void updateIntrInfo(ThreadContext * tc) |