You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// ID stage is halted when hazards are present (i.e. stalls for which the instruction currently in ID is not ready to be issued yet).
637
+
//
638
+
// In addition the ID stage may be halted to enable interrupts or debug to be taken.
639
+
// - If an interrupt (including NMI) is present it is not guaranteed that the pipeline
640
+
// can take the interrupt immediately. A LSU instruction could for instance be outstanding, causing the interrupt not to be taken.
641
+
// The controller uses (pending_interrupt && interrupt_allowed) to check for these conditions.
642
+
// When an interrupt (or NMI) is pending, the ID stage is halted to guarantee that an interruptible bubble eventually will
643
+
// occur in the WB stage.
644
+
// -- The ID stage is only halted iff debug_interruptible==1, indicating that we are not in debug mode or single step mode with interrupts disabled.
645
+
// --- If halting for interrupts while in debug mode (debug_interruptible == 0), the core would deadlock waiting for interrupt_allowed, but the core
646
+
// would never exit debug mode because the dret instruction could be blocked by the halted ID stage.
647
+
// -- The ID stage is only halted iff also the ID stage is haltable (meaning ID stage is not currently in the middle of a sequence or waiting for a CLIC pointer)
648
+
//
649
+
// - The ID stage is halted when any async or sync debug is pending for the same reasons as for interrupts.
650
+
//
651
+
// - If not checking for id_stage_haltable for interrupts and debug, the core could end up in a situation where it tries to create a bubble
652
+
// by halting ID, but the condition disallowing interrupt or debug will not disappear until the sequence currently handled by the ID stage
653
+
// is done. This would create an unrecoverable deadlock.
0 commit comments