diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 17:52:46 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2005-04-15 17:52:46 +0000 |
commit | 2d0d0293ee19f46bfd5cada089ce9291e0ceaf4e (patch) | |
tree | 9b827d0464109ce5aac82528c57745ed95aeea7a /c/src/lib/libbsp/powerpc/shared | |
parent | 2005-04-15 <jennifer.averett@oarcorp.com> (diff) | |
download | rtems-2d0d0293ee19f46bfd5cada089ce9291e0ceaf4e.tar.bz2 |
2005-04-15 Jennifer Averett <jennifer.averett@oarcorp.com>
PR 779/bsp
* clock/p_clock.c, console/console.c, console/uart.c, console/uart.h,
irq/irq.c, irq/irq.h, irq/irq_init.c:
powerpc: add parameter to new exception interrupt handlers
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/clock/p_clock.c | 1 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/console/console.c | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/console/uart.c | 8 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/console/uart.h | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/irq/irq.c | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/irq/irq.h | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/shared/irq/irq_init.c | 4 |
7 files changed, 23 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c b/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c index c181d398bb..4d41dbd257 100644 --- a/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c +++ b/c/src/lib/libbsp/powerpc/shared/clock/p_clock.c @@ -20,6 +20,7 @@ static rtems_irq_connect_data clockIrqData = {BSP_DECREMENTER, clockIsr, + NULL, (rtems_irq_enable)clockOn, (rtems_irq_disable)clockOff, (rtems_irq_is_enabled) clockIsOn}; diff --git a/c/src/lib/libbsp/powerpc/shared/console/console.c b/c/src/lib/libbsp/powerpc/shared/console/console.c index 9a86ebf97b..d99463b184 100644 --- a/c/src/lib/libbsp/powerpc/shared/console/console.c +++ b/c/src/lib/libbsp/powerpc/shared/console/console.c @@ -54,9 +54,9 @@ int BSPBaseBaud = BSP_UART_BAUD_BASE; static int conSetAttr(int minor, const struct termios *); typedef struct TtySTblRec_ { - char *name; - void (*isr)(void); /* STUPID API doesn't pass a parameter :-( */ -} TtySTblRec, *TtySTbl; + char *name; + rtems_irq_hdl isr; +} TtySTblRec, *TtySTbl; static TtySTblRec ttyS[]={ { "/dev/ttyS0", diff --git a/c/src/lib/libbsp/powerpc/shared/console/uart.c b/c/src/lib/libbsp/powerpc/shared/console/uart.c index dc09a73608..ab48bb399d 100644 --- a/c/src/lib/libbsp/powerpc/shared/console/uart.c +++ b/c/src/lib/libbsp/powerpc/shared/console/uart.c @@ -692,14 +692,18 @@ BSP_uart_termios_isr_com(int uart) } } +/* + * XXX - Note that this can now be one isr with the uart + * passed as the parameter. + */ void -BSP_uart_termios_isr_com1(void) +BSP_uart_termios_isr_com1(void *unused) { BSP_uart_termios_isr_com(BSP_UART_COM1); } void -BSP_uart_termios_isr_com2(void) +BSP_uart_termios_isr_com2(void *unused) { BSP_uart_termios_isr_com(BSP_UART_COM2); } diff --git a/c/src/lib/libbsp/powerpc/shared/console/uart.h b/c/src/lib/libbsp/powerpc/shared/console/uart.h index 0ac66e69b3..10d32a820a 100644 --- a/c/src/lib/libbsp/powerpc/shared/console/uart.h +++ b/c/src/lib/libbsp/powerpc/shared/console/uart.h @@ -25,8 +25,8 @@ void BSP_uart_polled_write(int uart, int val); int BSP_uart_polled_read(int uart); void BSP_uart_termios_set(int uart, void *ttyp); int BSP_uart_termios_write_com(int minor, const char *buf, int len); -void BSP_uart_termios_isr_com1(); -void BSP_uart_termios_isr_com2(); +void BSP_uart_termios_isr_com1(void *unused); +void BSP_uart_termios_isr_com2(void *unused); void BSP_uart_dbgisr_com1(void); void BSP_uart_dbgisr_com2(void); int BSP_uart_install_isr(int uart, rtems_irq_hdl handler); diff --git a/c/src/lib/libbsp/powerpc/shared/irq/irq.c b/c/src/lib/libbsp/powerpc/shared/irq/irq.c index c9a46cbe3c..77176b6a60 100644 --- a/c/src/lib/libbsp/powerpc/shared/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/shared/irq/irq.c @@ -518,7 +518,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; @@ -550,14 +550,14 @@ 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); */ { rtems_irq_connect_data* vchain; for( vchain = &rtems_hdl_tbl[irq]; ((int)vchain != -1 && vchain->hdl != default_rtems_entry.hdl); vchain = (rtems_irq_connect_data*)vchain->next_handler ) { - vchain->hdl(); + vchain->hdl(vchain->handle); } } diff --git a/c/src/lib/libbsp/powerpc/shared/irq/irq.h b/c/src/lib/libbsp/powerpc/shared/irq/irq.h index 141220b7be..93dcf9d3c4 100644 --- a/c/src/lib/libbsp/powerpc/shared/irq/irq.h +++ b/c/src/lib/libbsp/powerpc/shared/irq/irq.h @@ -147,7 +147,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__*); @@ -161,6 +162,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/shared/irq/irq_init.c b/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c index e07fe754dd..492e902da2 100644 --- a/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/shared/irq/irq_init.c @@ -59,8 +59,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]={ /* |