diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 18:05:34 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 18:05:34 +0000 |
commit | 00d8424e98b2ba88ef2b9aee550b75add473c5bf (patch) | |
tree | 45f2f54265d56b37a4f76a112b3544478128aade | |
parent | 2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com> (diff) | |
download | rtems-00d8424e98b2ba88ef2b9aee550b75add473c5bf.tar.bz2 |
2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com>
PR 779/bsp
* clock/p_clock.c, irq/irq.c, irq/irq.h, irq/irq_init.c,
network/network.c: add parameter to new exception interrupt handlers
in powerpc bsps
6 files changed, 20 insertions, 6 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog b/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog index ca4168dcc1..c63b055d11 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog @@ -1,3 +1,10 @@ +2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com> + + PR 779/bsp + * clock/p_clock.c, irq/irq.c, irq/irq.h, irq/irq_init.c, + network/network.c: add parameter to new exception interrupt handlers + in powerpc bsps + 2005-02-17 Ralf Corsepius <ralf.corsepius@rtems.org> * startup/bspstart.c: include <rtems/powerpc/powerpc.h>. diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c b/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c index 4e92c97e5b..acddf4b6df 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/clock/p_clock.c @@ -25,6 +25,7 @@ extern void Clock_isr(); static rtems_irq_connect_data clockIrqData = {BSP_PERIODIC_TIMER, (rtems_irq_hdl)Clock_isr, + NULL, (rtems_irq_enable)clockOn, (rtems_irq_disable)clockOff, (rtems_irq_is_enabled)clockIsOn}; diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c index d8abb1f29b..11dd36418e 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c @@ -437,7 +437,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) new_msr = msr | MSR_EE; _CPU_MSR_SET(new_msr); - rtems_hdl_tbl[BSP_DECREMENTER].hdl(); + rtems_hdl_tbl[BSP_DECREMENTER].hdl(rtems_hdl_tbl[BSP_DECREMENTER].handle); _CPU_MSR_SET(msr); @@ -482,7 +482,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) _CPU_MSR_SET(new_msr); /* call handler */ - rtems_hdl_tbl[irq].hdl(); + rtems_hdl_tbl[irq].hdl(rtems_hdl_tbl[irq].handle); /* disable exceptions again */ _CPU_MSR_SET(msr); diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.h b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.h index 7d24745142..2ae0586e3e 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.h +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.h @@ -159,7 +159,8 @@ typedef enum { typedef unsigned char rtems_irq_prio; struct __rtems_irq_connect_data__; /* forward declaratiuon */ -typedef void (*rtems_irq_hdl) (void); +typedef void *rtems_irq_hdl_param; +typedef void (*rtems_irq_hdl) (rtems_irq_hdl_param); typedef void (*rtems_irq_enable) (const struct __rtems_irq_connect_data__*); typedef void (*rtems_irq_disable) (const struct __rtems_irq_connect_data__*); typedef int (*rtems_irq_is_enabled) (const struct __rtems_irq_connect_data__*); @@ -174,6 +175,10 @@ typedef struct __rtems_irq_connect_data__ { */ rtems_irq_hdl hdl; /* + * Handler handle to store private data + */ + rtems_irq_hdl_param handle; + /* * function for enabling interrupts at device level (ONLY!). * The BSP code will automatically enable it at SIU level and CPM level. * RATIONALE : anyway such code has to exist in current driver code. diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq_init.c b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq_init.c index 952cf76d66..56e29953bf 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq_init.c @@ -48,8 +48,8 @@ static int connected() {return 1;} static rtems_irq_connect_data rtemsIrq[BSP_IRQ_NUMBER]; static rtems_irq_global_settings initial_config; static rtems_irq_connect_data defaultIrq = { - /* vectorIdex, hdl , on , off , isOn */ - 0, nop_func , nop_func , nop_func , not_connected + /* vectorIdex, hdl , handle , on , off , isOn */ + 0, nop_func , NULL , nop_func , nop_func , not_connected }; /* diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/network/network.c b/c/src/lib/libbsp/powerpc/mpc8260ads/network/network.c index b9a2902ddb..1bb4aaf971 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/network/network.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/network/network.c @@ -150,7 +150,7 @@ static int m8xx_scc3_hdlc_isOn(const rtems_irq_connect_data* ptr) * SCCs. */ static void -m8xx_scc3_interrupt_handler () +m8xx_scc3_interrupt_handler (rtems_irq_hdl_param unused) { /* * Frame received? @@ -188,6 +188,7 @@ m8xx_scc3_interrupt_handler () static rtems_irq_connect_data hdlcSCC3IrqData = { BSP_CPM_IRQ_SCC3, (rtems_irq_hdl) m8xx_scc3_interrupt_handler, + NULL, (rtems_irq_enable) m8xx_scc3_hdlc_on, (rtems_irq_disable) m8xx_scc3_hdlc_off, (rtems_irq_is_enabled)m8xx_scc3_hdlc_isOn |