summaryrefslogtreecommitdiff
path: root/newlib/libc/sys/h8300hms/_exit.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/h8300hms/_exit.c')
-rw-r--r--newlib/libc/sys/h8300hms/_exit.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/newlib/libc/sys/h8300hms/_exit.c b/newlib/libc/sys/h8300hms/_exit.c
new file mode 100644
index 00000000000..17d1538cb95
--- /dev/null
+++ b/newlib/libc/sys/h8300hms/_exit.c
@@ -0,0 +1,23 @@
+/* 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 = rc << 8;
+ asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0");
+}
+
+void
+_DEFUN (__exit,(rc),
+ int rc)
+{
+ short rc2 = rc << 8;
+ asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0");
+}