562
|
1 /*
|
|
2 dct64_3dnow.s: Replacement of dct36() with AMD's 3DNow! SIMD operations support
|
|
3
|
|
4 copyright ?-2006 by the mpg123 project - free software under the terms of the LGPL 2.1
|
|
5 see COPYING and AUTHORS files in distribution or http://mpg123.org
|
|
6 initially written by Syuuhei Kashiyama
|
|
7
|
|
8 This code based 'dct36_3dnow.s' by Syuuhei Kashiyama
|
|
9 <squash@mb.kcom.ne.jp>,only two types of changes have been made:
|
|
10
|
|
11 - remove PREFETCH instruction for speedup
|
|
12 - change function name for support 3DNow! automatic detect
|
|
13
|
|
14 You can find Kashiyama's original 3dnow! support patch
|
|
15 (for mpg123-0.59o) at
|
|
16 http://user.ecc.u-tokyo.ac.jp/~g810370/linux-simd/ (Japanese).
|
|
17
|
|
18 by KIMURA Takuhiro <kim@hannah.ipc.miyakyo-u.ac.jp> - until 31.Mar.1999
|
|
19 <kim@comtec.co.jp> - after 1.Apr.1999
|
|
20
|
|
21 Replacement of dct36() with AMD's 3DNow! SIMD operations support
|
|
22
|
|
23 Syuuhei Kashiyama <squash@mb.kcom.ne.jp>
|
|
24
|
|
25 The author of this program disclaim whole expressed or implied
|
|
26 warranties with regard to this program, and in no event shall the
|
|
27 author of this program liable to whatever resulted from the use of
|
|
28 this program. Use it at your own risk.
|
|
29 */
|
|
30
|
|
31 #include "mangle.h"
|
|
32
|
|
33 .globl ASM_NAME(dct36_3dnow)
|
|
34 /* .type ASM_NAME(dct36_3dnow),@function */
|
|
35 ASM_NAME(dct36_3dnow):
|
|
36 pushl %ebp
|
|
37 movl %esp,%ebp
|
|
38 subl $120,%esp
|
|
39 pushl %esi
|
|
40 pushl %ebx
|
|
41 movl 8(%ebp),%eax
|
|
42 movl 12(%ebp),%esi
|
|
43 movl 16(%ebp),%ecx
|
|
44 movl 20(%ebp),%edx
|
|
45 movl 24(%ebp),%ebx
|
|
46 leal -128(%ebp),%esp
|
|
47
|
|
48 femms
|
|
49 movq (%eax),%mm0
|
|
50 movq 4(%eax),%mm1
|
|
51 pfadd %mm1,%mm0
|
|
52 movq %mm0,4(%eax)
|
|
53 psrlq $32,%mm1
|
|
54 movq 12(%eax),%mm2
|
|
55 punpckldq %mm2,%mm1
|
|
56 pfadd %mm2,%mm1
|
|
57 movq %mm1,12(%eax)
|
|
58 psrlq $32,%mm2
|
|
59 movq 20(%eax),%mm3
|
|
60 punpckldq %mm3,%mm2
|
|
61 pfadd %mm3,%mm2
|
|
62 movq %mm2,20(%eax)
|
|
63 psrlq $32,%mm3
|
|
64 movq 28(%eax),%mm4
|
|
65 punpckldq %mm4,%mm3
|
|
66 pfadd %mm4,%mm3
|
|
67 movq %mm3,28(%eax)
|
|
68 psrlq $32,%mm4
|
|
69 movq 36(%eax),%mm5
|
|
70 punpckldq %mm5,%mm4
|
|
71 pfadd %mm5,%mm4
|
|
72 movq %mm4,36(%eax)
|
|
73 psrlq $32,%mm5
|
|
74 movq 44(%eax),%mm6
|
|
75 punpckldq %mm6,%mm5
|
|
76 pfadd %mm6,%mm5
|
|
77 movq %mm5,44(%eax)
|
|
78 psrlq $32,%mm6
|
|
79 movq 52(%eax),%mm7
|
|
80 punpckldq %mm7,%mm6
|
|
81 pfadd %mm7,%mm6
|
|
82 movq %mm6,52(%eax)
|
|
83 psrlq $32,%mm7
|
|
84 movq 60(%eax),%mm0
|
|
85 punpckldq %mm0,%mm7
|
|
86 pfadd %mm0,%mm7
|
|
87 movq %mm7,60(%eax)
|
|
88 psrlq $32,%mm0
|
|
89 movd 68(%eax),%mm1
|
|
90 pfadd %mm1,%mm0
|
|
91 movd %mm0,68(%eax)
|
|
92 movd 4(%eax),%mm0
|
|
93 movd 12(%eax),%mm1
|
|
94 punpckldq %mm1,%mm0
|
|
95 punpckldq 20(%eax),%mm1
|
|
96 pfadd %mm1,%mm0
|
|
97 movd %mm0,12(%eax)
|
|
98 psrlq $32,%mm0
|
|
99 movd %mm0,20(%eax)
|
|
100 psrlq $32,%mm1
|
|
101 movd 28(%eax),%mm2
|
|
102 punpckldq %mm2,%mm1
|
|
103 punpckldq 36(%eax),%mm2
|
|
104 pfadd %mm2,%mm1
|
|
105 movd %mm1,28(%eax)
|
|
106 psrlq $32,%mm1
|
|
107 movd %mm1,36(%eax)
|
|
108 psrlq $32,%mm2
|
|
109 movd 44(%eax),%mm3
|
|
110 punpckldq %mm3,%mm2
|
|
111 punpckldq 52(%eax),%mm3
|
|
112 pfadd %mm3,%mm2
|
|
113 movd %mm2,44(%eax)
|
|
114 psrlq $32,%mm2
|
|
115 movd %mm2,52(%eax)
|
|
116 psrlq $32,%mm3
|
|
117 movd 60(%eax),%mm4
|
|
118 punpckldq %mm4,%mm3
|
|
119 punpckldq 68(%eax),%mm4
|
|
120 pfadd %mm4,%mm3
|
|
121 movd %mm3,60(%eax)
|
|
122 psrlq $32,%mm3
|
|
123 movd %mm3,68(%eax)
|
|
124
|
|
125 movq 24(%eax),%mm0
|
|
126 movq 48(%eax),%mm1
|
|
127 movd ASM_NAME(COS9)+12,%mm2
|
|
128 punpckldq %mm2,%mm2
|
|
129 movd ASM_NAME(COS9)+24,%mm3
|
|
130 punpckldq %mm3,%mm3
|
|
131 pfmul %mm2,%mm0
|
|
132 pfmul %mm3,%mm1
|
|
133 pushl %eax
|
|
134 movl $1,%eax
|
|
135 movd %eax,%mm7
|
|
136 pi2fd %mm7,%mm7
|
|
137 popl %eax
|
|
138 movq 8(%eax),%mm2
|
|
139 movd ASM_NAME(COS9)+4,%mm3
|
|
140 punpckldq %mm3,%mm3
|
|
141 pfmul %mm3,%mm2
|
|
142 pfadd %mm0,%mm2
|
|
143 movq 40(%eax),%mm3
|
|
144 movd ASM_NAME(COS9)+20,%mm4
|
|
145 punpckldq %mm4,%mm4
|
|
146 pfmul %mm4,%mm3
|
|
147 pfadd %mm3,%mm2
|
|
148 movq 56(%eax),%mm3
|
|
149 movd ASM_NAME(COS9)+28,%mm4
|
|
150 punpckldq %mm4,%mm4
|
|
151 pfmul %mm4,%mm3
|
|
152 pfadd %mm3,%mm2
|
|
153 movq (%eax),%mm3
|
|
154 movq 16(%eax),%mm4
|
|
155 movd ASM_NAME(COS9)+8,%mm5
|
|
156 punpckldq %mm5,%mm5
|
|
157 pfmul %mm5,%mm4
|
|
158 pfadd %mm4,%mm3
|
|
159 movq 32(%eax),%mm4
|
|
160 movd ASM_NAME(COS9)+16,%mm5
|
|
161 punpckldq %mm5,%mm5
|
|
162 pfmul %mm5,%mm4
|
|
163 pfadd %mm4,%mm3
|
|
164 pfadd %mm1,%mm3
|
|
165 movq 64(%eax),%mm4
|
|
166 movd ASM_NAME(COS9)+32,%mm5
|
|
167 punpckldq %mm5,%mm5
|
|
168 pfmul %mm5,%mm4
|
|
169 pfadd %mm4,%mm3
|
|
170 movq %mm2,%mm4
|
|
171 pfadd %mm3,%mm4
|
|
172 movq %mm7,%mm5
|
|
173 punpckldq ASM_NAME(tfcos36)+0,%mm5
|
|
174 pfmul %mm5,%mm4
|
|
175 movq %mm4,%mm5
|
|
176 pfacc %mm5,%mm5
|
|
177 movd 108(%edx),%mm6
|
|
178 punpckldq 104(%edx),%mm6
|
|
179 pfmul %mm6,%mm5
|
|
180 movd %mm5,36(%ecx)
|
|
181 psrlq $32,%mm5
|
|
182 movd %mm5,32(%ecx)
|
|
183 movq %mm4,%mm6
|
|
184 punpckldq %mm6,%mm5
|
|
185 pfsub %mm6,%mm5
|
|
186 punpckhdq %mm5,%mm5
|
|
187 movd 32(%edx),%mm6
|
|
188 punpckldq 36(%edx),%mm6
|
|
189 pfmul %mm6,%mm5
|
|
190 movd 32(%esi),%mm6
|
|
191 punpckldq 36(%esi),%mm6
|
|
192 pfadd %mm6,%mm5
|
|
193 movd %mm5,1024(%ebx)
|
|
194 psrlq $32,%mm5
|
|
195 movd %mm5,1152(%ebx)
|
|
196 movq %mm3,%mm4
|
|
197 pfsub %mm2,%mm4
|
|
198 movq %mm7,%mm5
|
|
199 punpckldq ASM_NAME(tfcos36)+32,%mm5
|
|
200 pfmul %mm5,%mm4
|
|
201 movq %mm4,%mm5
|
|
202 pfacc %mm5,%mm5
|
|
203 movd 140(%edx),%mm6
|
|
204 punpckldq 72(%edx),%mm6
|
|
205 pfmul %mm6,%mm5
|
|
206 movd %mm5,68(%ecx)
|
|
207 psrlq $32,%mm5
|
|
208 movd %mm5,0(%ecx)
|
|
209 movq %mm4,%mm6
|
|
210 punpckldq %mm6,%mm5
|
|
211 pfsub %mm6,%mm5
|
|
212 punpckhdq %mm5,%mm5
|
|
213 movd 0(%edx),%mm6
|
|
214 punpckldq 68(%edx),%mm6
|
|
215 pfmul %mm6,%mm5
|
|
216 movd 0(%esi),%mm6
|
|
217 punpckldq 68(%esi),%mm6
|
|
218 pfadd %mm6,%mm5
|
|
219 movd %mm5,0(%ebx)
|
|
220 psrlq $32,%mm5
|
|
221 movd %mm5,2176(%ebx)
|
|
222 movq 8(%eax),%mm2
|
|
223 movq 40(%eax),%mm3
|
|
224 pfsub %mm3,%mm2
|
|
225 movq 56(%eax),%mm3
|
|
226 pfsub %mm3,%mm2
|
|
227 movd ASM_NAME(COS9)+12,%mm3
|
|
228 punpckldq %mm3,%mm3
|
|
229 pfmul %mm3,%mm2
|
|
230 movq 16(%eax),%mm3
|
|
231 movq 32(%eax),%mm4
|
|
232 pfsub %mm4,%mm3
|
|
233 movq 64(%eax),%mm4
|
|
234 pfsub %mm4,%mm3
|
|
235 movd ASM_NAME(COS9)+24,%mm4
|
|
236 punpckldq %mm4,%mm4
|
|
237 pfmul %mm4,%mm3
|
|
238 movq 48(%eax),%mm4
|
|
239 pfsub %mm4,%mm3
|
|
240 movq (%eax),%mm4
|
|
241 pfadd %mm4,%mm3
|
|
242 movq %mm2,%mm4
|
|
243 pfadd %mm3,%mm4
|
|
244 movq %mm7,%mm5
|
|
245 punpckldq ASM_NAME(tfcos36)+4,%mm5
|
|
246 pfmul %mm5,%mm4
|
|
247 movq %mm4,%mm5
|
|
248 pfacc %mm5,%mm5
|
|
249 movd 112(%edx),%mm6
|
|
250 punpckldq 100(%edx),%mm6
|
|
251 pfmul %mm6,%mm5
|
|
252 movd %mm5,40(%ecx)
|
|
253 psrlq $32,%mm5
|
|
254 movd %mm5,28(%ecx)
|
|
255 movq %mm4,%mm6
|
|
256 punpckldq %mm6,%mm5
|
|
257 pfsub %mm6,%mm5
|
|
258 punpckhdq %mm5,%mm5
|
|
259 movd 28(%edx),%mm6
|
|
260 punpckldq 40(%edx),%mm6
|
|
261 pfmul %mm6,%mm5
|
|
262 movd 28(%esi),%mm6
|
|
263 punpckldq 40(%esi),%mm6
|
|
264 pfadd %mm6,%mm5
|
|
265 movd %mm5,896(%ebx)
|
|
266 psrlq $32,%mm5
|
|
267 movd %mm5,1280(%ebx)
|
|
268 movq %mm3,%mm4
|
|
269 pfsub %mm2,%mm4
|
|
270 movq %mm7,%mm5
|
|
271 punpckldq ASM_NAME(tfcos36)+28,%mm5
|
|
272 pfmul %mm5,%mm4
|
|
273 movq %mm4,%mm5
|
|
274 pfacc %mm5,%mm5
|
|
275 movd 136(%edx),%mm6
|
|
276 punpckldq 76(%edx),%mm6
|
|
277 pfmul %mm6,%mm5
|
|
278 movd %mm5,64(%ecx)
|
|
279 psrlq $32,%mm5
|
|
280 movd %mm5,4(%ecx)
|
|
281 movq %mm4,%mm6
|
|
282 punpckldq %mm6,%mm5
|
|
283 pfsub %mm6,%mm5
|
|
284 punpckhdq %mm5,%mm5
|
|
285 movd 4(%edx),%mm6
|
|
286 punpckldq 64(%edx),%mm6
|
|
287 pfmul %mm6,%mm5
|
|
288 movd 4(%esi),%mm6
|
|
289 punpckldq 64(%esi),%mm6
|
|
290 pfadd %mm6,%mm5
|
|
291 movd %mm5,128(%ebx)
|
|
292 psrlq $32,%mm5
|
|
293 movd %mm5,2048(%ebx)
|
|
294
|
|
295 movq 8(%eax),%mm2
|
|
296 movd ASM_NAME(COS9)+20,%mm3
|
|
297 punpckldq %mm3,%mm3
|
|
298 pfmul %mm3,%mm2
|
|
299 pfsub %mm0,%mm2
|
|
300 movq 40(%eax),%mm3
|
|
301 movd ASM_NAME(COS9)+28,%mm4
|
|
302 punpckldq %mm4,%mm4
|
|
303 pfmul %mm4,%mm3
|
|
304 pfsub %mm3,%mm2
|
|
305 movq 56(%eax),%mm3
|
|
306 movd ASM_NAME(COS9)+4,%mm4
|
|
307 punpckldq %mm4,%mm4
|
|
308 pfmul %mm4,%mm3
|
|
309 pfadd %mm3,%mm2
|
|
310 movq (%eax),%mm3
|
|
311 movq 16(%eax),%mm4
|
|
312 movd ASM_NAME(COS9)+32,%mm5
|
|
313 punpckldq %mm5,%mm5
|
|
314 pfmul %mm5,%mm4
|
|
315 pfsub %mm4,%mm3
|
|
316 movq 32(%eax),%mm4
|
|
317 movd ASM_NAME(COS9)+8,%mm5
|
|
318 punpckldq %mm5,%mm5
|
|
319 pfmul %mm5,%mm4
|
|
320 pfsub %mm4,%mm3
|
|
321 pfadd %mm1,%mm3
|
|
322 movq 64(%eax),%mm4
|
|
323 movd ASM_NAME(COS9)+16,%mm5
|
|
324 punpckldq %mm5,%mm5
|
|
325 pfmul %mm5,%mm4
|
|
326 pfadd %mm4,%mm3
|
|
327 movq %mm2,%mm4
|
|
328 pfadd %mm3,%mm4
|
|
329 movq %mm7,%mm5
|
|
330 punpckldq ASM_NAME(tfcos36)+8,%mm5
|
|
331 pfmul %mm5,%mm4
|
|
332 movq %mm4,%mm5
|
|
333 pfacc %mm5,%mm5
|
|
334 movd 116(%edx),%mm6
|
|
335 punpckldq 96(%edx),%mm6
|
|
336 pfmul %mm6,%mm5
|
|
337 movd %mm5,44(%ecx)
|
|
338 psrlq $32,%mm5
|
|
339 movd %mm5,24(%ecx)
|
|
340 movq %mm4,%mm6
|
|
341 punpckldq %mm6,%mm5
|
|
342 pfsub %mm6,%mm5
|
|
343 punpckhdq %mm5,%mm5
|
|
344 movd 24(%edx),%mm6
|
|
345 punpckldq 44(%edx),%mm6
|
|
346 pfmul %mm6,%mm5
|
|
347 movd 24(%esi),%mm6
|
|
348 punpckldq 44(%esi),%mm6
|
|
349 pfadd %mm6,%mm5
|
|
350 movd %mm5,768(%ebx)
|
|
351 psrlq $32,%mm5
|
|
352 movd %mm5,1408(%ebx)
|
|
353 movq %mm3,%mm4
|
|
354 pfsub %mm2,%mm4
|
|
355 movq %mm7,%mm5
|
|
356 punpckldq ASM_NAME(tfcos36)+24,%mm5
|
|
357 pfmul %mm5,%mm4
|
|
358 movq %mm4,%mm5
|
|
359 pfacc %mm5,%mm5
|
|
360 movd 132(%edx),%mm6
|
|
361 punpckldq 80(%edx),%mm6
|
|
362 pfmul %mm6,%mm5
|
|
363 movd %mm5,60(%ecx)
|
|
364 psrlq $32,%mm5
|
|
365 movd %mm5,8(%ecx)
|
|
366 movq %mm4,%mm6
|
|
367 punpckldq %mm6,%mm5
|
|
368 pfsub %mm6,%mm5
|
|
369 punpckhdq %mm5,%mm5
|
|
370 movd 8(%edx),%mm6
|
|
371 punpckldq 60(%edx),%mm6
|
|
372 pfmul %mm6,%mm5
|
|
373 movd 8(%esi),%mm6
|
|
374 punpckldq 60(%esi),%mm6
|
|
375 pfadd %mm6,%mm5
|
|
376 movd %mm5,256(%ebx)
|
|
377 psrlq $32,%mm5
|
|
378 movd %mm5,1920(%ebx)
|
|
379 movq 8(%eax),%mm2
|
|
380 movd ASM_NAME(COS9)+28,%mm3
|
|
381 punpckldq %mm3,%mm3
|
|
382 pfmul %mm3,%mm2
|
|
383 pfsub %mm0,%mm2
|
|
384 movq 40(%eax),%mm3
|
|
385 movd ASM_NAME(COS9)+4,%mm4
|
|
386 punpckldq %mm4,%mm4
|
|
387 pfmul %mm4,%mm3
|
|
388 pfadd %mm3,%mm2
|
|
389 movq 56(%eax),%mm3
|
|
390 movd ASM_NAME(COS9)+20,%mm4
|
|
391 punpckldq %mm4,%mm4
|
|
392 pfmul %mm4,%mm3
|
|
393 pfsub %mm3,%mm2
|
|
394 movq (%eax),%mm3
|
|
395 movq 16(%eax),%mm4
|
|
396 movd ASM_NAME(COS9)+16,%mm5
|
|
397 punpckldq %mm5,%mm5
|
|
398 pfmul %mm5,%mm4
|
|
399 pfsub %mm4,%mm3
|
|
400 movq 32(%eax),%mm4
|
|
401 movd ASM_NAME(COS9)+32,%mm5
|
|
402 punpckldq %mm5,%mm5
|
|
403 pfmul %mm5,%mm4
|
|
404 pfadd %mm4,%mm3
|
|
405 pfadd %mm1,%mm3
|
|
406 movq 64(%eax),%mm4
|
|
407 movd ASM_NAME(COS9)+8,%mm5
|
|
408 punpckldq %mm5,%mm5
|
|
409 pfmul %mm5,%mm4
|
|
410 pfsub %mm4,%mm3
|
|
411 movq %mm2,%mm4
|
|
412 pfadd %mm3,%mm4
|
|
413 movq %mm7,%mm5
|
|
414 punpckldq ASM_NAME(tfcos36)+12,%mm5
|
|
415 pfmul %mm5,%mm4
|
|
416 movq %mm4,%mm5
|
|
417 pfacc %mm5,%mm5
|
|
418 movd 120(%edx),%mm6
|
|
419 punpckldq 92(%edx),%mm6
|
|
420 pfmul %mm6,%mm5
|
|
421 movd %mm5,48(%ecx)
|
|
422 psrlq $32,%mm5
|
|
423 movd %mm5,20(%ecx)
|
|
424 movq %mm4,%mm6
|
|
425 punpckldq %mm6,%mm5
|
|
426 pfsub %mm6,%mm5
|
|
427 punpckhdq %mm5,%mm5
|
|
428 movd 20(%edx),%mm6
|
|
429 punpckldq 48(%edx),%mm6
|
|
430 pfmul %mm6,%mm5
|
|
431 movd 20(%esi),%mm6
|
|
432 punpckldq 48(%esi),%mm6
|
|
433 pfadd %mm6,%mm5
|
|
434 movd %mm5,640(%ebx)
|
|
435 psrlq $32,%mm5
|
|
436 movd %mm5,1536(%ebx)
|
|
437 movq %mm3,%mm4
|
|
438 pfsub %mm2,%mm4
|
|
439 movq %mm7,%mm5
|
|
440 punpckldq ASM_NAME(tfcos36)+20,%mm5
|
|
441 pfmul %mm5,%mm4
|
|
442 movq %mm4,%mm5
|
|
443 pfacc %mm5,%mm5
|
|
444 movd 128(%edx),%mm6
|
|
445 punpckldq 84(%edx),%mm6
|
|
446 pfmul %mm6,%mm5
|
|
447 movd %mm5,56(%ecx)
|
|
448 psrlq $32,%mm5
|
|
449 movd %mm5,12(%ecx)
|
|
450 movq %mm4,%mm6
|
|
451 punpckldq %mm6,%mm5
|
|
452 pfsub %mm6,%mm5
|
|
453 punpckhdq %mm5,%mm5
|
|
454 movd 12(%edx),%mm6
|
|
455 punpckldq 56(%edx),%mm6
|
|
456 pfmul %mm6,%mm5
|
|
457 movd 12(%esi),%mm6
|
|
458 punpckldq 56(%esi),%mm6
|
|
459 pfadd %mm6,%mm5
|
|
460 movd %mm5,384(%ebx)
|
|
461 psrlq $32,%mm5
|
|
462 movd %mm5,1792(%ebx)
|
|
463
|
|
464 movq (%eax),%mm4
|
|
465 movq 16(%eax),%mm3
|
|
466 pfsub %mm3,%mm4
|
|
467 movq 32(%eax),%mm3
|
|
468 pfadd %mm3,%mm4
|
|
469 movq 48(%eax),%mm3
|
|
470 pfsub %mm3,%mm4
|
|
471 movq 64(%eax),%mm3
|
|
472 pfadd %mm3,%mm4
|
|
473 movq %mm7,%mm5
|
|
474 punpckldq ASM_NAME(tfcos36)+16,%mm5
|
|
475 pfmul %mm5,%mm4
|
|
476 movq %mm4,%mm5
|
|
477 pfacc %mm5,%mm5
|
|
478 movd 124(%edx),%mm6
|
|
479 punpckldq 88(%edx),%mm6
|
|
480 pfmul %mm6,%mm5
|
|
481 movd %mm5,52(%ecx)
|
|
482 psrlq $32,%mm5
|
|
483 movd %mm5,16(%ecx)
|
|
484 movq %mm4,%mm6
|
|
485 punpckldq %mm6,%mm5
|
|
486 pfsub %mm6,%mm5
|
|
487 punpckhdq %mm5,%mm5
|
|
488 movd 16(%edx),%mm6
|
|
489 punpckldq 52(%edx),%mm6
|
|
490 pfmul %mm6,%mm5
|
|
491 movd 16(%esi),%mm6
|
|
492 punpckldq 52(%esi),%mm6
|
|
493 pfadd %mm6,%mm5
|
|
494 movd %mm5,512(%ebx)
|
|
495 psrlq $32,%mm5
|
|
496 movd %mm5,1664(%ebx)
|
|
497
|
|
498 femms
|
|
499 popl %ebx
|
|
500 popl %esi
|
|
501 movl %ebp,%esp
|
|
502 popl %ebp
|
|
503 ret
|
|
504
|
|
505 /* Mark non-executable stack. */
|
|
506 #if defined(__linux__) && defined(__ELF__)
|
|
507 .section .note.GNU-stack,"",%progbits
|
|
508 #endif
|