summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/powerpc/vfork.S
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2005-08-17 20:04:05 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2005-08-17 20:04:05 +0000
commit5deaf349d32208d6b1cad2363109a24d88b293bb (patch)
tree9a566f03563e1876cc1f727440279038f87ab43e /libc/sysdeps/linux/powerpc/vfork.S
parentd4057a47cac54336b4d16f098f83e1f7b6e4ab6e (diff)
Make uClibc vfork() use kernels vfork() instead of fork().
Diffstat (limited to 'libc/sysdeps/linux/powerpc/vfork.S')
-rw-r--r--libc/sysdeps/linux/powerpc/vfork.S23
1 files changed, 23 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/powerpc/vfork.S b/libc/sysdeps/linux/powerpc/vfork.S
new file mode 100644
index 000000000..67d8aaeac
--- /dev/null
+++ b/libc/sysdeps/linux/powerpc/vfork.S
@@ -0,0 +1,23 @@
+#include <sys/syscall.h>
+
+#ifndef __NR_vfork
+
+/* No vfork so use fork instead */
+.weak vfork ; vfork = __libc_fork
+
+#else
+
+.text
+.global __vfork
+.type __vfork,@function
+.type __syscall_error,@function
+
+__vfork:
+ li 0, __NR_vfork
+ sc
+ bnslr+
+ b __syscall_error
+.size __vfork,.-__vfork
+
+.weak vfork ; vfork = __vfork
+#endif