From 7735271ff686e9bdc134df5e4f8f67f50a3b4829 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Mon, 25 Apr 2005 14:37:10 +0000 Subject: 2005-04-25 Jennifer Averett PR 779/bsp * mpc5xx/console-generic/console-generic.c, mpc5xx/irq/irq.c, mpc5xx/irq/irq.h, mpc5xx/irq/irq_init.c: Add parameter to powerpc interrupt handler routines --- c/src/lib/libcpu/powerpc/ChangeLog | 7 +++++++ c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c | 2 +- c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c | 4 ++-- c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.h | 7 ++++++- c/src/lib/libcpu/powerpc/mpc5xx/irq/irq_init.c | 4 ++-- 5 files changed, 18 insertions(+), 6 deletions(-) (limited to 'c') diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog index c8041facf8..04a2067514 100644 --- a/c/src/lib/libcpu/powerpc/ChangeLog +++ b/c/src/lib/libcpu/powerpc/ChangeLog @@ -1,3 +1,10 @@ +2005-04-25 Jennifer Averett + + PR 779/bsp + * mpc5xx/console-generic/console-generic.c, mpc5xx/irq/irq.c, + mpc5xx/irq/irq.h, mpc5xx/irq/irq_init.c: Add parameter to powerpc + interrupt handler routines + 2005-04-15 Jennifer Averett * mpc6xx/clock/c_clock.c, mpc6xx/clock/c_clock.h, diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c b/c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c index 2625bb56bf..d4c8603232 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c +++ b/c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c @@ -270,7 +270,7 @@ m5xx_uart_setAttributes( * Interrupt handling. */ static void -m5xx_sci_interrupt_handler (void) +m5xx_sci_interrupt_handler (rtems_irq_hdl_param unused) { int minor; diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c index 40bf8341bc..6a71b0b80f 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c +++ b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c @@ -417,7 +417,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[CPU_DECREMENTER].hdl(); + rtems_hdl_tbl[CPU_DECREMENTER].hdl(rtems_hdl_tbl[CPU_DECREMENTER].handle); _CPU_MSR_SET(msr); return; @@ -466,7 +466,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[irq].hdl(); + rtems_hdl_tbl[irq].hdl(rtems_hdl_tbl[irq].handle); _CPU_MSR_SET(msr); diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.h b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.h index 6ebff4890c..b17016fcb0 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.h +++ b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.h @@ -165,7 +165,8 @@ int CPU_irq_level_from_symbolic_name(const rtems_irq_symbolic_name name); 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__*); @@ -179,6 +180,10 @@ typedef struct __rtems_irq_connect_data__ { * Handler. See comment on handler properties below in function prototype. */ rtems_irq_hdl hdl; + /* + * Handler handle to store private data + */ + rtems_irq_hdl_param handle; /* * Function for enabling interrupts at device level (ONLY!). * The CPU code will automatically enable it at USIU level and UIMB level. diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq_init.c b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq_init.c index bc2a3043f1..9f2488a012 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq_init.c +++ b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq_init.c @@ -48,8 +48,8 @@ static int connected() {return 1;} static rtems_irq_connect_data rtemsIrq[CPU_IRQ_COUNT]; static rtems_irq_global_settings initial_config; static rtems_irq_connect_data defaultIrq = { - /* vector, hdl , on , off , isOn */ - 0, nop_func , nop_func , nop_func , not_connected + /* vector, hdl ,handle , on , off , isOn */ + 0, nop_func ,NULL , nop_func , nop_func , not_connected }; static rtems_irq_prio irqPrioTable[CPU_IRQ_COUNT]={ -- cgit v1.2.3