
2-24
Functional Description
If ISTAT is being polled instead of using hardware interrupts, then
masking a fatal interrupt makes no difference since the SIP and DIP bits
in the
Interrupt Status (ISTAT)
inform the system of interrupts, not the
IRQ/ pin.
Masking an interrupt after IRQ/ is asserted does not cause deassertion
of IRQ/.
2.6.5 Stacked Interrupts
The SYM53C710 will stack interrupts, if they occur, one after the other.
If the SIP or DIP bits in the
Interrupt Status (ISTAT)
register are set (first
level), then there is already at least one pending interrupt, and any future
interrupts are stacked in extra registers behind the
SCSI Status Zero
(SSTAT0)
and
DMA Status (DSTAT)
registers (second level). When two
interrupts have occurred and the two levels of the stack are full, any
further interrupts set additional bits in the extra registers behind SSTAT0
and DSTAT. When the first level of interrupts are cleared, all the interrupts
that came in afterward move into the SSTAT0 and DSTAT. After the first
interrupt is cleared by reading the appropriate register, the IRQ/ pin is
deasserted for a set time as published in the product technical manual;
the stacked interrupt(s) move into the SSTAT0 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
SCSI Status Zero (SSTAT0)
but does not assert the IRQ/
pin. Since no interrupt is generated, future interrupts move into the
SCSI
Status Zero (SSTAT0)
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 either the
Clear DMA and SCSI FIFOs (CLF) bit or the Flush DMA FIFO (FLF) bit