Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDJ Delorie <dj@redhat.com>2013-05-14 01:39:51 +0400
committerDJ Delorie <dj@redhat.com>2013-05-14 01:39:51 +0400
commit2f2a30423446f88e283f50f699bf7cc3c8cf74b8 (patch)
treeda1eb3018024b0d841f5de74df711564baeaf901 /libgloss/msp430/sbrk.c
parente4ab61a8ab9b84a26fa22624e7049b50cafd4d19 (diff)
[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.c33
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")));