diff --git a/c/src/lib/libbsp/powerpc/psim/ChangeLog b/c/src/lib/libbsp/powerpc/psim/ChangeLog index 2793ca9021..4ec2b3d668 100644 --- a/c/src/lib/libbsp/powerpc/psim/ChangeLog +++ b/c/src/lib/libbsp/powerpc/psim/ChangeLog @@ -1,3 +1,9 @@ +2005-04-15 Jennifer Averett + + PR 779/bsp + * irq/irq.c, irq/irq.h, irq/irq_init.c: add parameter to new exception + interrupt handlers in powerpc bsps + 2005-04-11 Jennifer Averett PR 777/bsps diff --git a/c/src/lib/libbsp/powerpc/psim/irq/irq.c b/c/src/lib/libbsp/powerpc/psim/irq/irq.c index 6572d3c467..79d3a9a080 100644 --- a/c/src/lib/libbsp/powerpc/psim/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/psim/irq/irq.c @@ -306,7 +306,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); return; diff --git a/c/src/lib/libbsp/powerpc/psim/irq/irq.h b/c/src/lib/libbsp/powerpc/psim/irq/irq.h index 3d61db06e2..26a86df9b9 100644 --- a/c/src/lib/libbsp/powerpc/psim/irq/irq.h +++ b/c/src/lib/libbsp/powerpc/psim/irq/irq.h @@ -137,7 +137,8 @@ extern volatile rtems_i8259_masks i8259s_cache; 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__*); @@ -151,6 +152,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 BSP code will automatically enable it at i8259s level and openpic level. diff --git a/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c b/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c index 7ecc827bec..d3d75559c2 100644 --- a/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c @@ -65,8 +65,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 }; static rtems_irq_prio irqPrioTable[BSP_IRQ_NUMBER]={ /*