From 49703eb3f53c12fb0ac3d12ca0beaddfe581cfd4 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 20 Aug 2003 19:32:52 +0000 Subject: 2003-08-20 Chris Demetriou * mips/crt0_cfe.S: New file. * mips/cfe_mem.c: New file. * mips/cfe_prestart.S: Remove. * mips/cfe.ld: Adjust to use crt0_cfe.o as the startup file, and and use _start as the entry point. Align BSS to 32-byte boundary. * mips/cfe.c: Reimplement to fit on top of a crt0_cfe.o file. * mips/cfe_api.h (__libcfe_stack_size, __libcfe_mem_limit) (__libcfe_meminit, __libcfe_stack_top): New prototypes. * mips/Makefile.in (CFEOBJS): Replace cfe_prestart.o with cfe_mem.o. (cfe.o, cfe_api.o, cfe_mem.o, crt0_cfe.o): New targets. * mips/configure.in: Build and install crt0_cfe.o when CFE support is built. * mips/configure: Regenerate. --- libgloss/mips/cfe_api.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'libgloss/mips/cfe_api.h') diff --git a/libgloss/mips/cfe_api.h b/libgloss/mips/cfe_api.h index 7b98a8fc8..afe46834e 100644 --- a/libgloss/mips/cfe_api.h +++ b/libgloss/mips/cfe_api.h @@ -71,6 +71,40 @@ typedef unsigned _POINTER_INT uintptr_t; #define CFE_API_ALL #define CFE_API_IMPL_NAMESPACE + +/* Return the stack size to be used for the program. Normally 32KB. The + normal memory allocator uses the bottom of the stack as its heap limit, + so if your application uses a lot of stack space define this function + appropriately to keep the heap from growing into the stack. */ +unsigned long __libcfe_stack_size(void) __attribute__((__weak__)); + +/* Return the (max address + 1) to be used by this program. (This address + minus '_end' is used as the heap size, so the address should be in the + same address space segments as _end. The normal memory allocator + queries CFE to determine the available memory. */ +void *__libcfe_mem_limit(void) __attribute__((__weak__)); + +/* If the configuration ability provided by __libcfe_mem_limit() and + __libcfe_stack_size() do not provide enough flexibility for your + application's memory allocation needs, you can replace the normal + low-level allocator by providing the functions listed below and + also the function: + + void *sbrk(ptrdiff_t incr); + + If you provide any of these functions, you should provide all three, + and be sure to link them into your application as a .o file (rather + than a .a). + + __libcfe_meminit() is responsible for initializing the low-level + memory allocator. + + __libcfe_stack_top() returns a pointer to the top (highest address; + the stack grows down from that address) of the stack to be used by + the program. */ +void __libcfe_meminit (void); +void *__libcfe_stack_top (void); + /* End customization. */ -- cgit v1.2.3