Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/h8300hms/_exit.c')
-rw-r--r--newlib/libc/sys/h8300hms/_exit.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/newlib/libc/sys/h8300hms/_exit.c b/newlib/libc/sys/h8300hms/_exit.c
new file mode 100644
index 000000000..701cd8e4a
--- /dev/null
+++ b/newlib/libc/sys/h8300hms/_exit.c
@@ -0,0 +1,35 @@
+/* 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");
+}