xref: /aosp_15_r20/external/boringssl/src/gen/test_support/trampoline-x86-win.asm (revision 8fb009dc861624b67b6cdb62ea21f0f22d0c584b)
1; This file is generated from a similarly-named Perl script in the BoringSSL
2; source tree. Do not edit by hand.
3
4%ifdef BORINGSSL_PREFIX
5%include "boringssl_prefix_symbols_nasm.inc"
6%endif
7%ifidn __OUTPUT_FORMAT__, win32
8%ifidn __OUTPUT_FORMAT__,obj
9section	code	use32 class=code align=64
10%elifidn __OUTPUT_FORMAT__,win32
11$@feat.00 equ 1
12section	.text	code align=64
13%else
14section	.text	code
15%endif
16global	_abi_test_trampoline
17align	16
18_abi_test_trampoline:
19L$_abi_test_trampoline_begin:
20	push	ebp
21	push	ebx
22	push	esi
23	push	edi
24	mov	ecx,DWORD [24+esp]
25	mov	esi,DWORD [ecx]
26	mov	edi,DWORD [4+ecx]
27	mov	ebx,DWORD [8+ecx]
28	mov	ebp,DWORD [12+ecx]
29	sub	esp,44
30	mov	eax,DWORD [72+esp]
31	xor	ecx,ecx
32L$000loop:
33	cmp	ecx,DWORD [76+esp]
34	jae	NEAR L$001loop_done
35	mov	edx,DWORD [ecx*4+eax]
36	mov	DWORD [ecx*4+esp],edx
37	add	ecx,1
38	jmp	NEAR L$000loop
39L$001loop_done:
40	call	DWORD [64+esp]
41	add	esp,44
42	mov	ecx,DWORD [24+esp]
43	mov	DWORD [ecx],esi
44	mov	DWORD [4+ecx],edi
45	mov	DWORD [8+ecx],ebx
46	mov	DWORD [12+ecx],ebp
47	pop	edi
48	pop	esi
49	pop	ebx
50	pop	ebp
51	ret
52global	_abi_test_get_and_clear_direction_flag
53align	16
54_abi_test_get_and_clear_direction_flag:
55L$_abi_test_get_and_clear_direction_flag_begin:
56	pushfd
57	pop	eax
58	and	eax,1024
59	shr	eax,10
60	cld
61	ret
62global	_abi_test_set_direction_flag
63align	16
64_abi_test_set_direction_flag:
65L$_abi_test_set_direction_flag_begin:
66	std
67	ret
68global	_abi_test_clobber_eax
69align	16
70_abi_test_clobber_eax:
71L$_abi_test_clobber_eax_begin:
72	xor	eax,eax
73	ret
74global	_abi_test_clobber_ebx
75align	16
76_abi_test_clobber_ebx:
77L$_abi_test_clobber_ebx_begin:
78	xor	ebx,ebx
79	ret
80global	_abi_test_clobber_ecx
81align	16
82_abi_test_clobber_ecx:
83L$_abi_test_clobber_ecx_begin:
84	xor	ecx,ecx
85	ret
86global	_abi_test_clobber_edx
87align	16
88_abi_test_clobber_edx:
89L$_abi_test_clobber_edx_begin:
90	xor	edx,edx
91	ret
92global	_abi_test_clobber_edi
93align	16
94_abi_test_clobber_edi:
95L$_abi_test_clobber_edi_begin:
96	xor	edi,edi
97	ret
98global	_abi_test_clobber_esi
99align	16
100_abi_test_clobber_esi:
101L$_abi_test_clobber_esi_begin:
102	xor	esi,esi
103	ret
104global	_abi_test_clobber_ebp
105align	16
106_abi_test_clobber_ebp:
107L$_abi_test_clobber_ebp_begin:
108	xor	ebp,ebp
109	ret
110global	_abi_test_clobber_xmm0
111align	16
112_abi_test_clobber_xmm0:
113L$_abi_test_clobber_xmm0_begin:
114	pxor	xmm0,xmm0
115	ret
116global	_abi_test_clobber_xmm1
117align	16
118_abi_test_clobber_xmm1:
119L$_abi_test_clobber_xmm1_begin:
120	pxor	xmm1,xmm1
121	ret
122global	_abi_test_clobber_xmm2
123align	16
124_abi_test_clobber_xmm2:
125L$_abi_test_clobber_xmm2_begin:
126	pxor	xmm2,xmm2
127	ret
128global	_abi_test_clobber_xmm3
129align	16
130_abi_test_clobber_xmm3:
131L$_abi_test_clobber_xmm3_begin:
132	pxor	xmm3,xmm3
133	ret
134global	_abi_test_clobber_xmm4
135align	16
136_abi_test_clobber_xmm4:
137L$_abi_test_clobber_xmm4_begin:
138	pxor	xmm4,xmm4
139	ret
140global	_abi_test_clobber_xmm5
141align	16
142_abi_test_clobber_xmm5:
143L$_abi_test_clobber_xmm5_begin:
144	pxor	xmm5,xmm5
145	ret
146global	_abi_test_clobber_xmm6
147align	16
148_abi_test_clobber_xmm6:
149L$_abi_test_clobber_xmm6_begin:
150	pxor	xmm6,xmm6
151	ret
152global	_abi_test_clobber_xmm7
153align	16
154_abi_test_clobber_xmm7:
155L$_abi_test_clobber_xmm7_begin:
156	pxor	xmm7,xmm7
157	ret
158%else
159; Work around https://bugzilla.nasm.us/show_bug.cgi?id=3392738
160ret
161%endif
162