SPARC: bsp_early_malloc() routine for startup memory allocation

If bsp_early_malloc() is called early during boot room will be
allocated after BSS END. If the function is called after boot
is will call malloc() instead. The returned memory is not freeable
and always 8-byte aligned.

If the bsp_early_malloc() isn't called the function is not
dragged in and the workspace will be unmodified in size.

Signed-off-by: Daniel Hellstrom <daniel@gaisler.com>
This commit is contained in:
Daniel Hellstrom
2012-03-28 10:49:27 +02:00
committed by Gedare Bloom
parent b9d8cd3389
commit 0729e2a7af
8 changed files with 80 additions and 13 deletions

View File

@@ -38,7 +38,7 @@ libbsp_a_SOURCES += ../../shared/bspclean.c ../../shared/bsplibc.c \
../../sparc/shared/bsppretaskinghook.c ../../shared/bsppredriverhook.c \
../../sparc/shared/bspgetworkarea.c ../../shared/sbrk.c startup/setvec.c \
startup/spurious.c startup/bspidle.S startup/bspdelay.c \
../../shared/bspinit.c
../../shared/bspinit.c ../../sparc/shared/startup/early_malloc.c
# ISR Handler
libbsp_a_SOURCES += ../../sparc/shared/irq_asm.S

View File

@@ -15,8 +15,6 @@
*
* ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995.
* European Space Agency.
*
* $Id$
*/
#ifndef _BSP_H
@@ -110,6 +108,13 @@ void BSP_fatal_return( void );
void bsp_spurious_initialize( void );
/* Allocate 8-byte aligned non-freeable pre-malloc() memory. The function
* can be called at any time. The work-area will shrink when called before
* bsp_get_work_area(). malloc() is called to get memory when this function
* is called after bsp_get_work_area().
*/
void *bsp_early_malloc(int size);
#ifdef __cplusplus
}
#endif