about summary refs log tree commit diff
path: root/src/thread/clone.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/clone.c')
-rw-r--r--src/thread/clone.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/thread/clone.c b/src/thread/clone.c
new file mode 100644
index 00000000..971bfeed
--- /dev/null
+++ b/src/thread/clone.c
@@ -0,0 +1,26 @@
+#if 0
+
+int clone(int (*start)(void *), void *stack, int flags, void *arg,
+	pid_t *ptid, struct user_desc *tls, pid_t *ctid)
+{
+	int ret;
+	__asm__(
+	        "andl $-16,%%ecx     \n\t"
+		"xchgl %%ebx,%2      \n\t"
+		"movl %%ebx,(%%ecx)  \n\t"
+		"int $0x80           \n\t"
+		"testl %%eax,%%eax   \n\t"
+		"jnz 1f              \n\t"
+		"xorl %%ebp,%%ebp    \n\t"
+		"call *%%ebx         \n\t"
+		"\n1:                \n\t"
+		"xchgl %%ebx,%2      \n\t"
+		: "=a" (ret)
+		: "a" (__NR_clone), "m" (flags), "c"(stack), "d"(ptid),
+		  "S" (tls), "D" (ctid)
+		: "memory"
+	);
+	return __syscall_ret(ret);
+}
+
+#endif