clarify the purpose of this project
[nyanglibc.git] / posix / execle.shared.s
blob733fc5fb658345a7f9c912c020affc948bde0f31
1 .text
2 #APP
3 memmove = __GI_memmove
4 memset = __GI_memset
5 memcpy = __GI_memcpy
6 #NO_APP
7 .p2align 4,,15
8 .globl __GI_execle
9 .hidden __GI_execle
10 .type __GI_execle, @function
11 __GI_execle:
12 pushq %rbp
13 movq %rsi, %r10
14 movq %rsp, %rbp
15 pushq %r12
16 pushq %rbx
17 leaq 16(%rbp), %rax
18 leaq 16(%rbp), %rsi
19 subq $80, %rsp
20 movq %rdx, -48(%rbp)
21 movq %r8, -32(%rbp)
22 movq %rax, -80(%rbp)
23 leaq -64(%rbp), %rax
24 movq %rcx, -40(%rbp)
25 movq %r9, -24(%rbp)
26 movl $16, -88(%rbp)
27 movl $16, %edx
28 movq %rax, -72(%rbp)
29 movq %rax, %r8
30 movl $1, %eax
31 .p2align 4,,10
32 .p2align 3
33 .L2:
34 cmpl $47, %edx
35 ja .L5
36 movl %edx, %ecx
37 addl $8, %edx
38 addq %r8, %rcx
39 .L6:
40 cmpq $0, (%rcx)
41 je .L28
42 cmpq $2147483647, %rax
43 je .L29
44 addq $1, %rax
45 jmp .L2
46 .p2align 4,,10
47 .p2align 3
48 .L28:
49 leaq 8(,%rax,8), %rcx
50 movq %rsp, %rbx
51 leaq 16(%rbp), %rdx
52 movl $16, -88(%rbp)
53 movl $16, %r8d
54 xorl %r11d, %r11d
55 leaq 22(%rcx), %rax
56 movq %rdx, -80(%rbp)
57 leaq -64(%rbp), %rdx
58 xorl %r12d, %r12d
59 andq $-16, %rax
60 movq %rdx, -72(%rbp)
61 movq %rdx, %r9
62 subq %rax, %rsp
63 leaq 7(%rsp), %rax
64 shrq $3, %rax
65 leaq 0(,%rax,8), %rsi
66 movq %r10, 0(,%rax,8)
67 leaq 16(%rbp), %r10
68 leaq 8(%rsi), %rax
69 addq %rsi, %rcx
70 .p2align 4,,10
71 .p2align 3
72 .L11:
73 cmpl $47, %r8d
74 ja .L9
75 movl %r8d, %edx
76 movl $1, %r12d
77 addl $8, %r8d
78 addq %r9, %rdx
79 .L10:
80 movq (%rdx), %rdx
81 addq $8, %rax
82 movq %rdx, -8(%rax)
83 cmpq %rax, %rcx
84 jne .L11
85 testb %r12b, %r12b
86 je .L12
87 movl %r8d, -88(%rbp)
88 .L12:
89 testb %r11b, %r11b
90 je .L13
91 movq %r10, -80(%rbp)
92 .L13:
93 movl -88(%rbp), %eax
94 cmpl $47, %eax
95 ja .L14
96 addq %r9, %rax
97 .L15:
98 movq (%rax), %rdx
99 call __execve
100 movq %rbx, %rsp
101 leaq -16(%rbp), %rsp
102 popq %rbx
103 popq %r12
104 popq %rbp
106 .L29:
107 movq __libc_errno@gottpoff(%rip), %rax
108 movl $7, %fs:(%rax)
109 leaq -16(%rbp), %rsp
110 movl $-1, %eax
111 popq %rbx
112 popq %r12
113 popq %rbp
115 .L9:
116 movq %r10, %rdx
117 movl $1, %r11d
118 addq $8, %r10
119 jmp .L10
120 .L5:
121 movq %rsi, %rcx
122 addq $8, %rsi
123 jmp .L6
124 .L14:
125 movq -80(%rbp), %rax
126 jmp .L15
127 .size __GI_execle, .-__GI_execle
128 .globl execle
129 .set execle,__GI_execle
130 .hidden __execve