forked from Imagelibrary/rtems
2008-01-10 Till Straumann <strauman@slac.stanford.edu>
* new-exceptions/bspsupport/irq.c: When unhooking and ISR only disable IRQs at the PIC if we are unhooking the last ISR.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2008-01-10 Till Straumann <strauman@slac.stanford.edu>
|
||||||
|
|
||||||
|
* new-exceptions/bspsupport/irq.c: When unhooking
|
||||||
|
and ISR only disable IRQs at the PIC if we are
|
||||||
|
unhooking the last ISR.
|
||||||
|
|
||||||
2007-12-11 Till Straumann <strauman@slac.stanford.edu>
|
2007-12-11 Till Straumann <strauman@slac.stanford.edu>
|
||||||
|
|
||||||
* Makefile.am: don't normally build-in test code
|
* Makefile.am: don't normally build-in test code
|
||||||
|
|||||||
@@ -230,20 +230,13 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (rtems_hdl_tbl[irq->name].hdl != irq->hdl)
|
if (rtems_hdl_tbl[irq->name].hdl != irq->hdl)
|
||||||
{
|
{
|
||||||
rtems_interrupt_enable(level);
|
rtems_interrupt_enable(level);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* disable_irq_at_pic is supposed to ignore
|
|
||||||
* requests to disable interrupts outside
|
|
||||||
* of the range handled by the PIC
|
|
||||||
*/
|
|
||||||
BSP_disable_irq_at_pic(irq->name);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Disable interrupt on device
|
* Disable interrupt on device
|
||||||
@@ -277,6 +270,16 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq)
|
|||||||
free(vchain);
|
free(vchain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Only disable at PIC if we removed the last handler */
|
||||||
|
if ( rtems_hdl_tbl[irq->name].hdl == default_rtems_entry.hdl ) {
|
||||||
|
/*
|
||||||
|
* disable_irq_at_pic is supposed to ignore
|
||||||
|
* requests to disable interrupts outside
|
||||||
|
* of the range handled by the PIC;
|
||||||
|
*/
|
||||||
|
BSP_disable_irq_at_pic(irq->name);
|
||||||
|
}
|
||||||
|
|
||||||
rtems_interrupt_enable(level);
|
rtems_interrupt_enable(level);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user