From 7fc85bd1b9502b5fe30102e85f4743dbf45b9f01 Mon Sep 17 00:00:00 2001 From: Thomas Fitzsimmons Date: Fri, 17 May 2002 20:13:38 +0000 Subject: * newlib/libc/sys/h8300hms/Makeile.am (lib_a_SOURCES): Add read.c. * newlib/libc/sys/h8300hms/read.c: New file. Magic trap 0xC8 for sim. * newlib/libc/sys/h8300hms/syscalls.c: Move _read() to read.c. * newlib/libs/sys/h8300hms/sys/syscall.h: New file. --- newlib/libc/sys/h8300hms/Makefile.am | 2 +- newlib/libc/sys/h8300hms/Makefile.in | 4 ++-- newlib/libc/sys/h8300hms/read.c | 27 +++++++++++++++++++++++++++ newlib/libc/sys/h8300hms/sys/syscall.h | 1 + newlib/libc/sys/h8300hms/syscalls.c | 8 -------- 5 files changed, 31 insertions(+), 11 deletions(-) create mode 100644 newlib/libc/sys/h8300hms/read.c create mode 100644 newlib/libc/sys/h8300hms/sys/syscall.h (limited to 'newlib/libc/sys/h8300hms') diff --git a/newlib/libc/sys/h8300hms/Makefile.am b/newlib/libc/sys/h8300hms/Makefile.am index 131adc047..a6d0815d9 100644 --- a/newlib/libc/sys/h8300hms/Makefile.am +++ b/newlib/libc/sys/h8300hms/Makefile.am @@ -6,7 +6,7 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) noinst_LIBRARIES = lib.a -lib_a_SOURCES = syscalls.c write.c _exit.c sbrk.c misc.c crt1.c +lib_a_SOURCES = syscalls.c write.c _exit.c read.c sbrk.c misc.c crt1.c all: crt0.o diff --git a/newlib/libc/sys/h8300hms/Makefile.in b/newlib/libc/sys/h8300hms/Makefile.in index 6539dcc85..dde61b4aa 100644 --- a/newlib/libc/sys/h8300hms/Makefile.in +++ b/newlib/libc/sys/h8300hms/Makefile.in @@ -88,7 +88,7 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) noinst_LIBRARIES = lib.a -lib_a_SOURCES = syscalls.c write.c _exit.c sbrk.c misc.c crt1.c +lib_a_SOURCES = syscalls.c write.c _exit.c read.c sbrk.c misc.c crt1.c ACLOCAL_AMFLAGS = -I ../../.. CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host @@ -102,7 +102,7 @@ DEFS = @DEFS@ -I. -I$(srcdir) CPPFLAGS = @CPPFLAGS@ LIBS = @LIBS@ lib_a_LIBADD = -lib_a_OBJECTS = syscalls.o write.o _exit.o sbrk.o misc.o crt1.o +lib_a_OBJECTS = syscalls.o write.o _exit.o read.o sbrk.o misc.o crt1.o CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) diff --git a/newlib/libc/sys/h8300hms/read.c b/newlib/libc/sys/h8300hms/read.c new file mode 100644 index 000000000..ba6b9e929 --- /dev/null +++ b/newlib/libc/sys/h8300hms/read.c @@ -0,0 +1,27 @@ +#include "sys/syscall.h" + +int _read(file, ptr, len) + int file; + char *ptr; + int len; +{ + register int ret asm("r0") ; + + /* Type cast int as short so that we can copy int values into 16 bit + registers in case of -mint32 switch is given. + This is not going to affect data as file= 0 for stdin and len=1024 */ + + asm("mov.b %0, r0l":: "i" (SYS_read)) ; /* Syscall Number */ + asm("mov.w %0, r1" :: "r"((short)file) :"r1", "r2", "r3") ; + asm("mov.w %0, r3" :: "r"((short)len) :"r1", "r2", "r3") ; +#ifdef __H8300__ + asm("mov.w %0, r2" :: "r"(ptr) :"r1", "r2", "r3") ; +#else + asm("mov.l %0, er2" :: "r"(ptr) :"r1", "er2", "r3") ; +#endif + // This is magic trap similar to _write for simulator + asm("jsr @@0xc8") ; + return ret; +} + + diff --git a/newlib/libc/sys/h8300hms/sys/syscall.h b/newlib/libc/sys/h8300hms/sys/syscall.h new file mode 100644 index 000000000..fba03549c --- /dev/null +++ b/newlib/libc/sys/h8300hms/sys/syscall.h @@ -0,0 +1 @@ +#define SYS_read 4 diff --git a/newlib/libc/sys/h8300hms/syscalls.c b/newlib/libc/sys/h8300hms/syscalls.c index 9f89c55d5..3ebac8843 100644 --- a/newlib/libc/sys/h8300hms/syscalls.c +++ b/newlib/libc/sys/h8300hms/syscalls.c @@ -5,14 +5,6 @@ #include #include -int _DEFUN(_read,(file, ptr, len), - int file _AND - char *ptr _AND - int len) -{ - return 0; -} - int _DEFUN(_lseek,(file, ptr, dir), int file _AND -- cgit v1.2.3