xref: /aosp_15_r20/external/musl/src/thread/i386/clone.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker.text
2*c9945492SAndroid Build Coastguard Worker.global __clone
3*c9945492SAndroid Build Coastguard Worker.hidden __clone
4*c9945492SAndroid Build Coastguard Worker.type   __clone,@function
5*c9945492SAndroid Build Coastguard Worker__clone:
6*c9945492SAndroid Build Coastguard Worker	push %ebp
7*c9945492SAndroid Build Coastguard Worker	mov %esp,%ebp
8*c9945492SAndroid Build Coastguard Worker	push %ebx
9*c9945492SAndroid Build Coastguard Worker	push %esi
10*c9945492SAndroid Build Coastguard Worker	push %edi
11*c9945492SAndroid Build Coastguard Worker
12*c9945492SAndroid Build Coastguard Worker	xor %eax,%eax
13*c9945492SAndroid Build Coastguard Worker	push $0x51
14*c9945492SAndroid Build Coastguard Worker	mov %gs,%ax
15*c9945492SAndroid Build Coastguard Worker	push $0xfffff
16*c9945492SAndroid Build Coastguard Worker	shr $3,%eax
17*c9945492SAndroid Build Coastguard Worker	push 28(%ebp)
18*c9945492SAndroid Build Coastguard Worker	push %eax
19*c9945492SAndroid Build Coastguard Worker	mov $120,%al
20*c9945492SAndroid Build Coastguard Worker
21*c9945492SAndroid Build Coastguard Worker	mov 12(%ebp),%ecx
22*c9945492SAndroid Build Coastguard Worker	mov 16(%ebp),%ebx
23*c9945492SAndroid Build Coastguard Worker	and $-16,%ecx
24*c9945492SAndroid Build Coastguard Worker	sub $16,%ecx
25*c9945492SAndroid Build Coastguard Worker	mov 20(%ebp),%edi
26*c9945492SAndroid Build Coastguard Worker	mov %edi,(%ecx)
27*c9945492SAndroid Build Coastguard Worker	mov 24(%ebp),%edx
28*c9945492SAndroid Build Coastguard Worker	mov %esp,%esi
29*c9945492SAndroid Build Coastguard Worker	mov 32(%ebp),%edi
30*c9945492SAndroid Build Coastguard Worker	mov 8(%ebp),%ebp
31*c9945492SAndroid Build Coastguard Worker	int $128
32*c9945492SAndroid Build Coastguard Worker	test %eax,%eax
33*c9945492SAndroid Build Coastguard Worker	jnz 1f
34*c9945492SAndroid Build Coastguard Worker
35*c9945492SAndroid Build Coastguard Worker	mov %ebp,%eax
36*c9945492SAndroid Build Coastguard Worker	xor %ebp,%ebp
37*c9945492SAndroid Build Coastguard Worker	call *%eax
38*c9945492SAndroid Build Coastguard Worker	mov %eax,%ebx
39*c9945492SAndroid Build Coastguard Worker	xor %eax,%eax
40*c9945492SAndroid Build Coastguard Worker	inc %eax
41*c9945492SAndroid Build Coastguard Worker	int $128
42*c9945492SAndroid Build Coastguard Worker	hlt
43*c9945492SAndroid Build Coastguard Worker
44*c9945492SAndroid Build Coastguard Worker1:	add $16,%esp
45*c9945492SAndroid Build Coastguard Worker	pop %edi
46*c9945492SAndroid Build Coastguard Worker	pop %esi
47*c9945492SAndroid Build Coastguard Worker	pop %ebx
48*c9945492SAndroid Build Coastguard Worker	pop %ebp
49*c9945492SAndroid Build Coastguard Worker	ret
50