diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-05 22:24:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-12-05 22:24:05 +0000 |
commit | 9e602b0ad931b886d28e68ce7da212c555201914 (patch) | |
tree | 72e433899f922481494e9215b697cd51d89395ba /c/src | |
parent | 2007-12-05 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-9e602b0ad931b886d28e68ce7da212c555201914.tar.bz2 |
2007-12-05 Joel Sherrill <joel.sherrill@oarcorp.com>
* irq/irq_init.c: Spacing.
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/powerpc/psim/ChangeLog | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/psim/irq/irq_init.c | 81 |
2 files changed, 58 insertions, 27 deletions
diff --git a/c/src/lib/libbsp/powerpc/psim/ChangeLog b/c/src/lib/libbsp/powerpc/psim/ChangeLog index f331b57dd1..8949baa426 100644 --- a/c/src/lib/libbsp/powerpc/psim/ChangeLog +++ b/c/src/lib/libbsp/powerpc/psim/ChangeLog @@ -1,3 +1,7 @@ +2007-12-04 Joel Sherrill <joel.sherrill@oarcorp.com> + + * clock/clock.c: Fix typo. + 2007-12-04 Till Straumann <strauman@slac.stanford.edu> * irq/irq_init.c: removed unnecessary code (alredy diff --git a/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c b/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c index 9cd41d42e2..b5b088562e 100644 --- a/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/psim/irq/irq_init.c @@ -35,11 +35,11 @@ static int not_connected() {return 0;} */ 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 , handle , on , off , isOn */ - 0, nop_func , NULL , nop_func , nop_func , not_connected +static rtems_irq_connect_data rtemsIrq[BSP_IRQ_NUMBER]; +static rtems_irq_global_settings initial_config; +static rtems_irq_connect_data defaultIrq = { + /* vectorIdex, hdl , handle , on , off , isOn */ + 0, nop_func , NULL , nop_func , nop_func , not_connected }; static rtems_irq_prio irqPrioTable[BSP_IRQ_NUMBER]={ /* @@ -65,30 +65,57 @@ void BSP_rtems_irq_mng_init(unsigned cpuId) /* * Initialize Rtems management interrupt table */ + /* + * re-init the rtemsIrq table + */ + for (i = 0; i < BSP_IRQ_NUMBER; i++) { + rtemsIrq[i] = defaultIrq; + rtemsIrq[i].name = i; + } + /* + * Init initial Interrupt management config + */ + initial_config.irqNb = BSP_IRQ_NUMBER; + initial_config.defaultEntry = defaultIrq; + initial_config.irqHdlTbl = rtemsIrq; + initial_config.irqBase = BSP_LOWEST_OFFSET; + initial_config.irqPrioTbl = irqPrioTable; + + if (!BSP_rtems_irq_mngt_set(&initial_config)) { /* - * re-init the rtemsIrq table - */ - for (i = 0; i < BSP_IRQ_NUMBER; i++) { - rtemsIrq[i] = defaultIrq; - rtemsIrq[i].name = i; - } - /* - * Init initial Interrupt management config + * put something here that will show the failure... */ - initial_config.irqNb = BSP_IRQ_NUMBER; - initial_config.defaultEntry = defaultIrq; - initial_config.irqHdlTbl = rtemsIrq; - initial_config.irqBase = BSP_LOWEST_OFFSET; - initial_config.irqPrioTbl = irqPrioTable; - - if (!BSP_rtems_irq_mngt_set(&initial_config)) { - /* - * put something here that will show the failure... - */ - BSP_panic("Unable to initialize RTEMS interrupt Management!!! System locked\n"); - } + BSP_panic( + "Unable to initialize RTEMS interrupt Management!!! System locked\n" + ); + } -#ifdef TRACE_IRQ_INIT + /* + * We must connect the raw irq handler for the two + * expected interrupt sources : decrementer and external interrupts. + */ + vectorDesc.exceptIndex = ASM_DEC_VECTOR; + vectorDesc.hdl.vector = ASM_DEC_VECTOR; + vectorDesc.hdl.raw_hdl = decrementer_exception_vector_prolog_code; + vectorDesc.hdl.raw_hdl_size = + (unsigned) decrementer_exception_vector_prolog_code_size; + vectorDesc.on = nop_func; + vectorDesc.off = nop_func; + vectorDesc.isOn = connected; + if (!ppc_set_exception (&vectorDesc)) + { + BSP_panic("Unable to initialize RTEMS decrementer raw exception\n"); + } + + vectorDesc.exceptIndex = ASM_EXT_VECTOR; + vectorDesc.hdl.vector = ASM_EXT_VECTOR; + vectorDesc.hdl.raw_hdl = external_exception_vector_prolog_code; + vectorDesc.hdl.raw_hdl_size = + (unsigned) external_exception_vector_prolog_code_size; + if (!ppc_set_exception (&vectorDesc)) { + BSP_panic("Unable to initialize RTEMS external raw exception\n"); + } + #ifdef TRACE_IRQ_INIT printk("RTEMS IRQ management is now operationnal\n"); -#endif + #endif } |