* v8500/sbrk.c (_sbrk): Tidy code.

Base start of heap on the "heap_start" symbol.

	* libc/sys/sysnecv850/sbrk.c (_sbrk): Tidy code.
	Base start of heap on the "heap_start" symbol.
This commit is contained in:
Nick Clifton 2011-05-27 10:46:48 +00:00
parent bfce73c261
commit 747a0a5205
4 changed files with 34 additions and 38 deletions

View File

@ -1,3 +1,8 @@
2011-05-27 Nick Clifton <nickc@redhat.com>
* v8500/sbrk.c (_sbrk): Tidy code.
Base start of heap on the "heap_start" symbol.
2011-03-26 Mike Frysinger <vapier@gentoo.org>
* bfin/include/builtins.h (__builtin_raise): Change constraint to n.

View File

@ -3,34 +3,27 @@
#include <sys/stat.h>
#include "sys/syscall.h"
int errno;
int __trap0 (int function, int p1, int p2, int p3);
#define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3))
caddr_t
_sbrk (int incr)
{
extern char end; /* Defined by the linker */
static char *heap_end;
char *prev_heap_end;
#if 0
char *sp = (char *)stack_ptr;
#else
char *sp = (char *)&sp;
#endif
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;
if (heap_end == 0)
{
heap_end = &end;
}
prev_heap_end = heap_end;
if (heap_end + incr > sp)
{
_write (1, "Heap and stack collision\n", 25);
#define MESSAGE "Heap and stack collision\n"
_write (1, MESSAGE, sizeof MESSAGE);
abort ();
}
heap_end += incr;
return (caddr_t) prev_heap_end;
}

View File

@ -1,3 +1,8 @@
2011-05-27 Nick Clifton <nickc@redhat.com>
* libc/sys/sysnecv850/sbrk.c (_sbrk): Tidy code.
Base start of heap on the "heap_start" symbol.
2011-05-25 Eric Blake <eblake@redhat.com>
* libc/string/strerror.c (_strerror_r): Report "Success" for 0.

View File

@ -3,34 +3,27 @@
#include <sys/stat.h>
#include "sys/syscall.h"
int errno;
int __trap0 (int function, int p1, int p2, int p3);
#define TRAP0(f, p1, p2, p3) __trap0(f, (int)(p1), (int)(p2), (int)(p3))
caddr_t
_sbrk (int incr)
{
extern char end; /* Defined by the linker */
static char *heap_end;
char *prev_heap_end;
#if 0
char *sp = (char *)stack_ptr;
#else
char *sp = (char *)&sp;
#endif
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;
if (heap_end == 0)
{
heap_end = &end;
}
prev_heap_end = heap_end;
if (heap_end + incr > sp)
{
_write (1, "Heap and stack collision\n", 25);
#define MESSAGE "Heap and stack collision\n"
_write (1, MESSAGE, sizeof MESSAGE);
abort ();
}
heap_end += incr;
return (caddr_t) prev_heap_end;
}