/** ***************************************************************************** ** ** File : sysmem.c ** ** Author : Ac6 ** ** Abstract : System Workbench Minimal System Memory calls file ** ** For more information about which c-functions ** need which of these lowlevel functions ** please consult the Newlib libc-manual ** ** Environment : System Workbench for MCU ** ** Distribution: The file is distributed as is, without any warranty ** of any kind. ** ** (c)Copyright System Workbench for MCU. ** You may use this file as-is or modify it according to the needs of your ** project. Distribution of this file (unmodified or modified) is not ** permitted. System Workbench for MCU permit registered System Workbench(R) users the ** rights to distribute the assembled, compiled & linked contents of this ** file as part of an application binary file, provided that it is built ** using the System Workbench for MCU toolchain. ** ***************************************************************************** */ /* Includes */ /*---------------------------------------------------------------------------*/ #include #include /*---------------------------------------------------------------------------*/ /* Variables */ extern int errno; register char * stack_ptr asm("sp"); /*---------------------------------------------------------------------------*/ /* Functions */ /*---------------------------------------------------------------------------*/ /** _sbrk Increase program data space. Malloc and related functions depend on this **/ caddr_t _sbrk(int incr) { extern char end asm("end"); static char *heap_end; char *prev_heap_end; if (heap_end == 0) { heap_end = &end; } prev_heap_end = heap_end; if (heap_end + incr > stack_ptr) { errno = ENOMEM; return (caddr_t) -1; } heap_end += incr; return (caddr_t) prev_heap_end; } /*---------------------------------------------------------------------------*/