summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2009-05-05 16:20:51 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2009-05-05 16:20:51 +0000
commit8e230e6cba6ba5afc9bc84a927b0e24c7a51cdad (patch)
treee0f5a4fef21fc2e57735743c48c1c56a646f7c8c /c/src
parent2009-05-05 Jennifer Averett <jennifer.averett@OARcorp.com> (diff)
downloadrtems-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/ChangeLog5
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h32
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);