From 19ca7978a660fd325d9a6b25f3dd964f81fe8b19 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 4 Oct 1999 20:41:28 +0000 Subject: Motorola MVME2307 BSP submitted by Jay Kulpinski . No modifications made. --- .../lib/libbsp/powerpc/mvme2307/startup/bspstart.c | 159 +++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 c/src/lib/libbsp/powerpc/mvme2307/startup/bspstart.c (limited to 'c/src/lib/libbsp/powerpc/mvme2307/startup/bspstart.c') diff --git a/c/src/lib/libbsp/powerpc/mvme2307/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mvme2307/startup/bspstart.c new file mode 100644 index 0000000000..a592cd0bc3 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/mvme2307/startup/bspstart.c @@ -0,0 +1,159 @@ +/* + * This set of routines starts the application. It includes application, + * board, and monitor specific initialization and configuration. + * The generic CPU dependent initialization has been performed + * before any of these are invoked. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include +#include + +#include + +#include +#include + +/* + * The original table from the application and our copy of it with + * some changes. + */ + +rtems_configuration_table BSP_Configuration; + +rtems_cpu_table Cpu_table; + + + +/* + * Use the shared implementations of the following routines + */ + +void bsp_postdriver_hook(void); +void bsp_libc_init( void *, unsigned32, int ); + +/* + * bsp_pretasking_hook + * + * BSP pretasking hook. Called just before drivers are initialized. + * Used to setup libc and install any BSP extensions. + */ + +void bsp_pretasking_hook(void) +{ + extern int end; + rtems_unsigned32 heap_start; + rtems_unsigned32 heap_size; + rtems_isr_entry old_handler; + rtems_status_code sc; + + heap_start = (rtems_unsigned32) &end; + if (heap_start & (CPU_ALIGNMENT-1)) { + heap_start = (heap_start + CPU_ALIGNMENT) & ~(CPU_ALIGNMENT-1); + } + + heap_size = BSP_Configuration.work_space_start - (void *)&end; + heap_size &= 0xfffffff0; /* keep it as a multiple of 16 bytes */ + + bsp_libc_init((void *) heap_start, heap_size, 0); + + sc = interrupt_controller_init(); + + + +#ifdef RTEMS_DEBUG + rtems_debug_enable( RTEMS_DEBUG_ALL_MASK ); +#endif + +} + +/* + * bsp_start + * + * This routine does the bulk of the system initialization. + */ + +void bsp_start( void ) +{ + unsigned char *work_space_start; + unsigned32 RAM_end = 0; + +#if 1 + /* + * Set MSR to show vectors at 0 XXX + */ + rtems_unsigned32 msr_value; + + _CPU_MSR_Value( msr_value ); + msr_value &= ~PPC_MSR_EP; + _CPU_MSR_SET( msr_value ); +#endif + + /* + * Set up our hooks + * Make sure libc_init is done before drivers initialized so that + * they can use atexit() + */ + + Cpu_table.pretasking_hook = bsp_pretasking_hook; /* init libc, etc. */ + Cpu_table.postdriver_hook = bsp_postdriver_hook; + + Cpu_table.interrupt_stack_size = (12 * 1024); + + /* + * The monitor likes the exception table to be at 0x0. + */ + + Cpu_table.exceptions_in_RAM = TRUE; + + /* + #if defined(RTEMS_POSIX_API) + BSP_Configuration.work_space_size *= 3; + #endif + */ + + /* from PSIM - why? */ + BSP_Configuration.work_space_size += 1024; + + /* determine memory size */ + switch (Falcon_MEMCR.MemSize) { + case RAM_16_MB: + RAM_end = 16 * 1024 * 1024; + break; + case RAM_32_MB: + RAM_end = 32 * 1024 * 1024; + break; + case RAM_64_MB: + RAM_end = 64 * 1024 * 1024; + break; + case RAM_128_MB: + RAM_end = 128 * 1024 * 1024; + break; + } + RAM_end -= 1024 * 1024; /* reserve memory for PPCBUG */ + work_space_start = + (unsigned char *)RAM_end - BSP_Configuration.work_space_size; + + if ( work_space_start <= (unsigned char *)&end ) { + printk( "bspstart: Not enough RAM!!!\n" ); + bsp_cleanup(); + } + + BSP_Configuration.work_space_start = work_space_start; + + /* + * Account for the console's resources + */ + + console_reserve_resources( &BSP_Configuration ); + +} -- cgit v1.2.3