summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Straumann <strauman@slac.stanford.edu>2007-12-02 21:43:54 +0000
committerTill Straumann <strauman@slac.stanford.edu>2007-12-02 21:43:54 +0000
commitdaccc4ad33381f68bf0248b6ba45e0639a8dc485 (patch)
tree85df7304acce915720fffe57bfadc058b03241b4
parent2007-12-02 Till Straumann <strauman@slac.stanford.edu> (diff)
downloadrtems-daccc4ad33381f68bf0248b6ba45e0639a8dc485.tar.bz2
2007-12-02 Till Straumann <strauman@slac.stanford.edu>
* irq/no_pic.c: use new inline routine exported by shared/irq/irq_supp.h for scanning the handler list.
-rw-r--r--c/src/lib/libbsp/powerpc/psim/ChangeLog5
-rw-r--r--c/src/lib/libbsp/powerpc/psim/irq/no_pic.c19
2 files changed, 16 insertions, 8 deletions
diff --git a/c/src/lib/libbsp/powerpc/psim/ChangeLog b/c/src/lib/libbsp/powerpc/psim/ChangeLog
index 0aa0c11fbc..a04cd4566f 100644
--- a/c/src/lib/libbsp/powerpc/psim/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/psim/ChangeLog
@@ -1,5 +1,10 @@
2007-12-02 Till Straumann <strauman@slac.stanford.edu>
+ * irq/no_pic.c: use new inline routine exported by
+ shared/irq/irq_supp.h for scanning the handler list.
+
+2007-12-02 Till Straumann <strauman@slac.stanford.edu>
+
* irq/irq_init.c: removed irrelevant comment.
2007-11-30 Till Straumann <strauman@slac.stanford.edu>
diff --git a/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c b/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
index 4418f2027e..c04b74bb32 100644
--- a/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
+++ b/c/src/lib/libbsp/powerpc/psim/irq/no_pic.c
@@ -21,23 +21,24 @@
#include <libcpu/raw_exception.h>
static rtems_irq_connect_data *rtems_hdl_tbl;
+static rtems_irq_connect_data dflt_entry;
/*
* High level IRQ handler called from shared_raw_irq_code_entry
*/
void C_dispatch_irq_handler (struct _BSP_Exception_frame *frame, unsigned int excNum)
{
- register unsigned msr;
- register unsigned new_msr;
+register uint32_t l_orig;
if (excNum == ASM_DEC_VECTOR) {
- _CPU_MSR_GET(msr);
- new_msr = msr | MSR_EE;
- _CPU_MSR_SET(new_msr);
- rtems_hdl_tbl[BSP_DECREMENTER].hdl(rtems_hdl_tbl[BSP_DECREMENTER].handle);
+ l_orig = _ISR_Get_level();
+ /* re-enable all interrupts */
+ _ISR_Set_level(0);
- _CPU_MSR_SET(msr);
+ bsp_irq_dispatch_list(rtems_hdl_tbl, BSP_DECREMENTER, dflt_entry.hdl);
+
+ _ISR_Set_level(l_orig);
return;
}
@@ -48,14 +49,16 @@ BSP_enable_irq_at_pic(const rtems_irq_number irq)
{
}
-void
+int
BSP_disable_irq_at_pic(const rtems_irq_number irq)
{
+ return 0;
}
int
BSP_setup_the_pic(rtems_irq_global_settings *config)
{
+ dflt_entry = config->defaultEntry;
rtems_hdl_tbl = config->irqHdlTbl;
return 1;
}