diff options
author | Jay Monkman <jtm@smoothsmoothie.com> | 2006-06-03 03:14:07 +0000 |
---|---|---|
committer | Jay Monkman <jtm@smoothsmoothie.com> | 2006-06-03 03:14:07 +0000 |
commit | 7afe5a2fe01b2edf7d1db5bc684e6b9ba7cb1a82 (patch) | |
tree | d5e98dd64e2485864d66952d7fdc0a8d148ffb3a /c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c | |
parent | 2006-06-02 Jay Monkman (diff) | |
download | rtems-7afe5a2fe01b2edf7d1db5bc684e6b9ba7cb1a82.tar.bz2 |
2006-06-02 Jay Monkman
* at91rm9200/irq/bsp_irq_init.c, mc9328mxl/clock/clockdrv.c,
mc9328mxl/irq/bsp_irq_asm.S, mc9328mxl/irq/bsp_irq_init.c,
mc9328mxl/irq/irq.c, mc9328mxl/irq/irq.h,
s3c2400/irq/bsp_irq_init.c: Changed interrupt handling
to use shared rtems_irq_connect_data struct.
Diffstat (limited to 'c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c')
-rw-r--r-- | c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c index 23c29698f9..fcb74150bc 100644 --- a/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c +++ b/c/src/lib/libcpu/arm/mc9328mxl/irq/irq.c @@ -16,6 +16,8 @@ #include <rtems/score/apiext.h> #include <mc9328mxl.h> +mc9328mxl_irq_info_t bsp_vector_table[BSP_MAX_INT]; + /* * This function check that the value given for the irq line * is valid. @@ -36,9 +38,6 @@ static int isValidInterrupt(int irq) int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq) { rtems_interrupt_level level; - rtems_irq_hdl *bsp_tbl; - - bsp_tbl = (rtems_irq_hdl *)&bsp_vector_table; if (!isValidInterrupt(irq->name)) { return 0; @@ -47,8 +46,8 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq) /* * Check if default handler is actually connected. If not issue an error. */ - if (bsp_tbl[irq->name] != default_int_handler) { - return 0; + if (bsp_vector_table[irq->name].vector != default_int_handler) { + return 0; } _CPU_ISR_Disable(level); @@ -56,7 +55,8 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq) /* * store the new handler */ - bsp_tbl[irq->name] = irq->hdl; + bsp_vector_table[irq->name].vector = irq->hdl; + bsp_vector_table[irq->name].data = irq->handle; /* * Enable interrupt on device @@ -80,18 +80,15 @@ int BSP_install_rtems_irq_handler (const rtems_irq_connect_data* irq) int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) { rtems_interrupt_level level; - rtems_irq_hdl *bsp_tbl; - bsp_tbl = (rtems_irq_hdl *)&bsp_vector_table; - if (!isValidInterrupt(irq->name)) { return 0; } /* * Check if the handler is actually connected. If not issue an error. */ - if (bsp_tbl[irq->name] != irq->hdl) { - return 0; + if (bsp_vector_table[irq->name].vector != irq->hdl) { + return 0; } _CPU_ISR_Disable(level); @@ -106,8 +103,8 @@ int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) /* * restore the default irq value */ - bsp_tbl[irq->name] = default_int_handler; - + bsp_vector_table[irq->name].vector = default_int_handler; + bsp_vector_table[irq->name].data = NULL; _CPU_ISR_Enable(level); |