diff options
author | Till Straumann <strauman@slac.stanford.edu> | 2008-07-22 05:52:05 +0000 |
---|---|---|
committer | Till Straumann <strauman@slac.stanford.edu> | 2008-07-22 05:52:05 +0000 |
commit | aee685a3df7d9f4e4d0d86906431bed73f74f9a3 (patch) | |
tree | 93fa948f4e94bc0bfb5f06249dad910757b15372 /c/src | |
parent | 2008-07-21 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-aee685a3df7d9f4e4d0d86906431bed73f74f9a3.tar.bz2 |
2008-07-21 Till Straumann <strauman@slac.stanford.edu>
* Makefile.am, preinstall.am, irq/irq_init.c:
Use low-level exception handling support from
new-exceptions/bspsupport.
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex/ChangeLog | 6 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex/Makefile.am | 10 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c | 85 | ||||
-rw-r--r-- | c/src/lib/libbsp/powerpc/virtex/preinstall.am | 6 |
4 files changed, 20 insertions, 87 deletions
diff --git a/c/src/lib/libbsp/powerpc/virtex/ChangeLog b/c/src/lib/libbsp/powerpc/virtex/ChangeLog index c1cada054a..0157e94d1d 100644 --- a/c/src/lib/libbsp/powerpc/virtex/ChangeLog +++ b/c/src/lib/libbsp/powerpc/virtex/ChangeLog @@ -1,5 +1,11 @@ 2008-07-21 Till Straumann <strauman@slac.stanford.edu> + * Makefile.am, preinstall.am, irq/irq_init.c: + Use low-level exception handling support from + new-exceptions/bspsupport. + +2008-07-21 Till Straumann <strauman@slac.stanford.edu> + * startup/bspstart.c: Removed SPRG0 warning - this BSP is OK. diff --git a/c/src/lib/libbsp/powerpc/virtex/Makefile.am b/c/src/lib/libbsp/powerpc/virtex/Makefile.am index 9c56184b42..1d9240a9c8 100644 --- a/c/src/lib/libbsp/powerpc/virtex/Makefile.am +++ b/c/src/lib/libbsp/powerpc/virtex/Makefile.am @@ -44,12 +44,11 @@ include_bsp_HEADERS = include/opbintctrl.h opbintctrl_SOURCES = opbintctrl/opbintctrl.c include_bsp_HEADERS += irq/irq.h -irq_SOURCES = irq/irq_init.c ../shared/irq/irq_asm.S +irq_SOURCES = irq/irq_init.c -include_bsp_HEADERS += ../../powerpc/shared/vectors/vectors.h -vectors_SOURCES = ../../powerpc/shared/vectors/vectors.h \ - ../../powerpc/shared/vectors/vectors_init.c \ - ../../powerpc/shared/vectors/vectors.S +include_bsp_HEADERS += \ + ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/vectors.h \ + ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/ppc_exc_bspsupp.h if HAS_NETWORKING network_CPPFLAGS = -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ @@ -68,6 +67,7 @@ libbsp_a_SOURCES = $(startup_SOURCES) $(dlentry_SOURCES) \ libbsp_a_LIBADD = \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/rtems-cpu.rel \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/raw_exception.rel \ + ../../../libcpu/@RTEMS_CPU@/@exceptions@/exc_bspsupport.rel \ ../../../libcpu/@RTEMS_CPU@/shared/cpuIdent.rel \ ../../../libcpu/@RTEMS_CPU@/ppc403/clock.rel \ ../../../libcpu/@RTEMS_CPU@/ppc403/timer.rel \ diff --git a/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c b/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c index 5aae191ce0..bdee4a21c1 100644 --- a/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c +++ b/c/src/lib/libbsp/powerpc/virtex/irq/irq_init.c @@ -96,19 +96,6 @@ int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) * Handle interrupt */ switch(excNum) { -#if 0 - case ASM_DEC_VECTOR: - _CPU_MSR_GET(msr); - new_msr = msr | MSR_EE; - _CPU_MSR_SET(new_msr); - - BSP_rtems_irq_tbl[BSP_DECREMENTER].hdl - (BSP_rtems_irq_tbl[BSP_DECREMENTER].handle); - - _CPU_MSR_SET(msr); - - break; -#endif case ASM_EXT_VECTOR: BSP_irq_handle_at_opbintc(); break; @@ -124,21 +111,6 @@ int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) return 0; } -void _ThreadProcessSignalsFromIrq (BSP_Exception_frame* ctx) -{ - /* - * Process pending signals that have not already been - * processed by _Thread_Displatch. This happens quite - * unfrequently : the ISR must have posted an action - * to the current running thread. - */ - if ( _Thread_Do_post_task_switch_extension || - _Thread_Executing->do_post_task_switch_extension ) { - _Thread_Executing->do_post_task_switch_extension = FALSE; - _API_extensions_Run_postswitch(); - } -} - /*********************************************************** * functions to set/get/remove interrupt handlers ***********************************************************/ @@ -314,51 +286,6 @@ int BSP_rtems_irq_mngt_set(rtems_irq_global_settings* config) rtems_interrupt_enable(level); return 1; } -/********************************************** - * list of exception vectors to tap for interrupt handlers - */ -static rtems_raw_except_connect_data BSP_vec_desc[] = { -#if 0 /* ppc405 has no decrementer */ - {ASM_DEC_VECTOR, - {ASM_DEC_VECTOR, - decrementer_exception_vector_prolog_code, - (size_t)decrementer_exception_vector_prolog_code_size - }, - exception_nop_enable, - exception_nop_enable, - exception_always_enabled - }, -#endif - {ASM_EXT_VECTOR, - {ASM_EXT_VECTOR, - external_exception_vector_prolog_code, - (size_t)&external_exception_vector_prolog_code_size - }, - exception_nop_enable, - exception_nop_enable, - exception_always_enabled - }, - {ASM_BOOKE_DEC_VECTOR, - {ASM_BOOKE_DEC_VECTOR, - pit_exception_vector_prolog_code, - (size_t)&pit_exception_vector_prolog_code_size - }, - exception_nop_enable, - exception_nop_enable, - exception_always_enabled - } -#if 0 /* Critical interrupts not yet supported */ - ,{ASM_BOOKE_CRIT_VECTOR, - {ASM_BOOKE_CRIT_VECTOR, - critical_exception_vector_prolog_code, - critical_exception_vector_prolog_code_size - } - BSP_irq_nop_func, - BSP_irq_nop_func, - BSP_irq_true_func - } -#endif -}; /* * dummy for an empty IRQ handler entry @@ -389,17 +316,13 @@ static rtems_irq_global_settings initialConfig = { void BSP_rtems_irq_mng_init(unsigned cpuId) { int i; + /* * connect all exception vectors needed */ - for (i = 0; - i < (sizeof(BSP_vec_desc) / - sizeof(BSP_vec_desc[0])); - i++) { - if (!ppc_set_exception (&BSP_vec_desc[i])) { - BSP_panic("Unable to initialize RTEMS raw exception\n"); - } - } + ppc_exc_set_handler(ASM_EXT_VECTOR, C_dispatch_irq_handler); + ppc_exc_set_handler(ASM_BOOKE_DEC_VECTOR, C_dispatch_irq_handler); + /* * setup interrupt handlers table */ diff --git a/c/src/lib/libbsp/powerpc/virtex/preinstall.am b/c/src/lib/libbsp/powerpc/virtex/preinstall.am index aaa0611286..0eaba56c65 100644 --- a/c/src/lib/libbsp/powerpc/virtex/preinstall.am +++ b/c/src/lib/libbsp/powerpc/virtex/preinstall.am @@ -78,7 +78,11 @@ $(PROJECT_INCLUDE)/bsp/irq.h: irq/irq.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/irq.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/irq.h -$(PROJECT_INCLUDE)/bsp/vectors.h: ../../powerpc/shared/vectors/vectors.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) +$(PROJECT_INCLUDE)/bsp/vectors.h: ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/vectors.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/vectors.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/vectors.h +$(PROJECT_INCLUDE)/bsp/ppc_exc_bspsupp.h: ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/ppc_exc_bspsupp.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/ppc_exc_bspsupp.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/ppc_exc_bspsupp.h + |