• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; This file is generated from a similarly-named Perl script in the BoringSSL
2; source tree. Do not edit by hand.
3
4%ifidn __OUTPUT_FORMAT__, win64
5default	rel
6%define XMMWORD
7%define YMMWORD
8%define ZMMWORD
9%define _CET_ENDBR
10
11%ifdef BORINGSSL_PREFIX
12%include "boringssl_prefix_symbols_nasm.inc"
13%endif
14section	.text code align=64
15
16
17
18
19
20
21
22
23
24
25global	abi_test_trampoline
26ALIGN	16
27abi_test_trampoline:
28
29$L$SEH_begin_abi_test_trampoline_1:
30_CET_ENDBR
31
32
33
34
35
36
37
38
39
40	sub	rsp,344
41
42$L$SEH_prolog_abi_test_trampoline_2:
43	mov	QWORD[112+rsp],rbx
44
45$L$SEH_prolog_abi_test_trampoline_3:
46	mov	QWORD[120+rsp],rbp
47
48$L$SEH_prolog_abi_test_trampoline_4:
49	mov	QWORD[128+rsp],rdi
50
51$L$SEH_prolog_abi_test_trampoline_5:
52	mov	QWORD[136+rsp],rsi
53
54$L$SEH_prolog_abi_test_trampoline_6:
55	mov	QWORD[144+rsp],r12
56
57$L$SEH_prolog_abi_test_trampoline_7:
58	mov	QWORD[152+rsp],r13
59
60$L$SEH_prolog_abi_test_trampoline_8:
61	mov	QWORD[160+rsp],r14
62
63$L$SEH_prolog_abi_test_trampoline_9:
64	mov	QWORD[168+rsp],r15
65
66$L$SEH_prolog_abi_test_trampoline_10:
67	movdqa	XMMWORD[176+rsp],xmm6
68
69$L$SEH_prolog_abi_test_trampoline_11:
70	movdqa	XMMWORD[192+rsp],xmm7
71
72$L$SEH_prolog_abi_test_trampoline_12:
73	movdqa	XMMWORD[208+rsp],xmm8
74
75$L$SEH_prolog_abi_test_trampoline_13:
76	movdqa	XMMWORD[224+rsp],xmm9
77
78$L$SEH_prolog_abi_test_trampoline_14:
79	movdqa	XMMWORD[240+rsp],xmm10
80
81$L$SEH_prolog_abi_test_trampoline_15:
82	movdqa	XMMWORD[256+rsp],xmm11
83
84$L$SEH_prolog_abi_test_trampoline_16:
85	movdqa	XMMWORD[272+rsp],xmm12
86
87$L$SEH_prolog_abi_test_trampoline_17:
88	movdqa	XMMWORD[288+rsp],xmm13
89
90$L$SEH_prolog_abi_test_trampoline_18:
91	movdqa	XMMWORD[304+rsp],xmm14
92
93$L$SEH_prolog_abi_test_trampoline_19:
94	movdqa	XMMWORD[320+rsp],xmm15
95
96$L$SEH_prolog_abi_test_trampoline_20:
97	mov	rbx,QWORD[rdx]
98	mov	rbp,QWORD[8+rdx]
99	mov	rdi,QWORD[16+rdx]
100	mov	rsi,QWORD[24+rdx]
101	mov	r12,QWORD[32+rdx]
102	mov	r13,QWORD[40+rdx]
103	mov	r14,QWORD[48+rdx]
104	mov	r15,QWORD[56+rdx]
105	movdqa	xmm6,XMMWORD[64+rdx]
106	movdqa	xmm7,XMMWORD[80+rdx]
107	movdqa	xmm8,XMMWORD[96+rdx]
108	movdqa	xmm9,XMMWORD[112+rdx]
109	movdqa	xmm10,XMMWORD[128+rdx]
110	movdqa	xmm11,XMMWORD[144+rdx]
111	movdqa	xmm12,XMMWORD[160+rdx]
112	movdqa	xmm13,XMMWORD[176+rdx]
113	movdqa	xmm14,XMMWORD[192+rdx]
114	movdqa	xmm15,XMMWORD[208+rdx]
115
116	mov	QWORD[88+rsp],rcx
117	mov	QWORD[96+rsp],rdx
118
119
120
121
122	mov	r10,r8
123	mov	r11,r9
124	dec	r11
125	js	NEAR $L$args_done
126	mov	rcx,QWORD[r10]
127	add	r10,8
128	dec	r11
129	js	NEAR $L$args_done
130	mov	rdx,QWORD[r10]
131	add	r10,8
132	dec	r11
133	js	NEAR $L$args_done
134	mov	r8,QWORD[r10]
135	add	r10,8
136	dec	r11
137	js	NEAR $L$args_done
138	mov	r9,QWORD[r10]
139	add	r10,8
140	lea	rax,[32+rsp]
141$L$args_loop:
142	dec	r11
143	js	NEAR $L$args_done
144
145
146
147
148
149
150	mov	QWORD[104+rsp],r11
151	mov	r11,QWORD[r10]
152	mov	QWORD[rax],r11
153	mov	r11,QWORD[104+rsp]
154
155	add	r10,8
156	add	rax,8
157	jmp	NEAR $L$args_loop
158
159$L$args_done:
160	mov	rax,QWORD[88+rsp]
161	mov	r10,QWORD[384+rsp]
162	test	r10,r10
163	jz	NEAR $L$no_unwind
164
165
166	pushfq
167	or	QWORD[rsp],0x100
168	popfq
169
170
171
172	nop
173global	abi_test_unwind_start
174abi_test_unwind_start:
175
176	call	rax
177global	abi_test_unwind_return
178abi_test_unwind_return:
179
180
181
182
183	pushfq
184	and	QWORD[rsp],-0x101
185	popfq
186global	abi_test_unwind_stop
187abi_test_unwind_stop:
188
189	jmp	NEAR $L$call_done
190
191$L$no_unwind:
192	call	rax
193
194$L$call_done:
195
196	mov	rdx,QWORD[96+rsp]
197	mov	QWORD[rdx],rbx
198	mov	QWORD[8+rdx],rbp
199	mov	QWORD[16+rdx],rdi
200	mov	QWORD[24+rdx],rsi
201	mov	QWORD[32+rdx],r12
202	mov	QWORD[40+rdx],r13
203	mov	QWORD[48+rdx],r14
204	mov	QWORD[56+rdx],r15
205	movdqa	XMMWORD[64+rdx],xmm6
206	movdqa	XMMWORD[80+rdx],xmm7
207	movdqa	XMMWORD[96+rdx],xmm8
208	movdqa	XMMWORD[112+rdx],xmm9
209	movdqa	XMMWORD[128+rdx],xmm10
210	movdqa	XMMWORD[144+rdx],xmm11
211	movdqa	XMMWORD[160+rdx],xmm12
212	movdqa	XMMWORD[176+rdx],xmm13
213	movdqa	XMMWORD[192+rdx],xmm14
214	movdqa	XMMWORD[208+rdx],xmm15
215	mov	rbx,QWORD[112+rsp]
216
217	mov	rbp,QWORD[120+rsp]
218
219	mov	rdi,QWORD[128+rsp]
220
221	mov	rsi,QWORD[136+rsp]
222
223	mov	r12,QWORD[144+rsp]
224
225	mov	r13,QWORD[152+rsp]
226
227	mov	r14,QWORD[160+rsp]
228
229	mov	r15,QWORD[168+rsp]
230
231	movdqa	xmm6,XMMWORD[176+rsp]
232
233	movdqa	xmm7,XMMWORD[192+rsp]
234
235	movdqa	xmm8,XMMWORD[208+rsp]
236
237	movdqa	xmm9,XMMWORD[224+rsp]
238
239	movdqa	xmm10,XMMWORD[240+rsp]
240
241	movdqa	xmm11,XMMWORD[256+rsp]
242
243	movdqa	xmm12,XMMWORD[272+rsp]
244
245	movdqa	xmm13,XMMWORD[288+rsp]
246
247	movdqa	xmm14,XMMWORD[304+rsp]
248
249	movdqa	xmm15,XMMWORD[320+rsp]
250
251	add	rsp,344
252
253
254
255	ret
256
257$L$SEH_end_abi_test_trampoline_21:
258
259
260global	abi_test_clobber_rax
261ALIGN	16
262abi_test_clobber_rax:
263_CET_ENDBR
264	xor	rax,rax
265	ret
266
267
268global	abi_test_clobber_rbx
269ALIGN	16
270abi_test_clobber_rbx:
271_CET_ENDBR
272	xor	rbx,rbx
273	ret
274
275
276global	abi_test_clobber_rcx
277ALIGN	16
278abi_test_clobber_rcx:
279_CET_ENDBR
280	xor	rcx,rcx
281	ret
282
283
284global	abi_test_clobber_rdx
285ALIGN	16
286abi_test_clobber_rdx:
287_CET_ENDBR
288	xor	rdx,rdx
289	ret
290
291
292global	abi_test_clobber_rdi
293ALIGN	16
294abi_test_clobber_rdi:
295_CET_ENDBR
296	xor	rdi,rdi
297	ret
298
299
300global	abi_test_clobber_rsi
301ALIGN	16
302abi_test_clobber_rsi:
303_CET_ENDBR
304	xor	rsi,rsi
305	ret
306
307
308global	abi_test_clobber_rbp
309ALIGN	16
310abi_test_clobber_rbp:
311_CET_ENDBR
312	xor	rbp,rbp
313	ret
314
315
316global	abi_test_clobber_r8
317ALIGN	16
318abi_test_clobber_r8:
319_CET_ENDBR
320	xor	r8,r8
321	ret
322
323
324global	abi_test_clobber_r9
325ALIGN	16
326abi_test_clobber_r9:
327_CET_ENDBR
328	xor	r9,r9
329	ret
330
331
332global	abi_test_clobber_r10
333ALIGN	16
334abi_test_clobber_r10:
335_CET_ENDBR
336	xor	r10,r10
337	ret
338
339
340global	abi_test_clobber_r11
341ALIGN	16
342abi_test_clobber_r11:
343_CET_ENDBR
344	xor	r11,r11
345	ret
346
347
348global	abi_test_clobber_r12
349ALIGN	16
350abi_test_clobber_r12:
351_CET_ENDBR
352	xor	r12,r12
353	ret
354
355
356global	abi_test_clobber_r13
357ALIGN	16
358abi_test_clobber_r13:
359_CET_ENDBR
360	xor	r13,r13
361	ret
362
363
364global	abi_test_clobber_r14
365ALIGN	16
366abi_test_clobber_r14:
367_CET_ENDBR
368	xor	r14,r14
369	ret
370
371
372global	abi_test_clobber_r15
373ALIGN	16
374abi_test_clobber_r15:
375_CET_ENDBR
376	xor	r15,r15
377	ret
378
379
380global	abi_test_clobber_xmm0
381ALIGN	16
382abi_test_clobber_xmm0:
383_CET_ENDBR
384	pxor	xmm0,xmm0
385	ret
386
387
388global	abi_test_clobber_xmm1
389ALIGN	16
390abi_test_clobber_xmm1:
391_CET_ENDBR
392	pxor	xmm1,xmm1
393	ret
394
395
396global	abi_test_clobber_xmm2
397ALIGN	16
398abi_test_clobber_xmm2:
399_CET_ENDBR
400	pxor	xmm2,xmm2
401	ret
402
403
404global	abi_test_clobber_xmm3
405ALIGN	16
406abi_test_clobber_xmm3:
407_CET_ENDBR
408	pxor	xmm3,xmm3
409	ret
410
411
412global	abi_test_clobber_xmm4
413ALIGN	16
414abi_test_clobber_xmm4:
415_CET_ENDBR
416	pxor	xmm4,xmm4
417	ret
418
419
420global	abi_test_clobber_xmm5
421ALIGN	16
422abi_test_clobber_xmm5:
423_CET_ENDBR
424	pxor	xmm5,xmm5
425	ret
426
427
428global	abi_test_clobber_xmm6
429ALIGN	16
430abi_test_clobber_xmm6:
431_CET_ENDBR
432	pxor	xmm6,xmm6
433	ret
434
435
436global	abi_test_clobber_xmm7
437ALIGN	16
438abi_test_clobber_xmm7:
439_CET_ENDBR
440	pxor	xmm7,xmm7
441	ret
442
443
444global	abi_test_clobber_xmm8
445ALIGN	16
446abi_test_clobber_xmm8:
447_CET_ENDBR
448	pxor	xmm8,xmm8
449	ret
450
451
452global	abi_test_clobber_xmm9
453ALIGN	16
454abi_test_clobber_xmm9:
455_CET_ENDBR
456	pxor	xmm9,xmm9
457	ret
458
459
460global	abi_test_clobber_xmm10
461ALIGN	16
462abi_test_clobber_xmm10:
463_CET_ENDBR
464	pxor	xmm10,xmm10
465	ret
466
467
468global	abi_test_clobber_xmm11
469ALIGN	16
470abi_test_clobber_xmm11:
471_CET_ENDBR
472	pxor	xmm11,xmm11
473	ret
474
475
476global	abi_test_clobber_xmm12
477ALIGN	16
478abi_test_clobber_xmm12:
479_CET_ENDBR
480	pxor	xmm12,xmm12
481	ret
482
483
484global	abi_test_clobber_xmm13
485ALIGN	16
486abi_test_clobber_xmm13:
487_CET_ENDBR
488	pxor	xmm13,xmm13
489	ret
490
491
492global	abi_test_clobber_xmm14
493ALIGN	16
494abi_test_clobber_xmm14:
495_CET_ENDBR
496	pxor	xmm14,xmm14
497	ret
498
499
500global	abi_test_clobber_xmm15
501ALIGN	16
502abi_test_clobber_xmm15:
503_CET_ENDBR
504	pxor	xmm15,xmm15
505	ret
506
507
508
509
510
511global	abi_test_bad_unwind_wrong_register
512ALIGN	16
513abi_test_bad_unwind_wrong_register:
514
515$L$SEH_begin_abi_test_bad_unwind_wrong_register_1:
516_CET_ENDBR
517	push	r12
518
519$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2:
520
521
522
523	nop
524	pop	r12
525
526	ret
527$L$SEH_end_abi_test_bad_unwind_wrong_register_3:
528
529
530
531
532
533
534
535global	abi_test_bad_unwind_temporary
536ALIGN	16
537abi_test_bad_unwind_temporary:
538
539$L$SEH_begin_abi_test_bad_unwind_temporary_1:
540_CET_ENDBR
541	push	r12
542
543$L$SEH_prolog_abi_test_bad_unwind_temporary_2:
544
545	mov	rax,r12
546	inc	rax
547	mov	QWORD[rsp],rax
548
549
550
551	mov	QWORD[rsp],r12
552
553
554	pop	r12
555
556	ret
557
558$L$SEH_end_abi_test_bad_unwind_temporary_3:
559
560
561
562
563
564
565global	abi_test_get_and_clear_direction_flag
566abi_test_get_and_clear_direction_flag:
567_CET_ENDBR
568	pushfq
569	pop	rax
570	and	rax,0x400
571	shr	rax,10
572	cld
573	ret
574
575
576
577
578
579global	abi_test_set_direction_flag
580abi_test_set_direction_flag:
581_CET_ENDBR
582	std
583	ret
584
585
586
587
588
589
590global	abi_test_bad_unwind_epilog
591ALIGN	16
592abi_test_bad_unwind_epilog:
593$L$SEH_begin_abi_test_bad_unwind_epilog_1:
594	push	r12
595$L$SEH_prolog_abi_test_bad_unwind_epilog_2:
596
597	nop
598
599
600	pop	r12
601	nop
602	ret
603$L$SEH_end_abi_test_bad_unwind_epilog_3:
604
605section	.pdata rdata align=4
606ALIGN	4
607	DD	$L$SEH_begin_abi_test_trampoline_1 wrt ..imagebase
608	DD	$L$SEH_end_abi_test_trampoline_21 wrt ..imagebase
609	DD	$L$SEH_info_abi_test_trampoline_0 wrt ..imagebase
610
611	DD	$L$SEH_begin_abi_test_bad_unwind_wrong_register_1 wrt ..imagebase
612	DD	$L$SEH_end_abi_test_bad_unwind_wrong_register_3 wrt ..imagebase
613	DD	$L$SEH_info_abi_test_bad_unwind_wrong_register_0 wrt ..imagebase
614
615	DD	$L$SEH_begin_abi_test_bad_unwind_temporary_1 wrt ..imagebase
616	DD	$L$SEH_end_abi_test_bad_unwind_temporary_3 wrt ..imagebase
617	DD	$L$SEH_info_abi_test_bad_unwind_temporary_0 wrt ..imagebase
618
619	DD	$L$SEH_begin_abi_test_bad_unwind_epilog_1 wrt ..imagebase
620	DD	$L$SEH_end_abi_test_bad_unwind_epilog_3 wrt ..imagebase
621	DD	$L$SEH_info_abi_test_bad_unwind_epilog_0 wrt ..imagebase
622
623
624section	.xdata rdata align=8
625ALIGN	4
626$L$SEH_info_abi_test_trampoline_0:
627	DB	1
628	DB	$L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
629	DB	38
630	DB	0
631	DB	$L$SEH_prolog_abi_test_trampoline_20-$L$SEH_begin_abi_test_trampoline_1
632	DB	248
633	DW	20
634	DB	$L$SEH_prolog_abi_test_trampoline_19-$L$SEH_begin_abi_test_trampoline_1
635	DB	232
636	DW	19
637	DB	$L$SEH_prolog_abi_test_trampoline_18-$L$SEH_begin_abi_test_trampoline_1
638	DB	216
639	DW	18
640	DB	$L$SEH_prolog_abi_test_trampoline_17-$L$SEH_begin_abi_test_trampoline_1
641	DB	200
642	DW	17
643	DB	$L$SEH_prolog_abi_test_trampoline_16-$L$SEH_begin_abi_test_trampoline_1
644	DB	184
645	DW	16
646	DB	$L$SEH_prolog_abi_test_trampoline_15-$L$SEH_begin_abi_test_trampoline_1
647	DB	168
648	DW	15
649	DB	$L$SEH_prolog_abi_test_trampoline_14-$L$SEH_begin_abi_test_trampoline_1
650	DB	152
651	DW	14
652	DB	$L$SEH_prolog_abi_test_trampoline_13-$L$SEH_begin_abi_test_trampoline_1
653	DB	136
654	DW	13
655	DB	$L$SEH_prolog_abi_test_trampoline_12-$L$SEH_begin_abi_test_trampoline_1
656	DB	120
657	DW	12
658	DB	$L$SEH_prolog_abi_test_trampoline_11-$L$SEH_begin_abi_test_trampoline_1
659	DB	104
660	DW	11
661	DB	$L$SEH_prolog_abi_test_trampoline_10-$L$SEH_begin_abi_test_trampoline_1
662	DB	244
663	DW	21
664	DB	$L$SEH_prolog_abi_test_trampoline_9-$L$SEH_begin_abi_test_trampoline_1
665	DB	228
666	DW	20
667	DB	$L$SEH_prolog_abi_test_trampoline_8-$L$SEH_begin_abi_test_trampoline_1
668	DB	212
669	DW	19
670	DB	$L$SEH_prolog_abi_test_trampoline_7-$L$SEH_begin_abi_test_trampoline_1
671	DB	196
672	DW	18
673	DB	$L$SEH_prolog_abi_test_trampoline_6-$L$SEH_begin_abi_test_trampoline_1
674	DB	100
675	DW	17
676	DB	$L$SEH_prolog_abi_test_trampoline_5-$L$SEH_begin_abi_test_trampoline_1
677	DB	116
678	DW	16
679	DB	$L$SEH_prolog_abi_test_trampoline_4-$L$SEH_begin_abi_test_trampoline_1
680	DB	84
681	DW	15
682	DB	$L$SEH_prolog_abi_test_trampoline_3-$L$SEH_begin_abi_test_trampoline_1
683	DB	52
684	DW	14
685	DB	$L$SEH_prolog_abi_test_trampoline_2-$L$SEH_begin_abi_test_trampoline_1
686	DB	1
687	DW	43
688
689$L$SEH_info_abi_test_bad_unwind_wrong_register_0:
690	DB	1
691	DB	$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
692	DB	1
693	DB	0
694	DB	$L$SEH_prolog_abi_test_bad_unwind_wrong_register_2-$L$SEH_begin_abi_test_bad_unwind_wrong_register_1
695	DB	208
696
697$L$SEH_info_abi_test_bad_unwind_temporary_0:
698	DB	1
699	DB	$L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
700	DB	1
701	DB	0
702	DB	$L$SEH_prolog_abi_test_bad_unwind_temporary_2-$L$SEH_begin_abi_test_bad_unwind_temporary_1
703	DB	192
704
705$L$SEH_info_abi_test_bad_unwind_epilog_0:
706	DB	1
707	DB	$L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
708	DB	1
709	DB	0
710	DB	$L$SEH_prolog_abi_test_bad_unwind_epilog_2-$L$SEH_begin_abi_test_bad_unwind_epilog_1
711	DB	192
712%else
713; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
714ret
715%endif
716