xref: /aosp_15_r20/external/cronet/third_party/boringssl/src/gen/test_support/trampoline-x86_64-apple.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(__APPLE__)
7.text
8
9
10
11
12
13
14
15
16
17.globl	_abi_test_trampoline
18.private_extern _abi_test_trampoline
19.p2align	4
20_abi_test_trampoline:
21
22
23_CET_ENDBR
24
25
26
27
28
29
30
31
32
33	subq	$120,%rsp
34
35
36	movq	%r8,48(%rsp)
37	movq	%rbx,64(%rsp)
38
39
40	movq	%rbp,72(%rsp)
41
42
43	movq	%r12,80(%rsp)
44
45
46	movq	%r13,88(%rsp)
47
48
49	movq	%r14,96(%rsp)
50
51
52	movq	%r15,104(%rsp)
53
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	L$args_done
72	movq	(%r10),%rdi
73	addq	$8,%r10
74	decq	%r11
75	js	L$args_done
76	movq	(%r10),%rsi
77	addq	$8,%r10
78	decq	%r11
79	js	L$args_done
80	movq	(%r10),%rdx
81	addq	$8,%r10
82	decq	%r11
83	js	L$args_done
84	movq	(%r10),%rcx
85	addq	$8,%r10
86	decq	%r11
87	js	L$args_done
88	movq	(%r10),%r8
89	addq	$8,%r10
90	decq	%r11
91	js	L$args_done
92	movq	(%r10),%r9
93	addq	$8,%r10
94	leaq	0(%rsp),%rax
95L$args_loop:
96	decq	%r11
97	js	L$args_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	L$args_loop
112
113L$args_done:
114	movq	32(%rsp),%rax
115	movq	48(%rsp),%r10
116	testq	%r10,%r10
117	jz	L$no_unwind
118
119
120	pushfq
121	orq	$0x100,0(%rsp)
122	popfq
123
124
125
126	nop
127.globl	_abi_test_unwind_start
128.private_extern _abi_test_unwind_start
129_abi_test_unwind_start:
130
131	call	*%rax
132.globl	_abi_test_unwind_return
133.private_extern _abi_test_unwind_return
134_abi_test_unwind_return:
135
136
137
138
139	pushfq
140	andq	$-0x101,0(%rsp)
141	popfq
142.globl	_abi_test_unwind_stop
143.private_extern _abi_test_unwind_stop
144_abi_test_unwind_stop:
145
146	jmp	L$call_done
147
148L$no_unwind:
149	call	*%rax
150
151L$call_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
162	movq	72(%rsp),%rbp
163
164	movq	80(%rsp),%r12
165
166	movq	88(%rsp),%r13
167
168	movq	96(%rsp),%r14
169
170	movq	104(%rsp),%r15
171
172	addq	$120,%rsp
173
174
175
176	ret
177
178
179
180
181.globl	_abi_test_clobber_rax
182.private_extern _abi_test_clobber_rax
183.p2align	4
184_abi_test_clobber_rax:
185_CET_ENDBR
186	xorq	%rax,%rax
187	ret
188
189
190.globl	_abi_test_clobber_rbx
191.private_extern _abi_test_clobber_rbx
192.p2align	4
193_abi_test_clobber_rbx:
194_CET_ENDBR
195	xorq	%rbx,%rbx
196	ret
197
198
199.globl	_abi_test_clobber_rcx
200.private_extern _abi_test_clobber_rcx
201.p2align	4
202_abi_test_clobber_rcx:
203_CET_ENDBR
204	xorq	%rcx,%rcx
205	ret
206
207
208.globl	_abi_test_clobber_rdx
209.private_extern _abi_test_clobber_rdx
210.p2align	4
211_abi_test_clobber_rdx:
212_CET_ENDBR
213	xorq	%rdx,%rdx
214	ret
215
216
217.globl	_abi_test_clobber_rdi
218.private_extern _abi_test_clobber_rdi
219.p2align	4
220_abi_test_clobber_rdi:
221_CET_ENDBR
222	xorq	%rdi,%rdi
223	ret
224
225
226.globl	_abi_test_clobber_rsi
227.private_extern _abi_test_clobber_rsi
228.p2align	4
229_abi_test_clobber_rsi:
230_CET_ENDBR
231	xorq	%rsi,%rsi
232	ret
233
234
235.globl	_abi_test_clobber_rbp
236.private_extern _abi_test_clobber_rbp
237.p2align	4
238_abi_test_clobber_rbp:
239_CET_ENDBR
240	xorq	%rbp,%rbp
241	ret
242
243
244.globl	_abi_test_clobber_r8
245.private_extern _abi_test_clobber_r8
246.p2align	4
247_abi_test_clobber_r8:
248_CET_ENDBR
249	xorq	%r8,%r8
250	ret
251
252
253.globl	_abi_test_clobber_r9
254.private_extern _abi_test_clobber_r9
255.p2align	4
256_abi_test_clobber_r9:
257_CET_ENDBR
258	xorq	%r9,%r9
259	ret
260
261
262.globl	_abi_test_clobber_r10
263.private_extern _abi_test_clobber_r10
264.p2align	4
265_abi_test_clobber_r10:
266_CET_ENDBR
267	xorq	%r10,%r10
268	ret
269
270
271.globl	_abi_test_clobber_r11
272.private_extern _abi_test_clobber_r11
273.p2align	4
274_abi_test_clobber_r11:
275_CET_ENDBR
276	xorq	%r11,%r11
277	ret
278
279
280.globl	_abi_test_clobber_r12
281.private_extern _abi_test_clobber_r12
282.p2align	4
283_abi_test_clobber_r12:
284_CET_ENDBR
285	xorq	%r12,%r12
286	ret
287
288
289.globl	_abi_test_clobber_r13
290.private_extern _abi_test_clobber_r13
291.p2align	4
292_abi_test_clobber_r13:
293_CET_ENDBR
294	xorq	%r13,%r13
295	ret
296
297
298.globl	_abi_test_clobber_r14
299.private_extern _abi_test_clobber_r14
300.p2align	4
301_abi_test_clobber_r14:
302_CET_ENDBR
303	xorq	%r14,%r14
304	ret
305
306
307.globl	_abi_test_clobber_r15
308.private_extern _abi_test_clobber_r15
309.p2align	4
310_abi_test_clobber_r15:
311_CET_ENDBR
312	xorq	%r15,%r15
313	ret
314
315
316.globl	_abi_test_clobber_xmm0
317.private_extern _abi_test_clobber_xmm0
318.p2align	4
319_abi_test_clobber_xmm0:
320_CET_ENDBR
321	pxor	%xmm0,%xmm0
322	ret
323
324
325.globl	_abi_test_clobber_xmm1
326.private_extern _abi_test_clobber_xmm1
327.p2align	4
328_abi_test_clobber_xmm1:
329_CET_ENDBR
330	pxor	%xmm1,%xmm1
331	ret
332
333
334.globl	_abi_test_clobber_xmm2
335.private_extern _abi_test_clobber_xmm2
336.p2align	4
337_abi_test_clobber_xmm2:
338_CET_ENDBR
339	pxor	%xmm2,%xmm2
340	ret
341
342
343.globl	_abi_test_clobber_xmm3
344.private_extern _abi_test_clobber_xmm3
345.p2align	4
346_abi_test_clobber_xmm3:
347_CET_ENDBR
348	pxor	%xmm3,%xmm3
349	ret
350
351
352.globl	_abi_test_clobber_xmm4
353.private_extern _abi_test_clobber_xmm4
354.p2align	4
355_abi_test_clobber_xmm4:
356_CET_ENDBR
357	pxor	%xmm4,%xmm4
358	ret
359
360
361.globl	_abi_test_clobber_xmm5
362.private_extern _abi_test_clobber_xmm5
363.p2align	4
364_abi_test_clobber_xmm5:
365_CET_ENDBR
366	pxor	%xmm5,%xmm5
367	ret
368
369
370.globl	_abi_test_clobber_xmm6
371.private_extern _abi_test_clobber_xmm6
372.p2align	4
373_abi_test_clobber_xmm6:
374_CET_ENDBR
375	pxor	%xmm6,%xmm6
376	ret
377
378
379.globl	_abi_test_clobber_xmm7
380.private_extern _abi_test_clobber_xmm7
381.p2align	4
382_abi_test_clobber_xmm7:
383_CET_ENDBR
384	pxor	%xmm7,%xmm7
385	ret
386
387
388.globl	_abi_test_clobber_xmm8
389.private_extern _abi_test_clobber_xmm8
390.p2align	4
391_abi_test_clobber_xmm8:
392_CET_ENDBR
393	pxor	%xmm8,%xmm8
394	ret
395
396
397.globl	_abi_test_clobber_xmm9
398.private_extern _abi_test_clobber_xmm9
399.p2align	4
400_abi_test_clobber_xmm9:
401_CET_ENDBR
402	pxor	%xmm9,%xmm9
403	ret
404
405
406.globl	_abi_test_clobber_xmm10
407.private_extern _abi_test_clobber_xmm10
408.p2align	4
409_abi_test_clobber_xmm10:
410_CET_ENDBR
411	pxor	%xmm10,%xmm10
412	ret
413
414
415.globl	_abi_test_clobber_xmm11
416.private_extern _abi_test_clobber_xmm11
417.p2align	4
418_abi_test_clobber_xmm11:
419_CET_ENDBR
420	pxor	%xmm11,%xmm11
421	ret
422
423
424.globl	_abi_test_clobber_xmm12
425.private_extern _abi_test_clobber_xmm12
426.p2align	4
427_abi_test_clobber_xmm12:
428_CET_ENDBR
429	pxor	%xmm12,%xmm12
430	ret
431
432
433.globl	_abi_test_clobber_xmm13
434.private_extern _abi_test_clobber_xmm13
435.p2align	4
436_abi_test_clobber_xmm13:
437_CET_ENDBR
438	pxor	%xmm13,%xmm13
439	ret
440
441
442.globl	_abi_test_clobber_xmm14
443.private_extern _abi_test_clobber_xmm14
444.p2align	4
445_abi_test_clobber_xmm14:
446_CET_ENDBR
447	pxor	%xmm14,%xmm14
448	ret
449
450
451.globl	_abi_test_clobber_xmm15
452.private_extern _abi_test_clobber_xmm15
453.p2align	4
454_abi_test_clobber_xmm15:
455_CET_ENDBR
456	pxor	%xmm15,%xmm15
457	ret
458
459
460
461
462
463.globl	_abi_test_bad_unwind_wrong_register
464.private_extern _abi_test_bad_unwind_wrong_register
465.p2align	4
466_abi_test_bad_unwind_wrong_register:
467
468
469_CET_ENDBR
470	pushq	%r12
471
472
473
474
475
476	nop
477	popq	%r12
478
479	ret
480
481
482
483
484
485
486
487
488.globl	_abi_test_bad_unwind_temporary
489.private_extern _abi_test_bad_unwind_temporary
490.p2align	4
491_abi_test_bad_unwind_temporary:
492
493
494_CET_ENDBR
495	pushq	%r12
496
497
498
499	movq	%r12,%rax
500	incq	%rax
501	movq	%rax,(%rsp)
502
503
504
505	movq	%r12,(%rsp)
506
507
508	popq	%r12
509
510	ret
511
512
513
514
515
516
517
518
519.globl	_abi_test_get_and_clear_direction_flag
520.private_extern _abi_test_get_and_clear_direction_flag
521_abi_test_get_and_clear_direction_flag:
522_CET_ENDBR
523	pushfq
524	popq	%rax
525	andq	$0x400,%rax
526	shrq	$10,%rax
527	cld
528	ret
529
530
531
532
533
534.globl	_abi_test_set_direction_flag
535.private_extern _abi_test_set_direction_flag
536_abi_test_set_direction_flag:
537_CET_ENDBR
538	std
539	ret
540
541#endif
542