mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-05 15:15:44 +00:00
2003-07-08 Joel Sherrill <joel@OARcorp.com>
PR 416/bsps * ppc403/ictrl/ictrl.c (ictrl_isr): We acknolwegde the interrupt in interrupt controller (clr_exisr(mask)) before calling the interrupt handler that will acnowledge the interrupt source. This results in the interrupt beeing seen a second time by the interrupt controller. Reported and fixed by El Kolli Yacine <yacine.elkolli@crf.canon.fr>.
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
2003-07-08 Joel Sherrill <joel@OARcorp.com>
|
||||||
|
|
||||||
|
PR 416/bsps
|
||||||
|
* ppc403/ictrl/ictrl.c (ictrl_isr): We acknolwegde the interrupt in
|
||||||
|
interrupt controller (clr_exisr(mask)) before calling the interrupt
|
||||||
|
handler that will acnowledge the interrupt source. This results in
|
||||||
|
the interrupt beeing seen a second time by the interrupt controller.
|
||||||
|
Reported and fixed by El Kolli Yacine <yacine.elkolli@crf.canon.fr>.
|
||||||
|
|
||||||
2003-03-25 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>
|
2003-03-25 Thomas Doerfler <Thomas.Doerfler@imd-systems.de>
|
||||||
|
|
||||||
PR 368/filesystems
|
PR 368/filesystems
|
||||||
|
|||||||
@@ -195,13 +195,14 @@ ictrl_isr(rtems_vector_number vector,CPU_Interrupt_frame *cpu_frame)
|
|||||||
for (exvec = 0;exvec < PPC_IRQ_EXT_MAX;exvec++) {
|
for (exvec = 0;exvec < PPC_IRQ_EXT_MAX;exvec++) {
|
||||||
mask = VEC_TO_EXMSK(exvec);
|
mask = VEC_TO_EXMSK(exvec);
|
||||||
if (0 != (istat & mask)) {
|
if (0 != (istat & mask)) {
|
||||||
clr_exisr(mask);
|
/*clr_exisr(mask); too early to ack*/
|
||||||
handler = ictrl_vector_table[exvec];
|
handler = ictrl_vector_table[exvec];
|
||||||
if (handler) {
|
if (handler) {
|
||||||
istat &= ~mask;
|
istat &= ~mask;
|
||||||
global_vec = exvec + PPC_IRQ_EXT_BASE;
|
global_vec = exvec + PPC_IRQ_EXT_BASE;
|
||||||
(handler)(global_vec);
|
(handler)(global_vec);
|
||||||
}
|
}
|
||||||
|
clr_exisr(mask);/* now we can ack*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (istat != 0) { /* anything left? then we have a spurious interrupt */
|
if (istat != 0) { /* anything left? then we have a spurious interrupt */
|
||||||
|
|||||||
Reference in New Issue
Block a user