diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2002-07-23 21:56:27 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2002-07-23 21:56:27 +0000 |
commit | 63a93e9dd606b8760bf9bb26320978629c8f45a1 (patch) | |
tree | 2159dc01b5426b338d16268aa78192ea52fe3a1a /libgloss/m68hc11/syscalls.c | |
parent | d254189b38bb5b0b77a18a401c05c415ce0733c9 (diff) | |
download | cygnal-63a93e9dd606b8760bf9bb26320978629c8f45a1.tar.gz cygnal-63a93e9dd606b8760bf9bb26320978629c8f45a1.tar.bz2 cygnal-63a93e9dd606b8760bf9bb26320978629c8f45a1.zip |
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.c | 74 |
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 */ |