108,110c108,109
<
< Fault
< Interrupts::getInterrupt(ThreadContext * tc)
---
> bool
> Interrupts::checkInterrupts(ThreadContext *tc) const
112c111,112
< DPRINTF(Interrupt, "Interrupts getInterrupt\n");
---
> if (!interruptsPending(tc))
> return false;
123,127c123,125
< if (status.im && cause.ip) {
< DPRINTF(Interrupt, "Interrupt! IM[7:0]=%d IP[7:0]=%d \n",
< (unsigned)status.im, (unsigned)cause.ip);
< return std::make_shared<InterruptFault>();
< }
---
> if (status.im && cause.ip)
> return true;
>
130c128
< return NoFault;
---
> return false;
132a131,143
> Fault
> Interrupts::getInterrupt(ThreadContext * tc)
> {
> assert(checkInterrupts(tc));
>
> StatusReg M5_VAR_USED status = tc->readMiscRegNoEffect(MISCREG_STATUS);
> CauseReg M5_VAR_USED cause = tc->readMiscRegNoEffect(MISCREG_CAUSE);
> DPRINTF(Interrupt, "Interrupt! IM[7:0]=%d IP[7:0]=%d \n",
> (unsigned)status.im, (unsigned)cause.ip);
>
> return std::make_shared<InterruptFault>();
> }
>