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:
authorJeff Johnston <jjohnstn@redhat.com>2002-07-24 01:56:27 +0400
committerJeff Johnston <jjohnstn@redhat.com>2002-07-24 01:56:27 +0400
commit63a93e9dd606b8760bf9bb26320978629c8f45a1 (patch)
tree2159dc01b5426b338d16268aa78192ea52fe3a1a /libgloss/m68hc11/syscalls.c
parentd254189b38bb5b0b77a18a401c05c415ce0733c9 (diff)
2002-07-23 Stephane Carrez <stcarrez@nerim.fr>
* README: Mention 68HC11/68HC12 support. * configure.in: Recognize m6811-elf and m6812-elf. * configure: Regenerated. * m68hc11/Makefile.in: New file. * m68hc11/configure.in: New file. * m68hc11/configure: New file. * m68hc11/crt0.S: New file. * m68hc11/sci-inout.S: New file for 68hc11/68hc12 sio. * m68hc11/sim-valid-m68hc11.ld: New file. * m68hc11/sim-valid-m68hc12.ld: New file. * m68hc11/syscalls.c: New file.
Diffstat (limited to 'libgloss/m68hc11/syscalls.c')
-rw-r--r--libgloss/m68hc11/syscalls.c74
1 files changed, 74 insertions, 0 deletions
diff --git a/libgloss/m68hc11/syscalls.c b/libgloss/m68hc11/syscalls.c
new file mode 100644
index 000000000..071583d9c
--- /dev/null
+++ b/libgloss/m68hc11/syscalls.c
@@ -0,0 +1,74 @@
+/* pseudo system calls for M68HC11 & M68HC12.
+ * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr)
+ *
+ * The authors hereby grant permission to use, copy, modify, distribute,
+ * and license this software and its documentation for any purpose, provided
+ * that existing copyright notices are retained in all copies and that this
+ * notice is included verbatim in any distributions. No written agreement,
+ * license, or royalty fee is required for any of the authorized uses.
+ * Modifications to this software may be copyrighted by their authors
+ * and need not follow the licensing terms described here, provided that
+ * the new terms are clearly indicated on the first page of each file where
+ * they apply.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+extern void outbyte(char c);
+extern char inbyte(void);
+
+int
+read(int file, void *p, size_t nbytes)
+{
+ int i = 0;
+ char* buf = (char*) p;
+
+ for (i = 0; i < nbytes; i++) {
+ *(buf + i) = inbyte();
+ if ((*(buf + i) == '\n') || (*(buf + i) == '\r')) {
+ i++;
+ break;
+ }
+ }
+ return (i);
+}
+
+int
+write(int file, const void *p, size_t len)
+{
+ const char *ptr = (const char*) p;
+ int todo;
+
+ for (todo = len; todo; --todo)
+ {
+ outbyte (*ptr++);
+ }
+ return(len);
+}
+
+void *
+sbrk(size_t incr)
+{
+ extern char _end; /* Defined by the linker */
+ static char *heap_end;
+ char *prev_heap_end;
+
+ register char *stack_ptr asm ("sp");
+
+ if (heap_end == 0)
+ {
+ heap_end = &_end;
+ }
+ prev_heap_end = heap_end;
+ if (heap_end + incr > stack_ptr)
+ {
+ write (1, "Heap and stack collision\n", 25);
+ abort ();
+ }
+ heap_end += incr;
+ return ((void*) prev_heap_end);
+}
+
+/* end of syscalls.c */