diff options
author | Marti Bolivar <mbolivar@leaflabs.com> | 2011-09-12 16:24:43 -0400 |
---|---|---|
committer | Marti Bolivar <mbolivar@leaflabs.com> | 2011-09-12 17:25:01 -0400 |
commit | f52af4876b0ffc98055fba237fb01852f1bfaaae (patch) | |
tree | 7c3571113c9b4b59beb1fefe4993418124cbb6ff /libmaple | |
parent | c3e769c44e072faebd5dc87582ff832bc13ee184 (diff) | |
download | librambutan-f52af4876b0ffc98055fba237fb01852f1bfaaae.tar.gz librambutan-f52af4876b0ffc98055fba237fb01852f1bfaaae.zip |
[support/ld] Add linker support for reconfigurable heap.
- common_header.inc: Declare EXTERN symbols _lm_heap_start and
_lm_heap_end.
- common_rom.inc: Check for _lm_heap_start and _lm_heap_end. If they
are defined, preserve their values. Otherwise, _lm_heap_start is
starts after .bss, and _lm_heap_end is the end of SRAM.
This allows existing linker scripts to continue using the old heap
scheme, but allows for customizability elsewhere.
- syscalls.c: Respect the addresses of _lm_heap_start and _lm_heap_end
as the boundaries of the heap in _sbrk().
Diffstat (limited to 'libmaple')
-rw-r--r-- | libmaple/syscalls.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/libmaple/syscalls.c b/libmaple/syscalls.c index f28202c..a3f12f1 100644 --- a/libmaple/syscalls.c +++ b/libmaple/syscalls.c @@ -29,20 +29,12 @@ #include <sys/stat.h> #include <errno.h> -/* Set by the linker script */ -extern int _end; +/* Set by the linker */ +extern char _lm_heap_start; +extern char _lm_heap_end; -/* FIXME these should be determined by the linker script. - * - * Doing so will allow the heap to be configured on a per-board basis. - * Current values are just stopgaps for a heap in built-in SRAM. - * - * STACK_RESERVED_BYTES is just a hack to ensure a minimum stack size. - * It should probably go away as well. */ -#define STACK_RESERVED_BYTES 1024 -#define HEAP_START ((caddr_t)&_end) -#define HEAP_END ((caddr_t)((uint32)STM32_SRAM_END - \ - STACK_RESERVED_BYTES)) +#define HEAP_START ((caddr_t)&_lm_heap_start) +#define HEAP_END ((caddr_t)&_lm_heap_end) /* * _sbrk -- Increment the program break. |