summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/m68k/vfork.c
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2001-06-12 21:45:10 +0000
committerEric Andersen <andersen@codepoet.org>2001-06-12 21:45:10 +0000
commit92773db48eb6be7bc3ef12f44e4b163a7f5e0af3 (patch)
tree7a5097716ad65c0899d917a25379131e26a7e47b /libc/sysdeps/linux/m68k/vfork.c
parent23f586ed1edb81cea7c976eb1f2354ab24294908 (diff)
Cleanup the toploevel makefile handing of shared libs. Add weak_alias
define, and set things up so nasty old coff toolchains can now compile things and should actually work again. -Erik
Diffstat (limited to 'libc/sysdeps/linux/m68k/vfork.c')
-rw-r--r--libc/sysdeps/linux/m68k/vfork.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/m68k/vfork.c b/libc/sysdeps/linux/m68k/vfork.c
new file mode 100644
index 000000000..9edcb650d
--- /dev/null
+++ b/libc/sysdeps/linux/m68k/vfork.c
@@ -0,0 +1,25 @@
+/* orginally from include/unistd.h, written by ndf@linux.mit.edu> */
+#include <unistd.h>
+#include <sys/types.h>
+#include <asm/unistd.h>
+
+#ifndef __NR_vfork
+#define __NR_vfork __NR_fork /* uClinux-2.0 only has fork which is vfork */
+#endif
+
+pid_t vfork(void)
+{
+ pid_t __res;
+ __asm__ __volatile__ ("movel %1,%%d0;"
+ "trap #0;"
+ "movel %%d0,%0"
+ : "=d" (__res)
+ : "0" (__NR_vfork)
+ : "%d0");
+ if (__res >= (unsigned long)-4096) {
+ errno = -__res;
+ __res = (pid_t)-1;
+ }
+ return(__res);
+}
+