From 7f09abec3eeeca99cd0d8312a5dae97485c38525 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 18 Sep 2008 20:40:09 +0000 Subject: 2008-09-18 Joel Sherrill * Makefile.am, configure.ac, startup/bspstart.c: Add bsp_get_work_area() implementation and use more of the BSP Initialization Framework. * startup/bspgetworkarea.c, startup/bsppost.c: New files. --- c/src/lib/libbsp/unix/posix/ChangeLog | 7 ++ c/src/lib/libbsp/unix/posix/Makefile.am | 3 +- c/src/lib/libbsp/unix/posix/configure.ac | 2 + .../lib/libbsp/unix/posix/startup/bspgetworkarea.c | 36 ++++++++++ c/src/lib/libbsp/unix/posix/startup/bsppost.c | 22 +++++++ c/src/lib/libbsp/unix/posix/startup/bspstart.c | 76 ---------------------- 6 files changed, 69 insertions(+), 77 deletions(-) create mode 100644 c/src/lib/libbsp/unix/posix/startup/bspgetworkarea.c create mode 100644 c/src/lib/libbsp/unix/posix/startup/bsppost.c (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/unix/posix/ChangeLog b/c/src/lib/libbsp/unix/posix/ChangeLog index 83a472c3d4..72987b731d 100644 --- a/c/src/lib/libbsp/unix/posix/ChangeLog +++ b/c/src/lib/libbsp/unix/posix/ChangeLog @@ -1,3 +1,10 @@ +2008-09-18 Joel Sherrill + + * Makefile.am, configure.ac, startup/bspstart.c: Add + bsp_get_work_area() implementation and use more of the BSP + Initialization Framework. + * startup/bspgetworkarea.c, startup/bsppost.c: New files. + 2008-09-18 Joel Sherrill * include/bsp.h: Remove unnecessary boilerplate comments. diff --git a/c/src/lib/libbsp/unix/posix/Makefile.am b/c/src/lib/libbsp/unix/posix/Makefile.am index 0e5c9c5b97..5832af8802 100644 --- a/c/src/lib/libbsp/unix/posix/Makefile.am +++ b/c/src/lib/libbsp/unix/posix/Makefile.am @@ -40,7 +40,8 @@ noinst_LIBRARIES = ## endif startup_SOURCES = startup/bspclean.c ../../shared/bsplibc.c \ - ../../shared/bsppredriverhook.c startup/bspstart.c \ + ../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \ + startup/bspstart.c startup/bsppost.c startup/bspgetworkarea.c \ startup/setvec.c ../../shared/bootcard.c ## for now always using main.c style startup ##if !HAS_CXX diff --git a/c/src/lib/libbsp/unix/posix/configure.ac b/c/src/lib/libbsp/unix/posix/configure.ac index 8eac0ac8c9..2e0c6d9467 100644 --- a/c/src/lib/libbsp/unix/posix/configure.ac +++ b/c/src/lib/libbsp/unix/posix/configure.ac @@ -35,6 +35,8 @@ RTEMS_BSPOPTS_SET([HEAPSPACE_MB],[*],[1]) RTEMS_BSPOPTS_HELP([HEAPSPACE_MB], [The BSP's heapspace RAM in MB.]) +RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION + # Explicitly list all Makefiles here AC_CONFIG_FILES([Makefile]) AC_OUTPUT diff --git a/c/src/lib/libbsp/unix/posix/startup/bspgetworkarea.c b/c/src/lib/libbsp/unix/posix/startup/bspgetworkarea.c new file mode 100644 index 0000000000..1086667e3f --- /dev/null +++ b/c/src/lib/libbsp/unix/posix/startup/bspgetworkarea.c @@ -0,0 +1,36 @@ +/* + * COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include +#include +#include + +void bsp_get_work_area( + void **work_area_start, + size_t *work_area_size, + void **heap_start, + size_t *heap_size +) +{ + uintptr_t workspace_ptr; + + workspace_ptr = (uintptr_t) + sbrk(rtems_configuration_get_work_space_size() + CPU_ALIGNMENT); + workspace_ptr += CPU_ALIGNMENT - 1; + workspace_ptr &= ~(CPU_ALIGNMENT - 1); + + /* start with requested workspace + 1 MB for heap */ + *work_area_start = (void *) workspace_ptr; + *work_area_size = rtems_configuration_get_work_space_size() + + (1 * 1024 * 1024); + *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA; + *heap_size = BSP_BOOTCARD_HEAP_SIZE_DEFAULT; +} diff --git a/c/src/lib/libbsp/unix/posix/startup/bsppost.c b/c/src/lib/libbsp/unix/posix/startup/bsppost.c new file mode 100644 index 0000000000..23a07003d0 --- /dev/null +++ b/c/src/lib/libbsp/unix/posix/startup/bsppost.c @@ -0,0 +1,22 @@ +/* + * This is a shared BSP post driver hook designed to open + * /dev/console for stdin, stdout, and stderr if it exists. + * Newlib will automatically associate the file descriptors + * with the first thress files opened. + * + * COPYRIGHT (c) 1989-2008. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + * + * $Id$ + */ + +#include +#include + +void bsp_postdriver_hook(void) +{ +} diff --git a/c/src/lib/libbsp/unix/posix/startup/bspstart.c b/c/src/lib/libbsp/unix/posix/startup/bspstart.c index 08c3352e43..1db417da2e 100644 --- a/c/src/lib/libbsp/unix/posix/startup/bspstart.c +++ b/c/src/lib/libbsp/unix/posix/startup/bspstart.c @@ -22,19 +22,6 @@ #include #include -#include - -uint32_t Heap_size; -int rtems_argc; -char **rtems_argv; - -/* - * May be overridden by RTEMS_WORKSPACE_SIZE and RTEMS_HEAPSPACE_SIZE - * environment variables; see below. - */ - -#define DEFAULT_WORKSPACE_SIZE (WORKSPACE_MB * (1024 * 1024)) -#define DEFAULT_HEAPSPACE_SIZE (HEAPSPACE_MB * (1024 * 1024)) /* * Amount to increment itimer by each pass @@ -44,58 +31,13 @@ char **rtems_argv; uint32_t CPU_CLICKS_PER_TICK; -/* - * Use the shared implementations of the following routines - */ - -void bsp_libc_init( void *, uint32_t, int ); - -/* - * Function: bsp_pretasking_hook - * Created: 95/03/10 - * - * Description: - * BSP pretasking hook. Called just before drivers are initialized. - * Used to setup libc and install any BSP extensions. - * - * NOTES: - * Must not use libc (to do io) from here, since drivers are - * not yet initialized. - */ - -void bsp_pretasking_hook(void) -{ - void *heap_start; - - if (getenv("RTEMS_HEAPSPACE_SIZE")) - Heap_size = strtol(getenv("RTEMS_HEAPSPACE_SIZE"), 0, 0); - else - Heap_size = DEFAULT_HEAPSPACE_SIZE; - - heap_start = 0; - - bsp_libc_init((void *)heap_start, Heap_size, 1024 * 1024); -} - -/* - * DO NOT Use the shared bsp_postdriver_hook() implementation - */ - -void bsp_postdriver_hook(void) -{ - return; -} - /* * bsp_start * * This routine does the bulk of the system initialization. */ - void bsp_start(void) { - uintptr_t workspace_ptr; - cpu_number = 0; #if defined(RTEMS_MULTIPROCESSING) @@ -126,23 +68,5 @@ void bsp_start(void) cpu_number = Configuration.User_multiprocessing_table->node - 1; #endif - if (getenv("RTEMS_WORKSPACE_SIZE")) - rtems_configuration_get_work_space_size() = - strtol(getenv("RTEMS_WORKSPACE_SIZE"), 0, 0); - else - rtems_configuration_get_work_space_size() = DEFAULT_WORKSPACE_SIZE; - - /* - * Allocate workspace memory, ensuring it is properly aligned - */ - - workspace_ptr = - (uintptr_t) sbrk(rtems_configuration_get_work_space_size() + CPU_ALIGNMENT); - workspace_ptr += CPU_ALIGNMENT - 1; - workspace_ptr &= ~(CPU_ALIGNMENT - 1); - - Configuration.work_space_start = (void *) workspace_ptr; - CPU_CLICKS_PER_TICK = 1; - } -- cgit v1.2.3