diff options
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/sys/h8300hms/Makefile.am | 2 | ||||
-rw-r--r-- | newlib/libc/sys/h8300hms/Makefile.in | 2 | ||||
-rw-r--r-- | newlib/libc/sys/h8300hms/_exit.S | 17 | ||||
-rw-r--r-- | newlib/libc/sys/h8300hms/_exit.c | 35 |
4 files changed, 19 insertions, 37 deletions
diff --git a/newlib/libc/sys/h8300hms/Makefile.am b/newlib/libc/sys/h8300hms/Makefile.am index b4b8823b7..4f47672fa 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 _exit.c sbrk.c misc.c crt1.c \ +lib_a_SOURCES = syscalls.c _exit.S sbrk.c misc.c crt1.c \ close.S fstat.S lseek.S open.S read.S stat.S write.S all: crt0.o diff --git a/newlib/libc/sys/h8300hms/Makefile.in b/newlib/libc/sys/h8300hms/Makefile.in index a4108eb29..b18e64ea1 100644 --- a/newlib/libc/sys/h8300hms/Makefile.in +++ b/newlib/libc/sys/h8300hms/Makefile.in @@ -89,7 +89,7 @@ INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS) noinst_LIBRARIES = lib.a -lib_a_SOURCES = syscalls.c _exit.c sbrk.c misc.c crt1.c close.S fstat.S lseek.S open.S read.S stat.S write.S +lib_a_SOURCES = syscalls.c _exit.S sbrk.c misc.c crt1.c close.S fstat.S lseek.S open.S read.S stat.S write.S ACLOCAL_AMFLAGS = -I ../../.. diff --git a/newlib/libc/sys/h8300hms/_exit.S b/newlib/libc/sys/h8300hms/_exit.S new file mode 100644 index 000000000..7fac3d344 --- /dev/null +++ b/newlib/libc/sys/h8300hms/_exit.S @@ -0,0 +1,17 @@ +#include "setarch.h" + +/* `sleep' is passed an argument in r0 that indicates the reason + the program is exiting. The format of r0 is defined in + devo/include/wait.h. */ + +/* extern void _exit (int rc); */ + + .section .text + .align 2 + .global __exit +__exit: + mov.w #0xdead,r1 + mov.w #0xbeef,r2 + mov.b r0l,r0h + sub.b r0l,r0l + sleep diff --git a/newlib/libc/sys/h8300hms/_exit.c b/newlib/libc/sys/h8300hms/_exit.c deleted file mode 100644 index 701cd8e4a..000000000 --- a/newlib/libc/sys/h8300hms/_exit.c +++ /dev/null @@ -1,35 +0,0 @@ -/* FIXME: which one? */ - -#include <_ansi.h> - -/* `sleep' is passed an argument in r0 that indicates the reason - the program is exiting. The format of r0 is defined in devo/include/wait.h. -*/ - -void -_DEFUN (_exit,(rc), - int rc) -{ - short rc2; - - rc2 = 0xdead; - asm("mov.w %0,r1" : : "r" (rc2) : "r1"); - rc2 = 0xbeef; - asm("mov.w %0,r2" : : "r" (rc2) : "r2"); - rc2 = rc << 8; - asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0"); -} - -void -_DEFUN (__exit,(rc), - int rc) -{ - short rc2; - - rc2 = 0xdead; - asm("mov.w %0,r1" : : "r" (rc2) : "r1"); - rc2 = 0xbeef; - asm("mov.w %0,r2" : : "r" (rc2) : "r2"); - rc2 = rc << 8; - asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0"); -} |