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