
2-36
Functional Description
If a fatal interrupt is masked and that condition occurs, then SCRIPTS
still stop, the appropriate bit in the DSTAT, SIST0, or SIST1 register is
set, and the SIP or DIP bits in the ISTAT is set, but the IRQ/ pin is not
asserted.
When the chip is initialized, enable all fatal interrupts if you are using
hardware interrupts. If a fatal interrupt is disabled and that interrupt
condition occurs, the SCRIPTS halt and the system does not detect it
unless it times out and checks the Interrupt Status (ISTAT) after a certain
period of inactivity.
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 ISTAT inform the system of interrupts, not the IRQ/ pin.
Masking an interrupt after IRQ/ is asserted does not deassert IRQ/.
2.10.5 Stacked Interrupts
The SYM53C895 stacks interrupts if they occur one after the other. If the
SIP or DIP bits in the Interrupt Status (ISTAT) register are set (rst level),
then at least one pending interrupt already exists, and any future
interrupts are stacked in extra registers behind the SCSI Interrupt Status
Zero (SIST0), SCSI Interrupt Status One (SIST1), 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 SIST0, SIST1, and DMA Status
(DSTAT). When the rst level of interrupts are cleared, all the interrupts
that came in afterward move into the SIST0, SIST1, and DSTAT. After the
rst interrupt is cleared by reading the appropriate register, these three
events occur:
1.
The IRQ/ pin is deasserted for a minimum of three CLKs.
2.
The stacked interrupt(s) move into the SIST0, SIST1, or DSTAT.
3.
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 right into the SIST0 or