Files
rtems/c/src/lib/libbsp/m68k/shared/m68kbspgetworkarea.c
Joel Sherrill 621feee062 2008-05-15 Joel Sherrill <joel.sherrill@OARcorp.com>
* shared/m68kpretaskinghook.c: Add capability for bootcard.c BSP
	Initialization Framework to ask the BSP where it has memory for the
	RTEMS Workspace and C Program Heap. These collectively are referred
	to as work area. If the BSP supports this, then it does not have to
	include code to split the available memory between the two areas.
	This reduces the amount of code in the BSP specific bspstart.c file.
	Additionally, the shared framework can dirty the work area memory.
	Until most/all BSPs support this new capability, if the BSP supports
	this, it should call RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION from
	its configure.ac. When the transition is complete, this autoconf
	macro can be removed.
	* shared/m68kbspgetworkarea.c: New file.
2008-05-15 15:52:15 +00:00

39 lines
1.1 KiB
C

/*
* This routine is an implementation of the bsp_get_workarea()
* that can be used by all m68k 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.
*
* $Id$
*/
#include <bsp.h>
/*
* 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_workarea(
void **workarea_base,
size_t *workarea_size,
size_t *requested_heap_size
)
{
extern char _RamBase[];
extern char _WorkspaceBase[];
extern char _HeapSize[];
extern void *_RamSize;
*workarea_base = _WorkspaceBase;
*workarea_size = (unsigned long)_RamBase + (unsigned long) _RamSize -
(unsigned long)_WorkspaceBase;
*requested_heap_size = (size_t) _HeapSize;
}