This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: V850, interfacing to newlib?
- From: Christopher Faylor <me+newlib at cgf dot cx>
- To: newlib at sourceware dot org, Torsten Mohr <tmohr at s dot netic dot de>
- Date: Sat, 3 Jun 2006 16:31:54 -0400
- Subject: Re: V850, interfacing to newlib?
- References: <200606032055.13886.tmohr@s.netic.de>
On Sat, Jun 03, 2006 at 08:55:13PM +0200, Torsten Mohr wrote:
>Hi,
>
>in newlib-1.14.0/newlib/libc/sys/sysnecv850/sbrk.c i see:
>
>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
>
> 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);
> abort ();
> }
> heap_end += incr;
> return (caddr_t) prev_heap_end;
>}
>
>Does that mean that i need to supply "sp" in the linker script
>to have proper stack checking?
I don't see why. That just looks like sp is set to point to its own
address on the stack.
cgf