|
Re: MIPS BSP interrupt callout
|
10/31/2007 10:00 PM
post2368
|
Re: MIPS BSP interrupt callout
Thanks for the reply. I have another interrupt callout related question.
When implementing cascaded interrupts (NOT nested) I noticed that the first level completes an "ID/EOI" cycle before
cascading to the next level.
For example, consider two interrupt controllers called "INTA" and "INTB". INTB is cascaded from one of INTA's external
interrupts.
An interrupt sourced from INTB occurs. Here's the order in which I expected the callouts to run:
1. INTA id
2. INTB id
... service interrupt ...
3. INTB eoi
4. INTA eoi
Here's the actual order I observed the callouts run:
1. INTA id
2. INTA eoi
3. INTB id
... service interrupt ...
4. INTB eoi
The problem is the real source of the interrupt (from INTB) is not cleared yet (in INTB's id callout) before INTA's eoi
unmasks it's own interrupt. So inbetween INTA's eoi and INTB's id callout, another interrupt is latched (but not
triggered until INTB enters it's service routine).
1. INTA id
2. INTA eoi
3. INTB id
... trigger another interrupt ...
4. INTA id
5. INTA eoi
6. INTB id
... trigger another interrupt ...
How do I avoid this problem when implementing cascaded interrupts?
|
|
|