From 2d2de4eba16374ea05fc7ee9cd257ad0d4ebf2ca Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Fri, 23 Oct 2009 07:32:46 +0000 Subject: Update for exception support changes. --- c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c | 39 +++++++++++----------- 1 file changed, 20 insertions(+), 19 deletions(-) (limited to 'c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c') diff --git a/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c index b04323b118..2450f4f83f 100644 --- a/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/mbx8xx/startup/bspstart.c @@ -18,8 +18,6 @@ * $Id$ */ -#warning The interrupt disable mask is now stored in SPRG0, please verify that this is compatible to this BSP (see also bootcard.c). - #include #include #include @@ -29,8 +27,6 @@ SPR_RW(SPRG1) -extern unsigned long intrStackPtr; - /* * Driver configuration parameters */ @@ -45,6 +41,9 @@ uint32_t bsp_timer_average_overhead; /* Average overhead of timer in ticks */ uint32_t bsp_timer_least_valid; /* Least valid number from timer */ bool bsp_timer_internal_clock; /* TRUE, when timer runs with CPU clk */ +extern char IntrStack_start []; +extern char intrStack []; + void BSP_panic(char *s) { printk("%s PANIC %s\n",_RTEMS_version, s); @@ -83,9 +82,9 @@ void _BSP_Fatal_error(unsigned int v) */ void bsp_start(void) { + rtems_status_code sc = RTEMS_SUCCESSFUL; ppc_cpu_id_t myCpu; ppc_cpu_revision_t myCpuRevision; - register unsigned char* intrStack; /* * Get CPU identification dynamically. Note that the get_ppc_cpu_type() function @@ -112,17 +111,22 @@ void bsp_start(void) rtems_cache_enable_data(); #endif #endif - /* - * Initialize some SPRG registers related to irq handling - */ - intrStack = (((unsigned char*)&intrStackPtr) - PPC_MINIMUM_STACK_FRAME_SIZE); - _write_SPRG1((unsigned int)intrStack); - - /* - * Install our own set of exception vectors - */ - initialize_exceptions(); + /* Initialize exception handler */ + sc = ppc_exc_initialize( + PPC_INTERRUPT_DISABLE_MASK_DEFAULT, + (uintptr_t) IntrStack_start, + (uintptr_t) intrStack - (uintptr_t) IntrStack_start + ); + if ( sc != RTEMS_SUCCESSFUL ) { + BSP_panic( "cannot initialize exceptions" ); + } + + /* Initalize interrupt support */ + sc = bsp_interrupt_initialize(); + if ( sc != RTEMS_SUCCESSFUL ) { + BSP_panic( "cannot initialize interrupts" ); + } /* * initialize the device driver parameters @@ -165,10 +169,7 @@ void bsp_start(void) m8xx.scc2p.rbase=0; m8xx.scc2p.tbase=0; m8xx_cp_execute_cmd( M8xx_CR_OP_STOP_TX | M8xx_CR_CHAN_SCC2 ); - /* - * Initalize RTEMS IRQ system - */ - BSP_rtems_irq_mng_init(0); + #ifdef SHOW_MORE_INIT_SETTINGS printk("Exit from bspstart\n"); #endif -- cgit v1.2.3