From 58efeedd1670555d4eadf23309122fd6aa64c9b2 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 26 May 2015 15:28:31 -0400 Subject: or1k: Make heap start configurable - Previously the heap started right after the bss section. This can now be configured by changing the _or1k_heap_start symbol that defaults to the old value (&end). In board_init_early, we can now set this to another value. * or1k/sbrk.c: Allow for different heap start --- libgloss/or1k/sbrk.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'libgloss/or1k/sbrk.c') diff --git a/libgloss/or1k/sbrk.c b/libgloss/or1k/sbrk.c index de80663ee..5bd7044f7 100644 --- a/libgloss/or1k/sbrk.c +++ b/libgloss/or1k/sbrk.c @@ -19,12 +19,13 @@ #include "include/or1k-support.h" +extern uint32_t end; /* Set by linker. */ +uint32_t _or1k_heap_start = &end; static uint32_t _or1k_heap_end; void * _sbrk_r (struct _reent * reent, ptrdiff_t incr) { - extern uint32_t end; /* Set by linker. */ uint32_t prev_heap_end; // This needs to be atomic @@ -34,7 +35,7 @@ _sbrk_r (struct _reent * reent, ptrdiff_t incr) uint32_t sr_tee = or1k_timer_disable(); // Initialize heap end to end if not initialized before - or1k_sync_cas((void*) &_or1k_heap_end, 0, (uint32_t) &end); + or1k_sync_cas((void*) &_or1k_heap_end, 0, (uint32_t) _or1k_heap_start); do { // Read previous heap end -- cgit v1.2.3