#include <_ansi.h> #include #include #include "sys/syscall.h" caddr_t _sbrk (int incr) { extern char heap_start[]; /* Defined by the linker script. */ static char * heap_end = NULL; char * prev_heap_end; char * sp = (char *) & sp; if (heap_end == NULL) heap_end = heap_start; prev_heap_end = heap_end; if (heap_end + incr > sp) { #define MESSAGE "Heap and stack collision\n" _write (1, MESSAGE, sizeof MESSAGE); abort (); } heap_end += incr; return (caddr_t) prev_heap_end; }