1 | # This file is generated from a similarly-named Perl script in the BoringSSL |
2 | # source tree. Do not edit by hand. |
3 | |
4 | #if defined(__has_feature) |
5 | #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) |
6 | #define OPENSSL_NO_ASM |
7 | #endif |
8 | #endif |
9 | |
10 | #if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) |
11 | #if defined(BORINGSSL_PREFIX) |
12 | #include <boringssl_prefix_symbols_asm.h> |
13 | #endif |
14 | .text |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | .type abi_test_trampoline, @function |
24 | .globl abi_test_trampoline |
25 | .hidden abi_test_trampoline |
26 | .align 16 |
27 | abi_test_trampoline: |
28 | .Labi_test_trampoline_seh_begin: |
29 | .cfi_startproc |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | subq $120,%rsp |
40 | .cfi_adjust_cfa_offset 120 |
41 | .Labi_test_trampoline_seh_prolog_alloc: |
42 | movq %r8,48(%rsp) |
43 | movq %rbx,64(%rsp) |
44 | .cfi_offset rbx, -64 |
45 | .Labi_test_trampoline_seh_prolog_rbx: |
46 | movq %rbp,72(%rsp) |
47 | .cfi_offset rbp, -56 |
48 | .Labi_test_trampoline_seh_prolog_rbp: |
49 | movq %r12,80(%rsp) |
50 | .cfi_offset r12, -48 |
51 | .Labi_test_trampoline_seh_prolog_r12: |
52 | movq %r13,88(%rsp) |
53 | .cfi_offset r13, -40 |
54 | .Labi_test_trampoline_seh_prolog_r13: |
55 | movq %r14,96(%rsp) |
56 | .cfi_offset r14, -32 |
57 | .Labi_test_trampoline_seh_prolog_r14: |
58 | movq %r15,104(%rsp) |
59 | .cfi_offset r15, -24 |
60 | .Labi_test_trampoline_seh_prolog_r15: |
61 | .Labi_test_trampoline_seh_prolog_end: |
62 | movq 0(%rsi),%rbx |
63 | movq 8(%rsi),%rbp |
64 | movq 16(%rsi),%r12 |
65 | movq 24(%rsi),%r13 |
66 | movq 32(%rsi),%r14 |
67 | movq 40(%rsi),%r15 |
68 | |
69 | movq %rdi,32(%rsp) |
70 | movq %rsi,40(%rsp) |
71 | |
72 | |
73 | |
74 | |
75 | movq %rdx,%r10 |
76 | movq %rcx,%r11 |
77 | decq %r11 |
78 | js .Largs_done |
79 | movq (%r10),%rdi |
80 | addq $8,%r10 |
81 | decq %r11 |
82 | js .Largs_done |
83 | movq (%r10),%rsi |
84 | addq $8,%r10 |
85 | decq %r11 |
86 | js .Largs_done |
87 | movq (%r10),%rdx |
88 | addq $8,%r10 |
89 | decq %r11 |
90 | js .Largs_done |
91 | movq (%r10),%rcx |
92 | addq $8,%r10 |
93 | decq %r11 |
94 | js .Largs_done |
95 | movq (%r10),%r8 |
96 | addq $8,%r10 |
97 | decq %r11 |
98 | js .Largs_done |
99 | movq (%r10),%r9 |
100 | addq $8,%r10 |
101 | leaq 0(%rsp),%rax |
102 | .Largs_loop: |
103 | decq %r11 |
104 | js .Largs_done |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | movq %r11,56(%rsp) |
112 | movq (%r10),%r11 |
113 | movq %r11,(%rax) |
114 | movq 56(%rsp),%r11 |
115 | |
116 | addq $8,%r10 |
117 | addq $8,%rax |
118 | jmp .Largs_loop |
119 | |
120 | .Largs_done: |
121 | movq 32(%rsp),%rax |
122 | movq 48(%rsp),%r10 |
123 | testq %r10,%r10 |
124 | jz .Lno_unwind |
125 | |
126 | |
127 | pushfq |
128 | orq $0x100,0(%rsp) |
129 | popfq |
130 | |
131 | |
132 | |
133 | nop |
134 | .globl abi_test_unwind_start |
135 | .hidden abi_test_unwind_start |
136 | abi_test_unwind_start: |
137 | |
138 | call *%rax |
139 | .globl abi_test_unwind_return |
140 | .hidden abi_test_unwind_return |
141 | abi_test_unwind_return: |
142 | |
143 | |
144 | |
145 | |
146 | pushfq |
147 | andq $-0x101,0(%rsp) |
148 | popfq |
149 | .globl abi_test_unwind_stop |
150 | .hidden abi_test_unwind_stop |
151 | abi_test_unwind_stop: |
152 | |
153 | jmp .Lcall_done |
154 | |
155 | .Lno_unwind: |
156 | call *%rax |
157 | |
158 | .Lcall_done: |
159 | |
160 | movq 40(%rsp),%rsi |
161 | movq %rbx,0(%rsi) |
162 | movq %rbp,8(%rsi) |
163 | movq %r12,16(%rsi) |
164 | movq %r13,24(%rsi) |
165 | movq %r14,32(%rsi) |
166 | movq %r15,40(%rsi) |
167 | movq 64(%rsp),%rbx |
168 | .cfi_restore rbx |
169 | movq 72(%rsp),%rbp |
170 | .cfi_restore rbp |
171 | movq 80(%rsp),%r12 |
172 | .cfi_restore r12 |
173 | movq 88(%rsp),%r13 |
174 | .cfi_restore r13 |
175 | movq 96(%rsp),%r14 |
176 | .cfi_restore r14 |
177 | movq 104(%rsp),%r15 |
178 | .cfi_restore r15 |
179 | addq $120,%rsp |
180 | .cfi_adjust_cfa_offset -120 |
181 | |
182 | |
183 | .byte 0xf3,0xc3 |
184 | .cfi_endproc |
185 | .Labi_test_trampoline_seh_end: |
186 | .size abi_test_trampoline,.-abi_test_trampoline |
187 | .type abi_test_clobber_rax, @function |
188 | .globl abi_test_clobber_rax |
189 | .hidden abi_test_clobber_rax |
190 | .align 16 |
191 | abi_test_clobber_rax: |
192 | xorq %rax,%rax |
193 | .byte 0xf3,0xc3 |
194 | .size abi_test_clobber_rax,.-abi_test_clobber_rax |
195 | .type abi_test_clobber_rbx, @function |
196 | .globl abi_test_clobber_rbx |
197 | .hidden abi_test_clobber_rbx |
198 | .align 16 |
199 | abi_test_clobber_rbx: |
200 | xorq %rbx,%rbx |
201 | .byte 0xf3,0xc3 |
202 | .size abi_test_clobber_rbx,.-abi_test_clobber_rbx |
203 | .type abi_test_clobber_rcx, @function |
204 | .globl abi_test_clobber_rcx |
205 | .hidden abi_test_clobber_rcx |
206 | .align 16 |
207 | abi_test_clobber_rcx: |
208 | xorq %rcx,%rcx |
209 | .byte 0xf3,0xc3 |
210 | .size abi_test_clobber_rcx,.-abi_test_clobber_rcx |
211 | .type abi_test_clobber_rdx, @function |
212 | .globl abi_test_clobber_rdx |
213 | .hidden abi_test_clobber_rdx |
214 | .align 16 |
215 | abi_test_clobber_rdx: |
216 | xorq %rdx,%rdx |
217 | .byte 0xf3,0xc3 |
218 | .size abi_test_clobber_rdx,.-abi_test_clobber_rdx |
219 | .type abi_test_clobber_rdi, @function |
220 | .globl abi_test_clobber_rdi |
221 | .hidden abi_test_clobber_rdi |
222 | .align 16 |
223 | abi_test_clobber_rdi: |
224 | xorq %rdi,%rdi |
225 | .byte 0xf3,0xc3 |
226 | .size abi_test_clobber_rdi,.-abi_test_clobber_rdi |
227 | .type abi_test_clobber_rsi, @function |
228 | .globl abi_test_clobber_rsi |
229 | .hidden abi_test_clobber_rsi |
230 | .align 16 |
231 | abi_test_clobber_rsi: |
232 | xorq %rsi,%rsi |
233 | .byte 0xf3,0xc3 |
234 | .size abi_test_clobber_rsi,.-abi_test_clobber_rsi |
235 | .type abi_test_clobber_rbp, @function |
236 | .globl abi_test_clobber_rbp |
237 | .hidden abi_test_clobber_rbp |
238 | .align 16 |
239 | abi_test_clobber_rbp: |
240 | xorq %rbp,%rbp |
241 | .byte 0xf3,0xc3 |
242 | .size abi_test_clobber_rbp,.-abi_test_clobber_rbp |
243 | .type abi_test_clobber_r8, @function |
244 | .globl abi_test_clobber_r8 |
245 | .hidden abi_test_clobber_r8 |
246 | .align 16 |
247 | abi_test_clobber_r8: |
248 | xorq %r8,%r8 |
249 | .byte 0xf3,0xc3 |
250 | .size abi_test_clobber_r8,.-abi_test_clobber_r8 |
251 | .type abi_test_clobber_r9, @function |
252 | .globl abi_test_clobber_r9 |
253 | .hidden abi_test_clobber_r9 |
254 | .align 16 |
255 | abi_test_clobber_r9: |
256 | xorq %r9,%r9 |
257 | .byte 0xf3,0xc3 |
258 | .size abi_test_clobber_r9,.-abi_test_clobber_r9 |
259 | .type abi_test_clobber_r10, @function |
260 | .globl abi_test_clobber_r10 |
261 | .hidden abi_test_clobber_r10 |
262 | .align 16 |
263 | abi_test_clobber_r10: |
264 | xorq %r10,%r10 |
265 | .byte 0xf3,0xc3 |
266 | .size abi_test_clobber_r10,.-abi_test_clobber_r10 |
267 | .type abi_test_clobber_r11, @function |
268 | .globl abi_test_clobber_r11 |
269 | .hidden abi_test_clobber_r11 |
270 | .align 16 |
271 | abi_test_clobber_r11: |
272 | xorq %r11,%r11 |
273 | .byte 0xf3,0xc3 |
274 | .size abi_test_clobber_r11,.-abi_test_clobber_r11 |
275 | .type abi_test_clobber_r12, @function |
276 | .globl abi_test_clobber_r12 |
277 | .hidden abi_test_clobber_r12 |
278 | .align 16 |
279 | abi_test_clobber_r12: |
280 | xorq %r12,%r12 |
281 | .byte 0xf3,0xc3 |
282 | .size abi_test_clobber_r12,.-abi_test_clobber_r12 |
283 | .type abi_test_clobber_r13, @function |
284 | .globl abi_test_clobber_r13 |
285 | .hidden abi_test_clobber_r13 |
286 | .align 16 |
287 | abi_test_clobber_r13: |
288 | xorq %r13,%r13 |
289 | .byte 0xf3,0xc3 |
290 | .size abi_test_clobber_r13,.-abi_test_clobber_r13 |
291 | .type abi_test_clobber_r14, @function |
292 | .globl abi_test_clobber_r14 |
293 | .hidden abi_test_clobber_r14 |
294 | .align 16 |
295 | abi_test_clobber_r14: |
296 | xorq %r14,%r14 |
297 | .byte 0xf3,0xc3 |
298 | .size abi_test_clobber_r14,.-abi_test_clobber_r14 |
299 | .type abi_test_clobber_r15, @function |
300 | .globl abi_test_clobber_r15 |
301 | .hidden abi_test_clobber_r15 |
302 | .align 16 |
303 | abi_test_clobber_r15: |
304 | xorq %r15,%r15 |
305 | .byte 0xf3,0xc3 |
306 | .size abi_test_clobber_r15,.-abi_test_clobber_r15 |
307 | .type abi_test_clobber_xmm0, @function |
308 | .globl abi_test_clobber_xmm0 |
309 | .hidden abi_test_clobber_xmm0 |
310 | .align 16 |
311 | abi_test_clobber_xmm0: |
312 | pxor %xmm0,%xmm0 |
313 | .byte 0xf3,0xc3 |
314 | .size abi_test_clobber_xmm0,.-abi_test_clobber_xmm0 |
315 | .type abi_test_clobber_xmm1, @function |
316 | .globl abi_test_clobber_xmm1 |
317 | .hidden abi_test_clobber_xmm1 |
318 | .align 16 |
319 | abi_test_clobber_xmm1: |
320 | pxor %xmm1,%xmm1 |
321 | .byte 0xf3,0xc3 |
322 | .size abi_test_clobber_xmm1,.-abi_test_clobber_xmm1 |
323 | .type abi_test_clobber_xmm2, @function |
324 | .globl abi_test_clobber_xmm2 |
325 | .hidden abi_test_clobber_xmm2 |
326 | .align 16 |
327 | abi_test_clobber_xmm2: |
328 | pxor %xmm2,%xmm2 |
329 | .byte 0xf3,0xc3 |
330 | .size abi_test_clobber_xmm2,.-abi_test_clobber_xmm2 |
331 | .type abi_test_clobber_xmm3, @function |
332 | .globl abi_test_clobber_xmm3 |
333 | .hidden abi_test_clobber_xmm3 |
334 | .align 16 |
335 | abi_test_clobber_xmm3: |
336 | pxor %xmm3,%xmm3 |
337 | .byte 0xf3,0xc3 |
338 | .size abi_test_clobber_xmm3,.-abi_test_clobber_xmm3 |
339 | .type abi_test_clobber_xmm4, @function |
340 | .globl abi_test_clobber_xmm4 |
341 | .hidden abi_test_clobber_xmm4 |
342 | .align 16 |
343 | abi_test_clobber_xmm4: |
344 | pxor %xmm4,%xmm4 |
345 | .byte 0xf3,0xc3 |
346 | .size abi_test_clobber_xmm4,.-abi_test_clobber_xmm4 |
347 | .type abi_test_clobber_xmm5, @function |
348 | .globl abi_test_clobber_xmm5 |
349 | .hidden abi_test_clobber_xmm5 |
350 | .align 16 |
351 | abi_test_clobber_xmm5: |
352 | pxor %xmm5,%xmm5 |
353 | .byte 0xf3,0xc3 |
354 | .size abi_test_clobber_xmm5,.-abi_test_clobber_xmm5 |
355 | .type abi_test_clobber_xmm6, @function |
356 | .globl abi_test_clobber_xmm6 |
357 | .hidden abi_test_clobber_xmm6 |
358 | .align 16 |
359 | abi_test_clobber_xmm6: |
360 | pxor %xmm6,%xmm6 |
361 | .byte 0xf3,0xc3 |
362 | .size abi_test_clobber_xmm6,.-abi_test_clobber_xmm6 |
363 | .type abi_test_clobber_xmm7, @function |
364 | .globl abi_test_clobber_xmm7 |
365 | .hidden abi_test_clobber_xmm7 |
366 | .align 16 |
367 | abi_test_clobber_xmm7: |
368 | pxor %xmm7,%xmm7 |
369 | .byte 0xf3,0xc3 |
370 | .size abi_test_clobber_xmm7,.-abi_test_clobber_xmm7 |
371 | .type abi_test_clobber_xmm8, @function |
372 | .globl abi_test_clobber_xmm8 |
373 | .hidden abi_test_clobber_xmm8 |
374 | .align 16 |
375 | abi_test_clobber_xmm8: |
376 | pxor %xmm8,%xmm8 |
377 | .byte 0xf3,0xc3 |
378 | .size abi_test_clobber_xmm8,.-abi_test_clobber_xmm8 |
379 | .type abi_test_clobber_xmm9, @function |
380 | .globl abi_test_clobber_xmm9 |
381 | .hidden abi_test_clobber_xmm9 |
382 | .align 16 |
383 | abi_test_clobber_xmm9: |
384 | pxor %xmm9,%xmm9 |
385 | .byte 0xf3,0xc3 |
386 | .size abi_test_clobber_xmm9,.-abi_test_clobber_xmm9 |
387 | .type abi_test_clobber_xmm10, @function |
388 | .globl abi_test_clobber_xmm10 |
389 | .hidden abi_test_clobber_xmm10 |
390 | .align 16 |
391 | abi_test_clobber_xmm10: |
392 | pxor %xmm10,%xmm10 |
393 | .byte 0xf3,0xc3 |
394 | .size abi_test_clobber_xmm10,.-abi_test_clobber_xmm10 |
395 | .type abi_test_clobber_xmm11, @function |
396 | .globl abi_test_clobber_xmm11 |
397 | .hidden abi_test_clobber_xmm11 |
398 | .align 16 |
399 | abi_test_clobber_xmm11: |
400 | pxor %xmm11,%xmm11 |
401 | .byte 0xf3,0xc3 |
402 | .size abi_test_clobber_xmm11,.-abi_test_clobber_xmm11 |
403 | .type abi_test_clobber_xmm12, @function |
404 | .globl abi_test_clobber_xmm12 |
405 | .hidden abi_test_clobber_xmm12 |
406 | .align 16 |
407 | abi_test_clobber_xmm12: |
408 | pxor %xmm12,%xmm12 |
409 | .byte 0xf3,0xc3 |
410 | .size abi_test_clobber_xmm12,.-abi_test_clobber_xmm12 |
411 | .type abi_test_clobber_xmm13, @function |
412 | .globl abi_test_clobber_xmm13 |
413 | .hidden abi_test_clobber_xmm13 |
414 | .align 16 |
415 | abi_test_clobber_xmm13: |
416 | pxor %xmm13,%xmm13 |
417 | .byte 0xf3,0xc3 |
418 | .size abi_test_clobber_xmm13,.-abi_test_clobber_xmm13 |
419 | .type abi_test_clobber_xmm14, @function |
420 | .globl abi_test_clobber_xmm14 |
421 | .hidden abi_test_clobber_xmm14 |
422 | .align 16 |
423 | abi_test_clobber_xmm14: |
424 | pxor %xmm14,%xmm14 |
425 | .byte 0xf3,0xc3 |
426 | .size abi_test_clobber_xmm14,.-abi_test_clobber_xmm14 |
427 | .type abi_test_clobber_xmm15, @function |
428 | .globl abi_test_clobber_xmm15 |
429 | .hidden abi_test_clobber_xmm15 |
430 | .align 16 |
431 | abi_test_clobber_xmm15: |
432 | pxor %xmm15,%xmm15 |
433 | .byte 0xf3,0xc3 |
434 | .size abi_test_clobber_xmm15,.-abi_test_clobber_xmm15 |
435 | |
436 | |
437 | |
438 | .type abi_test_bad_unwind_wrong_register, @function |
439 | .globl abi_test_bad_unwind_wrong_register |
440 | .hidden abi_test_bad_unwind_wrong_register |
441 | .align 16 |
442 | abi_test_bad_unwind_wrong_register: |
443 | .cfi_startproc |
444 | .Labi_test_bad_unwind_wrong_register_seh_begin: |
445 | pushq %r12 |
446 | .cfi_adjust_cfa_offset 8 |
447 | .cfi_offset %r13,-16 |
448 | .Labi_test_bad_unwind_wrong_register_seh_push_r13: |
449 | |
450 | |
451 | |
452 | nop |
453 | popq %r12 |
454 | .cfi_adjust_cfa_offset -8 |
455 | .cfi_restore %r12 |
456 | .byte 0xf3,0xc3 |
457 | .Labi_test_bad_unwind_wrong_register_seh_end: |
458 | .cfi_endproc |
459 | .size abi_test_bad_unwind_wrong_register,.-abi_test_bad_unwind_wrong_register |
460 | |
461 | |
462 | |
463 | |
464 | .type abi_test_bad_unwind_temporary, @function |
465 | .globl abi_test_bad_unwind_temporary |
466 | .hidden abi_test_bad_unwind_temporary |
467 | .align 16 |
468 | abi_test_bad_unwind_temporary: |
469 | .cfi_startproc |
470 | .Labi_test_bad_unwind_temporary_seh_begin: |
471 | pushq %r12 |
472 | .cfi_adjust_cfa_offset 8 |
473 | .cfi_offset %r12,-16 |
474 | .Labi_test_bad_unwind_temporary_seh_push_r12: |
475 | |
476 | movq %r12,%rax |
477 | incq %rax |
478 | movq %rax,(%rsp) |
479 | |
480 | |
481 | |
482 | movq %r12,(%rsp) |
483 | |
484 | |
485 | popq %r12 |
486 | .cfi_adjust_cfa_offset -8 |
487 | .cfi_restore %r12 |
488 | .byte 0xf3,0xc3 |
489 | .Labi_test_bad_unwind_temporary_seh_end: |
490 | .cfi_endproc |
491 | .size abi_test_bad_unwind_temporary,.-abi_test_bad_unwind_temporary |
492 | |
493 | |
494 | |
495 | |
496 | .type abi_test_set_direction_flag, @function |
497 | .globl abi_test_get_and_clear_direction_flag |
498 | .hidden abi_test_get_and_clear_direction_flag |
499 | abi_test_get_and_clear_direction_flag: |
500 | pushfq |
501 | popq %rax |
502 | andq $0x400,%rax |
503 | shrq $10,%rax |
504 | cld |
505 | .byte 0xf3,0xc3 |
506 | .size abi_test_get_and_clear_direction_flag,.-abi_test_get_and_clear_direction_flag |
507 | |
508 | |
509 | |
510 | .type abi_test_set_direction_flag, @function |
511 | .globl abi_test_set_direction_flag |
512 | .hidden abi_test_set_direction_flag |
513 | abi_test_set_direction_flag: |
514 | std |
515 | .byte 0xf3,0xc3 |
516 | .size abi_test_set_direction_flag,.-abi_test_set_direction_flag |
517 | #endif |
518 | |