|
|
@ -174,7 +174,7 @@ void processor_t::take_interrupt(reg_t pending_interrupts) |
|
|
if (enabled_interrupts == 0) |
|
|
if (enabled_interrupts == 0) |
|
|
enabled_interrupts = pending_interrupts & state.mideleg & -s_enabled; |
|
|
enabled_interrupts = pending_interrupts & state.mideleg & -s_enabled; |
|
|
|
|
|
|
|
|
if (enabled_interrupts) |
|
|
if (state.dcsr.cause == 0 && enabled_interrupts) |
|
|
throw trap_t(((reg_t)1 << (max_xlen-1)) | ctz(enabled_interrupts)); |
|
|
throw trap_t(((reg_t)1 << (max_xlen-1)) | ctz(enabled_interrupts)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|