summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc64
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-08-09 16:48:00 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-10-25 14:54:06 +0200
commit47a3cd8f73780bad3eff5135f0eb58e8c98af91d (patch)
tree8acdfc6ebe5d596f9c6b974e6c460dc69e824e3c /c/src/lib/libbsp/sparc64
parentscore: Append to free list in _Heap_Extend() (diff)
downloadrtems-47a3cd8f73780bad3eff5135f0eb58e8c98af91d.tar.bz2
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.
Diffstat (limited to 'c/src/lib/libbsp/sparc64')
-rw-r--r--c/src/lib/libbsp/sparc64/niagara/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sparc64/shared/startup/bspgetworkarea.c91
-rw-r--r--c/src/lib/libbsp/sparc64/usiii/Makefile.am2
3 files changed, 2 insertions, 93 deletions
diff --git a/c/src/lib/libbsp/sparc64/niagara/Makefile.am b/c/src/lib/libbsp/sparc64/niagara/Makefile.am
index 089649d0e6..c251beed44 100644
--- a/c/src/lib/libbsp/sparc64/niagara/Makefile.am
+++ b/c/src/lib/libbsp/sparc64/niagara/Makefile.am
@@ -42,7 +42,7 @@ startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/bsppredriverhook.c ../../shared/bsppretaskinghook.c \
../../shared/bsppost.c \
../../shared/bootcard.c ../../shared/sbrk.c \
- ../shared/startup/bspgetworkarea.c \
+ ../../shared/bspgetworkarea.c \
../shared/startup/bspstart.c \
../shared/startup/setvec.c \
../../shared/gnatinstallhandler.c \
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 <bsp.h>
-#include <bsp/bootcard.h>
-#ifdef BSP_GET_WORK_AREA_DEBUG
- #include <rtems/bspIo.h>
-#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
-}
diff --git a/c/src/lib/libbsp/sparc64/usiii/Makefile.am b/c/src/lib/libbsp/sparc64/usiii/Makefile.am
index 6c169e0e64..10c0b35e29 100644
--- a/c/src/lib/libbsp/sparc64/usiii/Makefile.am
+++ b/c/src/lib/libbsp/sparc64/usiii/Makefile.am
@@ -88,7 +88,7 @@ startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \
../../shared/bspstart.c ../../shared/bsppretaskinghook.c \
../../shared/bsppost.c \
../../shared/bootcard.c ../../shared/sbrk.c \
- ../shared/startup/bspgetworkarea.c \
+ ../../shared/bspgetworkarea.c \
../shared/startup/bsppredriverhook.c \
../shared/startup/setvec.c \
../../shared/gnatinstallhandler.c \