diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 18:10:29 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 18:10:29 +0000 |
commit | 4953659b06008470cf46b2e45dccb48b8a343802 (patch) | |
tree | 4099336b6694b160c6dce4736b126b09b27777c1 /c/src | |
parent | 2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com> (diff) | |
download | rtems-4953659b06008470cf46b2e45dccb48b8a343802.tar.bz2 |
2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com>
PR 779/bsp
* irq/irq.c, irq/irq.h, irq/irq_init.c, network/GT64260eth.c: add
parameter to new exception interrupt handlers in powerpc bsps
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme5500/ChangeLog | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c | 12 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme5500/irq/irq.h | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme5500/irq/irq_init.c | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/mvme5500/network/GT64260eth.c | 1 |
5 files changed, 21 insertions, 9 deletions
diff --git a/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog b/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog index d8bbdfdb0b..a957a4e327 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog +++ b/c/src/lib/libbsp/powerpc/mvme5500/ChangeLog @@ -1,5 +1,11 @@ 2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com> + PR 779/bsp + * irq/irq.c, irq/irq.h, irq/irq_init.c, network/GT64260eth.c: add + parameter to new exception interrupt handlers in powerpc bsps + +2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com> + * startup/linkcmds: add missing section to link cmds 2005-03-14 Joel Sherrill <joel@OARcorp.com> diff --git a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c index 3a97d49925..fbd701c00c 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.c @@ -112,7 +112,7 @@ void GT_GPP_IntHandler0() irqNum = bitNum+BSP_GPP_IRQ_LOWEST_OFFSET; /* call the necessary interrupt handlers */ if (rtems_hdl_tbl[irqNum].hdl != default_rtems_entry.hdl) - rtems_hdl_tbl[irqNum].hdl(); + rtems_hdl_tbl[irqNum].hdl(rtems_hdl_tbl[irqNum].handle); else gpp_int_error= bitNum; /*GPP interrupt bitNum not connected */ } @@ -136,7 +136,7 @@ void GT_GPP_IntHandler1() irqNum = bitNum+BSP_GPP8_IRQ_OFFSET; /* call the necessary interrupt handlers */ if (rtems_hdl_tbl[irqNum].hdl != default_rtems_entry.hdl) - rtems_hdl_tbl[irqNum].hdl(); + rtems_hdl_tbl[irqNum].hdl(rtems_hdl_tbl[irqNum].handle); else gpp_int_error= bitNum+8; /*GPP interrupt bitNum not connected */ } @@ -159,7 +159,7 @@ void GT_GPP_IntHandler2() irqNum = bitNum+BSP_GPP16_IRQ_OFFSET; /* call the necessary interrupt handlers */ if (rtems_hdl_tbl[irqNum].hdl != default_rtems_entry.hdl) - rtems_hdl_tbl[irqNum].hdl(); + rtems_hdl_tbl[irqNum].hdl(rtems_hdl_tbl[irqNum].handle); else gpp_int_error= bitNum+16; /*GPP interrupt bitNum not connected */ } @@ -183,7 +183,7 @@ void GT_GPP_IntHandler3() irqNum = bitNum+BSP_GPP24_IRQ_OFFSET; /* call the necessary interrupt handlers */ if (rtems_hdl_tbl[irqNum].hdl != default_rtems_entry.hdl) - rtems_hdl_tbl[irqNum].hdl(); + rtems_hdl_tbl[irqNum].hdl(rtems_hdl_tbl[irqNum].handle); else gpp_int_error= bitNum+24; /*GPP interrupt bitNum not connected */ } @@ -455,7 +455,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; @@ -506,7 +506,7 @@ void C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) _CPU_MSR_GET(msr); 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); break; } diff --git a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.h b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.h index 2ec5ea5abf..62fc34e279 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.h +++ b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq.h @@ -154,7 +154,8 @@ extern rtems_GTirq_masks GT_MAINirqLO_cache, GT_MAINirqHI_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_ack) (void); typedef void (*rtems_irq_enable) (const struct __rtems_irq_connect_data__*); typedef void (*rtems_irq_disable) (const struct __rtems_irq_connect_data__*); @@ -169,6 +170,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/mvme5500/irq/irq_init.c b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq_init.c index f6d4f29fb5..1705b6953e 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/mvme5500/irq/irq_init.c @@ -47,8 +47,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 }; rtems_irq_prio BSPirqPrioTable[BSP_MAIN_IRQ_NUMBER]={ diff --git a/c/src/lib/libbsp/powerpc/mvme5500/network/GT64260eth.c b/c/src/lib/libbsp/powerpc/mvme5500/network/GT64260eth.c index 9b21e42600..1168f167a3 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/network/GT64260eth.c +++ b/c/src/lib/libbsp/powerpc/mvme5500/network/GT64260eth.c @@ -222,6 +222,7 @@ static void GT64260eth_isr() static rtems_irq_connect_data GT64260ethIrqData={ BSP_MAIN_ETH0_IRQ, (rtems_irq_hdl) GT64260eth_isr, + NULL, (rtems_irq_enable) GT64260eth_irq_on, (rtems_irq_disable) GT64260eth_irq_off, (rtems_irq_is_enabled) GT64260eth_irq_is_on, |