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
			
			
This commit is contained in:
		
				
					committed by
					
						
						Corinna Vinschen
					
				
			
			
				
	
			
			
			
						parent
						
							aa26b78462
						
					
				
				
					commit
					58efeedd16
				
			@@ -1,3 +1,7 @@
 | 
			
		||||
2015-05-26  Stefan Wallentowitz  <stefan.wallentowitz@tum.de>
 | 
			
		||||
 | 
			
		||||
	* or1k/sbrk.c: Allow for different heap start
 | 
			
		||||
 | 
			
		||||
2015-05-26  Stefan Wallentowitz  <stefan.wallentowitz@tum.de>
 | 
			
		||||
 | 
			
		||||
	* or1k/or1k_uart.c: Fix interrupts
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user