+2004-03-11 Kazu Hirata <kazu@cs.umass.edu>
+
+ * libc/sys/h8300hms/Makefile.am (lib_a_SOURCES): Replace
+ _exit.c with _exit.S.
+ * libc/sys/h8300hms/Makefile.in: Regenerate.
+ * libc/sys/h8300hms/_exit.c: Remove.
+ * libc/sys/h8300hms/_exit.S: New.
+
2004-03-09 Thomas Pfaff <tpfaff@gmx.net>
* libc/stdio/findfp.c (__sfp): Rename lock to __sfp_lock.
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
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 ../../..
--- /dev/null
+#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
+++ /dev/null
-/* 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");
-}