diff options
Diffstat (limited to 'src/arch/sparc/ua2005.cc')
-rw-r--r-- | src/arch/sparc/ua2005.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/arch/sparc/ua2005.cc b/src/arch/sparc/ua2005.cc index 4249bb05f..b8a891c6d 100644 --- a/src/arch/sparc/ua2005.cc +++ b/src/arch/sparc/ua2005.cc @@ -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: Ali Saidi */ #include "arch/sparc/miscregfile.hh" @@ -47,6 +45,7 @@ MiscRegFile::setFSRegWithEffect(int miscReg, const MiscReg &val, // Check if we are going to interrupt because of something setReg(miscReg, val); tc->getCpuPtr()->checkInterrupts = true; + tc->getCpuPtr()->post_interrupt(hstick_match); if (val != 0x10000 && val != 0) warn("Writing to softint not really supported, writing: %#x\n", val); break; @@ -82,7 +81,7 @@ MiscRegFile::setFSRegWithEffect(int miscReg, const MiscReg &val, break; case MISCREG_PSTATE: - if (val & ie && !(pstate & ie)) { + if (val & PSTATE::ie && !(pstate & PSTATE::ie)) { tc->getCpuPtr()->checkInterrupts = true; } setReg(miscReg, val); @@ -129,7 +128,7 @@ MiscRegFile::setFSRegWithEffect(int miscReg, const MiscReg &val, case MISCREG_HPSTATE: // T1000 spec says impl. dependent val must always be 1 - setReg(miscReg, val | id); + setReg(miscReg, val | HPSTATE::id); break; case MISCREG_HTSTATE: case MISCREG_STRAND_STS_REG: @@ -205,6 +204,7 @@ MiscRegFile::processSTickCompare(ThreadContext *tc) if (ticks == 0) { DPRINTF(Timer, "STick compare cycle reached at %#x\n", (stick_cmpr & mask(63))); + tc->getCpuPtr()->post_interrupt(soft_interrupt); tc->getCpuPtr()->checkInterrupts = true; softint |= ULL(1) << 16; } else @@ -225,6 +225,7 @@ MiscRegFile::processHSTickCompare(ThreadContext *tc) if (ticks == 0) { DPRINTF(Timer, "HSTick compare cycle reached at %#x\n", (stick_cmpr & mask(63))); + tc->getCpuPtr()->post_interrupt(hstick_match); tc->getCpuPtr()->checkInterrupts = true; // Need to do something to cause interrupt to happen here !!! @todo } else |