LSI 53C810A User Manual

Page of 238
2-20
Functional Description
interrupts are cleared, all the interrupts that came in afterward move into
SIST0, SIST1, and DSTAT. After the first interrupt is cleared by reading
the appropriate register, the IRQ/ pin is deasserted for a minimum of
three CLKs; the stacked interrupts move into SIST0, SIST1, or DSTAT;
and the IRQ/ pin is asserted once again.
Since a masked nonfatal interrupt does not set the SIP or DIP bits,
interrupt stacking does not occur. A masked, nonfatal interrupt still posts
the interrupt in SIST0, but does not assert the IRQ/ pin. Since no
interrupt is generated, future interrupts move into
or
instead of being
stacked behind another interrupt. When another condition occurs that
generates an interrupt, the bit corresponding to the earlier masked
nonfatal interrupt is still set.
A related situation to interrupt stacking is when two interrupts occur
simultaneously. Since stacking does not occur until the SIP or DIP bits
are set, there is a small timing window in which multiple interrupts can
occur but are not stacked. These could be multiple SCSI interrupts (SIP
set), multiple DMA interrupts (DIP set), or multiple SCSI and multiple
DMA interrupts (both SIP and DIP set).
As previously mentioned, DMA interrupts do not attempt to flush the
FIFOs before generating the interrupt. It is important to set the Clear
DMA FIFO (CLF) and Clear SCSI FIFO (CSF) bits if a DMA interrupt
occurs and the DMA FIFO Empty (DFE) bit is not set. This is because
any future SCSI interrupts are not posted until the DMA FIFO is cleared
of data. These ‘locked out’ SCSI interrupts are posted as soon as the
DMA FIFO is empty.
2.7.1.5 Halting in an Orderly Fashion
When an interrupt occurs, the LSI53C810A attempts to halt in an orderly
fashion.
If the interrupt occurs in the middle of an instruction fetch, the fetch
is completed, except in the case of a Bus Fault. Execution does not
begin, but the
points to the next
instruction since it is updated when the current instruction is fetched.