forked from Imagelibrary/rtems
2011-07-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
PR 1832/libcpu * at91rm9200/irq/irq.c: he bsp_interrupt_dispatch routine does not determine the correct interrupt source number. According to the datasheet, the reading of the interrupt vector register (AIC_IVR) notifies the hardware that the OS is taken care of the interrupt. Only after AIC_IVR have been read can the correct source number be read from the interrupt status register (AIC_ISR).
This commit is contained in:
@@ -1,3 +1,13 @@
|
||||
2011-07-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
PR 1832/libcpu
|
||||
* at91rm9200/irq/irq.c: he bsp_interrupt_dispatch routine does not
|
||||
determine the correct interrupt source number. According to the
|
||||
datasheet, the reading of the interrupt vector register (AIC_IVR)
|
||||
notifies the hardware that the OS is taken care of the interrupt.
|
||||
Only after AIC_IVR have been read can the correct source number be
|
||||
read from the interrupt status register (AIC_ISR).
|
||||
|
||||
2011-06-07 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||
|
||||
* shared/include/cache_.h: Moved content of "cache.h" to "cache_.h".
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
void bsp_interrupt_dispatch(void)
|
||||
{
|
||||
rtems_vector_number vector = AIC_CTL_REG(AIC_ISR);
|
||||
rtems_vector_number vector = AIC_CTL_REG(AIC_IVR);
|
||||
|
||||
bsp_interrupt_handler_dispatch(vector);
|
||||
|
||||
@@ -44,6 +44,12 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
||||
|
||||
rtems_status_code bsp_interrupt_facility_initialize(void)
|
||||
{
|
||||
unsigned long i = 0;
|
||||
|
||||
for (i = 0; i < 32; ++i) {
|
||||
AIC_SVR_REG(i<<2) = i;
|
||||
}
|
||||
|
||||
/* disable all interrupts */
|
||||
AIC_CTL_REG(AIC_IDCR) = 0xffffffff;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user