Program Control
3
3 – 16
3.4.2.2 Interrupt Mask Register (IMASK)
Each bit of the IMASK register enables or disables the servicing of an
individual interrupt. Specific bit definitions for each processor’s IMASK
register are given in Appendix E, “Control/Status Registers.” The mask
bits are positive sense: 0=masked, 1=enabled. IMASK is set to zero upon a
processor reset.
On the ADSP-2171, ADSP-2181, and ADSP-21msp58/59 processors, all
interrupts are automatically disabled for one instruction cycle following
the execution of an instruction that modifies IMASK. This does not affect
serial port autobuffering or DMA transfers.
If an edge-sensitive interrupt request signal occurs when the interrupt is
masked, the request is latched but not serviced; the interrupt can then be
recognized in software and serviced later.
The contents of IMASK are automatically pushed onto the status stack
when entering an interrupt service routine and popped back when
returning from the routine. The configuration of IMASK upon entering the
interrupt service routine is determined by the interrupt nesting enable bit
(bit 4) of ICNTL; it may be altered, though, as part of the interrupt service
routine itself.
When nesting is disabled, all interrupt levels are masked automatically
(IMASK set to zero) when an interrupt service routine is entered.
When nesting is enabled, IMASK is set so that only equal and lower
priority interrupts are masked; higher priority interrupts remain
configured as they were prior to the interrupt. This is shown graphically,
for the ADSP-2101, in Table 3.8.
The interrupt nesting enable bit (in ICNTL) determines the state of IMASK
upon entering the interrupt, as shown in Table 3.8.