diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2009-05-05 16:20:51 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2009-05-05 16:20:51 +0000 |
commit | 8e230e6cba6ba5afc9bc84a927b0e24c7a51cdad (patch) | |
tree | e0f5a4fef21fc2e57735743c48c1c56a646f7c8c /c/src | |
parent | 2009-05-05 Jennifer Averett <jennifer.averett@OARcorp.com> (diff) | |
download | rtems-8e230e6cba6ba5afc9bc84a927b0e24c7a51cdad.tar.bz2 |
2009-05-05 Jennifer Averett <jennifer.averett@OARcorp.com>
* new-exceptions/bspsupport/irq_supp.h: Split routine to allow bsps
with nonstandard/non-existant pics to call with interrupts off.
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libcpu/powerpc/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h | 32 |
2 files changed, 30 insertions, 7 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog index ba5013f795..e43b4dc43d 100644 --- a/c/src/lib/libcpu/powerpc/ChangeLog +++ b/c/src/lib/libcpu/powerpc/ChangeLog @@ -1,3 +1,8 @@ +2009-05-05 Jennifer Averett <jennifer.averett@OARcorp.com> + + * new-exceptions/bspsupport/irq_supp.h: Split routine to allow bsps + with nonstandard/non-existant pics to call with interrupts off. + 2009-03-12 Joel Sherrill <joel.sherrill@OARcorp.com> PR 1385/cpukit diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h index 5af864806b..110f00c845 100644 --- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h +++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h @@ -67,6 +67,29 @@ struct _BSP_Exception_frame; int C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int excNum); /* + * Snippet to be used by PIC drivers and by bsp_irq_dispatch_list + * traverses list of shared handlers for a given interrupt + * + */ + +static inline void +bsp_irq_dispatch_list_base( + rtems_irq_connect_data *tbl, + unsigned irq, + rtems_irq_hdl sentinel +) +{ + rtems_irq_connect_data* vchain; + for( vchain = &tbl[irq]; + ((int)vchain != -1 && vchain->hdl != sentinel); + vchain = (rtems_irq_connect_data*)vchain->next_handler ) + { + vchain->hdl(vchain->handle); + } +} + + +/* * Snippet to be used by PIC drivers; * enables interrupts, traverses list of * shared handlers for a given interrupt @@ -90,13 +113,8 @@ bsp_irq_dispatch_list( /* Enable all interrupts */ _ISR_Set_level(0); - rtems_irq_connect_data* vchain; - for( vchain = &tbl[irq]; - ((int)vchain != -1 && vchain->hdl != sentinel); - vchain = (rtems_irq_connect_data*)vchain->next_handler ) - { - vchain->hdl(vchain->handle); - } + + bsp_irq_dispatch_list_base( tbl, irq, sentinel ); /* Restore original level */ _ISR_Set_level(l_orig); |