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