59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C
		
	
	
	
| /* Copyright (c) 2004, 2009 Xilinx, Inc.  All rights reserved. 
 | |
|    
 | |
|    Redistribution and use in source and binary forms, with or without
 | |
|    modification, are permitted provided that the following conditions are
 | |
|    met:
 | |
|    
 | |
|    1.  Redistributions source code must retain the above copyright notice,
 | |
|    this list of conditions and the following disclaimer. 
 | |
|    
 | |
|    2.  Redistributions in binary form must reproduce the above copyright
 | |
|    notice, this list of conditions and the following disclaimer in the
 | |
|    documentation and/or other materials provided with the distribution. 
 | |
|    
 | |
|    3.  Neither the name of Xilinx nor the names of its contributors may be
 | |
|    used to endorse or promote products derived from this software without
 | |
|    specific prior written permission. 
 | |
|    
 | |
|    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS
 | |
|    IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 | |
|    TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 | |
|    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 | |
|    HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 | |
|    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
 | |
|    TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 | |
|    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 | |
|    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 | |
|    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 | |
|    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | |
| 
 | |
| */
 | |
| 
 | |
| #include <errno.h>
 | |
| 
 | |
| extern char _heap_start[];
 | |
| extern char _heap[];
 | |
| extern char _heap_end[];
 | |
| 
 | |
| static char *heap_ptr;
 | |
| 
 | |
| char *sbrk (int nbytes)
 | |
| {
 | |
|   char *base;
 | |
| 
 | |
|   if (!heap_ptr)
 | |
|     heap_ptr = (char *)&_heap;
 | |
| 
 | |
|   base = heap_ptr;
 | |
|   heap_ptr += nbytes;
 | |
| 
 | |
|   if (heap_ptr <= ((char *)&_heap_end + 1))
 | |
|     return base;
 | |
|   else
 | |
|     {
 | |
|       errno = ENOMEM;
 | |
|       return ((char *)-1);
 | |
|     }
 | |
| }
 | |
| 
 |