xref: /third_party/musl/src/thread/i386/clone.s (revision 570af302)
1570af302Sopenharmony_ci.text
2570af302Sopenharmony_ci.global __clone
3570af302Sopenharmony_ci.hidden __clone
4570af302Sopenharmony_ci.type   __clone,@function
5570af302Sopenharmony_ci__clone:
6570af302Sopenharmony_ci	push %ebp
7570af302Sopenharmony_ci	mov %esp,%ebp
8570af302Sopenharmony_ci	push %ebx
9570af302Sopenharmony_ci	push %esi
10570af302Sopenharmony_ci	push %edi
11570af302Sopenharmony_ci
12570af302Sopenharmony_ci	xor %eax,%eax
13570af302Sopenharmony_ci	push $0x51
14570af302Sopenharmony_ci	mov %gs,%ax
15570af302Sopenharmony_ci	push $0xfffff
16570af302Sopenharmony_ci	shr $3,%eax
17570af302Sopenharmony_ci	push 28(%ebp)
18570af302Sopenharmony_ci	push %eax
19570af302Sopenharmony_ci	mov $120,%al
20570af302Sopenharmony_ci
21570af302Sopenharmony_ci	mov 12(%ebp),%ecx
22570af302Sopenharmony_ci	mov 16(%ebp),%ebx
23570af302Sopenharmony_ci	and $-16,%ecx
24570af302Sopenharmony_ci	sub $16,%ecx
25570af302Sopenharmony_ci	mov 20(%ebp),%edi
26570af302Sopenharmony_ci	mov %edi,(%ecx)
27570af302Sopenharmony_ci	mov 24(%ebp),%edx
28570af302Sopenharmony_ci	mov %esp,%esi
29570af302Sopenharmony_ci	mov 32(%ebp),%edi
30570af302Sopenharmony_ci	mov 8(%ebp),%ebp
31570af302Sopenharmony_ci	int $128
32570af302Sopenharmony_ci	test %eax,%eax
33570af302Sopenharmony_ci	jnz 1f
34570af302Sopenharmony_ci
35570af302Sopenharmony_ci	mov %ebp,%eax
36570af302Sopenharmony_ci	xor %ebp,%ebp
37570af302Sopenharmony_ci	call *%eax
38570af302Sopenharmony_ci	mov %eax,%ebx
39570af302Sopenharmony_ci	xor %eax,%eax
40570af302Sopenharmony_ci	inc %eax
41570af302Sopenharmony_ci	int $128
42570af302Sopenharmony_ci	hlt
43570af302Sopenharmony_ci
44570af302Sopenharmony_ci1:	add $16,%esp
45570af302Sopenharmony_ci	pop %edi
46570af302Sopenharmony_ci	pop %esi
47570af302Sopenharmony_ci	pop %ebx
48570af302Sopenharmony_ci	pop %ebp
49570af302Sopenharmony_ci	ret
50