From 47a3cd8f73780bad3eff5135f0eb58e8c98af91d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 9 Aug 2012 16:48:00 +0200 Subject: score: Work area initialization API change The work areas (RTEMS work space and C program heap) will be initialized now in a separate step and are no longer part of rtems_initialize_data_structures(). Initialization is performed with tables of Heap_Area entries. This allows usage of scattered memory areas present on various small scale micro-controllers. The sbrk() support API changes also. The bsp_sbrk_init() must now deal with a minimum size for the first memory chunk to take the configured work space size into account. --- .../libbsp/sparc64/shared/startup/bspgetworkarea.c | 91 ---------------------- 1 file changed, 91 deletions(-) delete mode 100644 c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c (limited to 'c/src/lib/libbsp/sparc64/shared') diff --git a/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c b/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c deleted file mode 100644 index 84f5777573..0000000000 --- a/c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This routine is an implementation of the bsp_get_work_area() - * that can be used by all BSPs following linkcmds conventions - * regarding heap, stack, and workspace allocation. - * - * 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. - */ - -#include -#include -#ifdef BSP_GET_WORK_AREA_DEBUG - #include -#endif - -/* - * These are provided by the linkcmds for ALL of the BSPs which use this file. - */ -extern char WorkAreaBase[]; -extern char HeapSize[]; -extern char HeapBase[]; - - -/* - * We may get the size information from U-Boot or the linker scripts. - */ -#ifdef HAS_UBOOT - extern bd_t bsp_uboot_board_info; -#else - extern char RamBase[]; - extern char RamSize[]; -#endif /* HAS_UBOOT */ - -/* - * This method returns the base address and size of the area which - * is to be allocated between the RTEMS Workspace and the C Program - * Heap. - */ -void bsp_get_work_area( - void **work_area_start, - uintptr_t *work_area_size, - void **heap_start, - uintptr_t *heap_size -) -{ - uintptr_t ram_end; - - #ifdef HAS_UBOOT - ram_end = (uintptr_t) bsp_uboot_board_info.bi_memstart + - bsp_uboot_board_info.bi_memsize; - #else - ram_end = (uintptr_t)RamBase + (uintptr_t)RamSize; - #endif - - *work_area_start = WorkAreaBase; - *work_area_size = (uintptr_t) HeapSize; - *heap_start = (void*) HeapBase; - *heap_size = (uintptr_t) HeapSize; - - /* - * The following may be helpful in debugging what goes wrong when - * you are allocating the Work Area in a new BSP. - */ - #ifdef BSP_GET_WORK_AREA_DEBUG - { - void *sp = __builtin_frame_address(0); - void *end = *work_area_start + *work_area_size; - printk( - "bsp_get_work_area\n\r" - "work_area_start = 0x%p\n\r" - "work_area_size = %d 0x%08x\n\r" - "end = 0x%p\n\r" - "heap_start = 0x%p\n\r" - "heap_size = %d\n\r" - "current stack pointer = 0x%p%s\n\r", - *work_area_start, - *work_area_size, /* decimal */ - *work_area_size, /* hexadecimal */ - end, - *heap_start, - *heap_size, - sp, - ((sp >= *work_area_start && sp <= end) ? " OVERLAPS!" : "") - ); - } - #endif -} -- cgit v1.2.3