This repository has been archived on 2025-02-12. You can view files and clone it, but cannot push or open issues or pull requests.
pic32-newlib/newlib/libgloss/m32r/sbrk.c
2009-02-02 03:03:19 +00:00

34 lines
795 B
C

#include <sys/types.h>
#include <sys/stat.h>
#include "syscall.h"
#include "eit.h"
caddr_t
_sbrk (int incr)
{
/* `_end' is defined in the linker script.
We must handle it carefully as we don't want the compiler to think
it lives in the small data area. Use medium model to ensure 32 bit
addressability. */
extern char _end __attribute__ ((__model__(__medium__)));
static char *heap_end;
char *prev_heap_end;
char *sp = (char *)&sp;
if (heap_end == 0)
{
heap_end = &_end;
}
prev_heap_end = heap_end;
if (heap_end > sp)
{
_write (1, "Heap and stack collision\n", 25);
#if 0 /* Calling abort brings in the signal handling code. */
abort ();
#else
exit (1);
#endif
}
heap_end += incr;
return (caddr_t) prev_heap_end;
}