This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EALLOW protection in interrupt service routine



Hi

           I am using 4 DMA channels in my application,  at the end of each DMA transfer interrupt is generated and respective ISR is called. According to the  document " SPRU430E"  when CPU  services an interrupt the current value of the EALLOW is saved on the stack and the EALLOW is cleared.  therefore when in ISR EALLOW is used to access DMA resistors. when CPU is servicing ISR for DMA4 and after processing EALLOW instruction if DMA 1 interrupt comes and CPU has to serve  ISR for DMA 1. During this transfer from DMA4 ISR to DMA1 ISR , did EALLOW value is saved on the stack?

Thanks and Regards

Amol

  • Amol,

    The EALLOW bit is part of the ST1 status register.  ST1 is automatically pushed onto the stack during the interrupt response, and restored from the stack on return from interrupt.  So, the value of EALLOW is preserved across an interrupt service.  If EALLOW was set before the interrupt, it will be set upon return from the interrupt.  If EALLOW was cleared before the interrupt, it will be clear upon return from the interrupt.

    Note that during the interrupt entry procedure, after saving ST1 on the stack EALLOW is automatically cleared before entering the ISR.  If the user needs EALLOW set during the ISR, software needs to set it.

    Regards,

    David