about summary refs log tree commit diff
path: root/src/thread/i386/clone.s
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2011-02-15 03:24:58 -0500
committerRich Felker <dalias@aerifal.cx>2011-02-15 03:24:58 -0500
commit0b2006c8fea021b7fa1fd267bf270cb8c279f230 (patch)
tree2e00de9bc9e3fdda590ff05b64e77f0bb4e30ec3 /src/thread/i386/clone.s
parent59666802fba592a59f2f4ea4dcb053287fd55826 (diff)
downloadmusl-0b2006c8fea021b7fa1fd267bf270cb8c279f230.tar.gz
musl-0b2006c8fea021b7fa1fd267bf270cb8c279f230.tar.xz
musl-0b2006c8fea021b7fa1fd267bf270cb8c279f230.zip
begin unifying clone/thread management interface in preparation for porting
Diffstat (limited to 'src/thread/i386/clone.s')
-rw-r--r--src/thread/i386/clone.s42
1 files changed, 17 insertions, 25 deletions
diff --git a/src/thread/i386/clone.s b/src/thread/i386/clone.s
index 4f33366c..53405cf1 100644
--- a/src/thread/i386/clone.s
+++ b/src/thread/i386/clone.s
@@ -1,35 +1,27 @@
 .text
-.global __clone
-.type   __clone,%function
-__clone:
-	movl	8(%esp),%ecx
-	andl	$0xfffffff0, %ecx
-	subl	$28,%ecx
-	movl	16(%esp),%eax
-	movl	%eax,12(%ecx)
-	movl	4(%esp),%eax
-	movl	%eax,8(%ecx)
+.global __uniclone
+.type   __uniclone,%function
+__uniclone:
+	movl	4(%esp),%ecx
+	subl	$24,%ecx
+	movl	8(%esp),%eax
+	movl	%eax,16(%ecx)
+	movl	12(%esp),%eax
+	movl	%eax,24(%ecx)
 	pushl	%ebx
 	pushl	%esi
 	pushl	%edi
+	pushl   %ebp
+	movl    %eax,8(%eax)
+	leal    20(%eax),%edx
+	leal    4(%eax),%esi
+	movl	%edx,%edi
+	movl	$0x7d0f00,%ebx
 	movl	$120,%eax
-	movl	12+12(%esp),%ebx
-	movl	20+12(%esp),%edx
-	movl	24+12(%esp),%esi
-	movl	28+12(%esp),%edi
 	int	$128
+	popl    %ebp
 	popl	%edi
 	popl	%esi
 	popl	%ebx
-	test	%eax,%eax
-	jnz	1f
-	xorl	%ebp,%ebp
-	call	*%ebx
-	movl	%eax, %ebx
-	movl	$1, %eax
-	int	$128
-1:	
-	movl %eax, 4(%esp)
 	ret
-
-.size __clone,.-__clone
+.size __uniclone,.-__uniclone