Browse Source

Merge pull request #1830 from demin-han/master

Fix non-standard interrupt start position
pull/1848/head
Jerry Zhao 2 years ago
committed by GitHub
parent
commit
f0d4d42913
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      riscv/processor.cc

4
riscv/processor.cc

@ -304,8 +304,8 @@ void processor_t::take_interrupt(reg_t pending_interrupts)
const bool nmie = !(state.mnstatus && !get_field(state.mnstatus->read(), MNSTATUS_NMIE));
if (!state.debug_mode && nmie && enabled_interrupts) {
// nonstandard interrupts have highest priority
if (enabled_interrupts >> (IRQ_M_EXT + 1))
enabled_interrupts = enabled_interrupts >> (IRQ_M_EXT + 1) << (IRQ_M_EXT + 1);
if (enabled_interrupts >> (IRQ_LCOF + 1))
enabled_interrupts = enabled_interrupts >> (IRQ_LCOF + 1) << (IRQ_LCOF + 1);
// standard interrupt priority is MEI, MSI, MTI, SEI, SSI, STI
else if (enabled_interrupts & MIP_MEIP)
enabled_interrupts = MIP_MEIP;

Loading…
Cancel
Save