diff options
author | DJ Delorie <dj@redhat.com> | 2013-05-13 21:39:51 +0000 |
---|---|---|
committer | DJ Delorie <dj@redhat.com> | 2013-05-13 21:39:51 +0000 |
commit | 2f2a30423446f88e283f50f699bf7cc3c8cf74b8 (patch) | |
tree | da1eb3018024b0d841f5de74df711564baeaf901 /libgloss/msp430/sbrk.c | |
parent | e4ab61a8ab9b84a26fa22624e7049b50cafd4d19 (diff) | |
download | cygnal-2f2a30423446f88e283f50f699bf7cc3c8cf74b8.tar.gz cygnal-2f2a30423446f88e283f50f699bf7cc3c8cf74b8.tar.bz2 cygnal-2f2a30423446f88e283f50f699bf7cc3c8cf74b8.zip |
[newlib]
* configure.host (msp430): Add.
* libc/include/machine/ieeefp.h: Add MSP430 support.
* libc/include/machine/setjmp.h: Likewise.
* libc/include/sys/config.h: Likewise.
* libc/machine/configure.in (msp430): Add.
* libc/machine/configure: Regenerate.
* libc/machine/msp430: New directory.
[libgloss]
* configure.in (msp430*-*-elf): Add.
* configure: Regenerate.
* msp430: New directory.
Diffstat (limited to 'libgloss/msp430/sbrk.c')
-rw-r--r-- | libgloss/msp430/sbrk.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libgloss/msp430/sbrk.c b/libgloss/msp430/sbrk.c new file mode 100644 index 000000000..0a88b943a --- /dev/null +++ b/libgloss/msp430/sbrk.c @@ -0,0 +1,33 @@ +/* Copyright (c) 2013 Red Hat, Inc. All rights reserved. + + This copyrighted material is made available to anyone wishing to use, modify, + copy, or redistribute it subject to the terms and conditions of the BSD + License. This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties + of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license + is available at http://www.opensource.org/licenses. Any Red Hat trademarks that + are incorporated in the source code or documentation are not subject to the BSD + License and may only be used or replicated with the express permission of + Red Hat, Inc. +*/ + +char * +_sbrk (int adj) +{ + extern char end[]; /* Defined in the linker script. */ + static char * heap = end; + char * rv = heap; + char * sp = (char *) & sp; /* Stack grows down, heap grows up... */ + + if (heap + adj > sp) + { +#define MESSAGE "Heap and stack collision\n" + write (1, MESSAGE, sizeof MESSAGE); + abort (); + } + + heap += adj; + return rv; +} + +char * sbrk (int) __attribute__((weak, alias ("_sbrk"))); |