diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2007-12-02 21:43:54 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2007-12-02 21:43:54 +0000 |
commit | daccc4ad33381f68bf0248b6ba45e0639a8dc485 (patch) | |
tree | 85df7304acce915720fffe57bfadc058b03241b4 | |
parent | 2007-12-02 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-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/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/psim/irq/no_pic.c | 19 |
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; } |