xref: /titanic_51/usr/src/lib/libsaveargs/tests/testmatch/data.s (revision 702941cd97e30d600c2c1275823bc58231b2c361)
1*702941cdSRichard Lowe/*
2*702941cdSRichard Lowe * This file and its contents are supplied under the terms of the
3*702941cdSRichard Lowe * Common Development and Distribution License ("CDDL"), version 1.0.
4*702941cdSRichard Lowe * You may only use this file in accordance with the terms of version
5*702941cdSRichard Lowe * 1.0 of the CDDL.
6*702941cdSRichard Lowe *
7*702941cdSRichard Lowe * A full copy of the text of the CDDL should have accompanied this
8*702941cdSRichard Lowe * source.  A copy of the CDDL is also available via the Internet at
9*702941cdSRichard Lowe * http://www.illumos.org/license/CDDL.
10*702941cdSRichard Lowe */
11*702941cdSRichard Lowe
12*702941cdSRichard Lowe/*
13*702941cdSRichard Lowe * Copyright 2012, Richard Lowe.
14*702941cdSRichard Lowe */
15*702941cdSRichard Lowe
16*702941cdSRichard Lowe#define	FUNC(x) \
17*702941cdSRichard Lowe	.text; \
18*702941cdSRichard Lowe	.align	16; \
19*702941cdSRichard Lowe	.globl	x; \
20*702941cdSRichard Lowe	.type	x, @function; \
21*702941cdSRichard Lowex:
22*702941cdSRichard Lowe
23*702941cdSRichard Lowe#define	SET_SIZE(x, x_size) \
24*702941cdSRichard Lowe	.size	x, [.-x]; \
25*702941cdSRichard Lowe        .globl x_size; \
26*702941cdSRichard Lowe        .type  x_size, @object; \
27*702941cdSRichard Lowex_size:
28*702941cdSRichard Lowe
29*702941cdSRichard Lowe/*
30*702941cdSRichard Lowe * Extracted versions of the functional tests
31*702941cdSRichard Lowe *
32*702941cdSRichard Lowe * Named of the form <compiler>-<prologue style>-<nature of test>
33*702941cdSRichard Lowe * basic			-- A regular function
34*702941cdSRichard Lowe * align			-- odd number of arguments needing save-area
35*702941cdSRichard Lowe * 				   alignment
36*702941cdSRichard Lowe * big-struct-ret		-- returns a > 16byte structure by value
37*702941cdSRichard Lowe * big-struct-ret-and-spill	-- returns a > 16byte structure by value and
38*702941cdSRichard Lowe * 				   spills args to the stack
39*702941cdSRichard Lowe * small-struct-ret		-- returns a < 16byte structure by value
40*702941cdSRichard Lowe * small-struct-ret-and-spill	-- returns a < 16byte structure by value and
41*702941cdSRichard Lowe * 				   spills args to the stack
42*702941cdSRichard Lowe * stack-spill			-- spills arguments to the stack
43*702941cdSRichard Lowe */
44*702941cdSRichard LoweFUNC(gcc_mov_align)
45*702941cdSRichard Lowepushq	%rbp
46*702941cdSRichard Lowemovq	%rsp, %rbp
47*702941cdSRichard Lowemovq	%rbx, -0x38(%rbp)
48*702941cdSRichard Lowemovq	%r8, -0x28(%rbp)
49*702941cdSRichard Lowemovq	%rcx, -0x20(%rbp)
50*702941cdSRichard Lowemovq	%rdx, -0x18(%rbp)
51*702941cdSRichard Lowemovq	%rsi, -0x10(%rbp)
52*702941cdSRichard Lowemovq	%rdi, -0x8(%rbp)
53*702941cdSRichard Lowesubq	$0x70, %rsp
54*702941cdSRichard LoweSET_SIZE(gcc_mov_align, gcc_mov_align_end)
55*702941cdSRichard Lowe
56*702941cdSRichard LoweFUNC(gcc_mov_basic)
57*702941cdSRichard Lowepushq	%rbp
58*702941cdSRichard Lowemovq	%rsp, %rbp
59*702941cdSRichard Lowemovq	%rbx,-0x28(%rbp)
60*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
61*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
62*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
63*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
64*702941cdSRichard Lowesubq    $0x50,%rsp
65*702941cdSRichard LoweSET_SIZE(gcc_mov_basic, gcc_mov_basic_end)
66*702941cdSRichard Lowe
67*702941cdSRichard LoweFUNC(gcc_mov_noorder)
68*702941cdSRichard Lowepushq	%rbp
69*702941cdSRichard Lowemovq	%rsp, %rbp
70*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
71*702941cdSRichard Lowemovq	%rbx,-0x28(%rbp)
72*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
73*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
74*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
75*702941cdSRichard Lowesubq    $0x50,%rsp
76*702941cdSRichard LoweSET_SIZE(gcc_mov_noorder, gcc_mov_noorder_end)
77*702941cdSRichard Lowe
78*702941cdSRichard LoweFUNC(gcc_mov_big_struct_ret)
79*702941cdSRichard Lowepushq   %rbp
80*702941cdSRichard Lowemovq    %rsp,%rbp
81*702941cdSRichard Lowemovq    %rbx,-0x28(%rbp)
82*702941cdSRichard Lowemovq    %r8,-0x20(%rbp)
83*702941cdSRichard Lowemovq    %rcx,-0x18(%rbp)
84*702941cdSRichard Lowemovq    %rdx,-0x10(%rbp)
85*702941cdSRichard Lowemovq    %rsi,-0x8(%rbp)
86*702941cdSRichard Lowesubq    $0x50,%rsp
87*702941cdSRichard LoweSET_SIZE(gcc_mov_big_struct_ret, gcc_mov_big_struct_ret_end)
88*702941cdSRichard Lowe
89*702941cdSRichard LoweFUNC(gcc_mov_struct_noorder)
90*702941cdSRichard Lowepushq   %rbp
91*702941cdSRichard Lowemovq    %rsp,%rbp
92*702941cdSRichard Lowemovq    %rcx,-0x18(%rbp)
93*702941cdSRichard Lowemovq    %r8,-0x20(%rbp)
94*702941cdSRichard Lowemovq    %rsi,-0x8(%rbp)
95*702941cdSRichard Lowemovq    %rdx,-0x10(%rbp)
96*702941cdSRichard Lowemovq    %rbx,-0x28(%rbp)
97*702941cdSRichard Lowesubq    $0x50,%rsp
98*702941cdSRichard LoweSET_SIZE(gcc_mov_struct_noorder, gcc_mov_struct_noorder_end)
99*702941cdSRichard Lowe
100*702941cdSRichard LoweFUNC(gcc_mov_big_struct_ret_and_spill)
101*702941cdSRichard Lowepushq   %rbp
102*702941cdSRichard Lowemovq    %rsp,%rbp
103*702941cdSRichard Lowemovq    %rbx,-0x38(%rbp)
104*702941cdSRichard Lowemovq    %r9,-0x28(%rbp)
105*702941cdSRichard Lowemovq    %r8,-0x20(%rbp)
106*702941cdSRichard Lowemovq    %rcx,-0x18(%rbp)
107*702941cdSRichard Lowemovq    %rdx,-0x10(%rbp)
108*702941cdSRichard Lowemovq    %rsi,-0x8(%rbp)
109*702941cdSRichard Lowesubq    $0x90,%rsp
110*702941cdSRichard LoweSET_SIZE(gcc_mov_big_struct_ret_and_spill, gcc_mov_big_struct_ret_and_spill_end)
111*702941cdSRichard Lowe
112*702941cdSRichard LoweFUNC(gcc_mov_small_struct_ret)
113*702941cdSRichard Lowepushq   %rbp
114*702941cdSRichard Lowemovq    %rsp,%rbp
115*702941cdSRichard Lowemovq    %rbx,-0x28(%rbp)
116*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
117*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
118*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
119*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
120*702941cdSRichard Lowesubq    $0x50,%rsp
121*702941cdSRichard LoweSET_SIZE(gcc_mov_small_struct_ret, gcc_mov_small_struct_ret_end)
122*702941cdSRichard Lowe
123*702941cdSRichard LoweFUNC(gcc_mov_small_struct_ret_and_spill)
124*702941cdSRichard Lowepushq   %rbp
125*702941cdSRichard Lowemovq    %rsp,%rbp
126*702941cdSRichard Lowemovq    %rbx,-0x38(%rbp)
127*702941cdSRichard Lowemovq    %r9,-0x30(%rbp)
128*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
129*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
130*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
131*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
132*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
133*702941cdSRichard Lowesubq    $0x90,%rsp
134*702941cdSRichard LoweSET_SIZE(gcc_mov_small_struct_ret_and_spill, gcc_mov_small_struct_ret_and_spill_end)
135*702941cdSRichard Lowe
136*702941cdSRichard LoweFUNC(gcc_mov_stack_spill)
137*702941cdSRichard Lowepushq   %rbp
138*702941cdSRichard Lowemovq    %rsp,%rbp
139*702941cdSRichard Lowemovq    %rbx,-0x38(%rbp)
140*702941cdSRichard Lowemovq    %r9,-0x30(%rbp)
141*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
142*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
143*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
144*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
145*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
146*702941cdSRichard Lowesubq    $0x90,%rsp
147*702941cdSRichard LoweSET_SIZE(gcc_mov_stack_spill, gcc_mov_stack_spill_end)
148*702941cdSRichard Lowe
149*702941cdSRichard LoweFUNC(gcc_push_align)
150*702941cdSRichard Lowepushq   %rbp
151*702941cdSRichard Lowemovq    %rsp,%rbp
152*702941cdSRichard Lowepushq   %rdi
153*702941cdSRichard Lowepushq   %rsi
154*702941cdSRichard Lowepushq   %rdx
155*702941cdSRichard Lowepushq   %rcx
156*702941cdSRichard Lowepushq   %r8
157*702941cdSRichard Lowesubq    $0x8,%rsp
158*702941cdSRichard Lowesubq    $0x30,%rsp
159*702941cdSRichard LoweSET_SIZE(gcc_push_align, gcc_push_align_end)
160*702941cdSRichard Lowe
161*702941cdSRichard LoweFUNC(gcc_push_basic)
162*702941cdSRichard Lowepushq   %rbp
163*702941cdSRichard Lowemovq    %rsp,%rbp
164*702941cdSRichard Lowepushq   %rdi
165*702941cdSRichard Lowepushq   %rsi
166*702941cdSRichard Lowepushq   %rdx
167*702941cdSRichard Lowepushq   %rcx
168*702941cdSRichard Lowesubq    $0x20,%rsp
169*702941cdSRichard LoweSET_SIZE(gcc_push_basic, gcc_push_basic_end)
170*702941cdSRichard Lowe
171*702941cdSRichard LoweFUNC(gcc_push_noorder)
172*702941cdSRichard Lowepushq   %rbp
173*702941cdSRichard Lowemovq    %rsp,%rbp
174*702941cdSRichard Lowepushq   %rsi
175*702941cdSRichard Lowepushq   %rdi
176*702941cdSRichard Lowepushq   %rcx
177*702941cdSRichard Lowepushq   %rdx
178*702941cdSRichard Lowesubq    $0x20,%rsp
179*702941cdSRichard LoweSET_SIZE(gcc_push_noorder, gcc_push_noorder_end)
180*702941cdSRichard Lowe
181*702941cdSRichard LoweFUNC(gcc_push_big_struct_ret)
182*702941cdSRichard Lowepushq   %rbp
183*702941cdSRichard Lowemovq    %rsp,%rbp
184*702941cdSRichard Lowepushq   %rsi
185*702941cdSRichard Lowepushq   %rdx
186*702941cdSRichard Lowepushq   %rcx
187*702941cdSRichard Lowepushq   %r8
188*702941cdSRichard Lowesubq    $0x30,%rsp
189*702941cdSRichard LoweSET_SIZE(gcc_push_big_struct_ret, gcc_push_big_struct_ret_end)
190*702941cdSRichard Lowe
191*702941cdSRichard LoweFUNC(gcc_push_struct_noorder)
192*702941cdSRichard Lowepushq   %rbp
193*702941cdSRichard Lowemovq    %rsp,%rbp
194*702941cdSRichard Lowepushq   %rdx
195*702941cdSRichard Lowepushq   %rsi
196*702941cdSRichard Lowepushq   %r8
197*702941cdSRichard Lowepushq   %rcx
198*702941cdSRichard Lowesubq    $0x30,%rsp
199*702941cdSRichard LoweSET_SIZE(gcc_push_struct_noorder, gcc_push_struct_noorder_end)
200*702941cdSRichard Lowe
201*702941cdSRichard LoweFUNC(gcc_push_big_struct_ret_and_spill)
202*702941cdSRichard Lowepushq   %rbp
203*702941cdSRichard Lowemovq    %rsp,%rbp
204*702941cdSRichard Lowepushq   %rsi
205*702941cdSRichard Lowepushq   %rdx
206*702941cdSRichard Lowepushq   %rcx
207*702941cdSRichard Lowepushq   %r8
208*702941cdSRichard Lowepushq   %r9
209*702941cdSRichard Lowesubq    $0x8,%rsp
210*702941cdSRichard Lowesubq    $0x50,%rsp
211*702941cdSRichard LoweSET_SIZE(gcc_push_big_struct_ret_and_spill, gcc_push_big_struct_ret_and_spill_end)
212*702941cdSRichard Lowe
213*702941cdSRichard LoweFUNC(gcc_push_small_struct_ret)
214*702941cdSRichard Lowepushq   %rbp
215*702941cdSRichard Lowemovq    %rsp,%rbp
216*702941cdSRichard Lowepushq   %rdi
217*702941cdSRichard Lowepushq   %rsi
218*702941cdSRichard Lowepushq   %rdx
219*702941cdSRichard Lowepushq   %rcx
220*702941cdSRichard Lowesubq    $0x20,%rsp
221*702941cdSRichard LoweSET_SIZE(gcc_push_small_struct_ret, gcc_push_small_struct_ret_end)
222*702941cdSRichard Lowe
223*702941cdSRichard LoweFUNC(gcc_push_small_struct_ret_and_spill)
224*702941cdSRichard Lowepushq   %rbp
225*702941cdSRichard Lowemovq    %rsp,%rbp
226*702941cdSRichard Lowepushq   %rdi
227*702941cdSRichard Lowepushq   %rsi
228*702941cdSRichard Lowepushq   %rdx
229*702941cdSRichard Lowepushq   %rcx
230*702941cdSRichard Lowepushq   %r8
231*702941cdSRichard Lowepushq   %r9
232*702941cdSRichard Lowesubq    $0x50,%rsp
233*702941cdSRichard LoweSET_SIZE(gcc_push_small_struct_ret_and_spill, gcc_push_small_struct_ret_and_spill_end)
234*702941cdSRichard Lowe
235*702941cdSRichard LoweFUNC(gcc_push_stack_spill)
236*702941cdSRichard Lowepushq   %rbp
237*702941cdSRichard Lowemovq    %rsp,%rbp
238*702941cdSRichard Lowepushq   %rdi
239*702941cdSRichard Lowepushq   %rsi
240*702941cdSRichard Lowepushq   %rdx
241*702941cdSRichard Lowepushq   %rcx
242*702941cdSRichard Lowepushq   %r8
243*702941cdSRichard Lowepushq   %r9
244*702941cdSRichard Lowesubq    $0x50,%rsp
245*702941cdSRichard LoweSET_SIZE(gcc_push_stack_spill, gcc_push_stack_spill_end)
246*702941cdSRichard Lowe
247*702941cdSRichard LoweFUNC(ss_mov_align)
248*702941cdSRichard Lowepushq   %rbp
249*702941cdSRichard Lowemovq    %rsp,%rbp
250*702941cdSRichard Lowesubq    $0x30,%rsp
251*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
252*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
253*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
254*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
255*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
256*702941cdSRichard LoweSET_SIZE(ss_mov_align, ss_mov_align_end)
257*702941cdSRichard Lowe
258*702941cdSRichard LoweFUNC(ss_mov_basic)
259*702941cdSRichard Lowepushq   %rbp
260*702941cdSRichard Lowemovq    %rsp,%rbp
261*702941cdSRichard Lowesubq    $0x20,%rsp
262*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
263*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
264*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
265*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
266*702941cdSRichard LoweSET_SIZE(ss_mov_basic, ss_mov_basic_end)
267*702941cdSRichard Lowe
268*702941cdSRichard LoweFUNC(ss_mov_big_struct_ret)
269*702941cdSRichard Lowepushq   %rbp
270*702941cdSRichard Lowemovq    %rsp,%rbp
271*702941cdSRichard Lowesubq    $0x30,%rsp
272*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
273*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
274*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
275*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
276*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
277*702941cdSRichard LoweSET_SIZE(ss_mov_big_struct_ret, ss_mov_big_struct_ret_end)
278*702941cdSRichard Lowe
279*702941cdSRichard LoweFUNC(ss_mov_big_struct_ret_and_spill)
280*702941cdSRichard Lowepushq   %rbp
281*702941cdSRichard Lowemovq    %rsp,%rbp
282*702941cdSRichard Lowesubq    $0x50,%rsp
283*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
284*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
285*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
286*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
287*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
288*702941cdSRichard Lowemovq    %r9,-0x30(%rbp)
289*702941cdSRichard LoweSET_SIZE(ss_mov_big_struct_ret_and_spill, ss_mov_big_struct_ret_and_spill_end)
290*702941cdSRichard Lowe
291*702941cdSRichard LoweFUNC(ss_mov_small_struct_ret)
292*702941cdSRichard Lowepushq   %rbp
293*702941cdSRichard Lowemovq    %rsp,%rbp
294*702941cdSRichard Lowesubq    $0x20,%rsp
295*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
296*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
297*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
298*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
299*702941cdSRichard LoweSET_SIZE(ss_mov_small_struct_ret, ss_mov_small_struct_ret_end)
300*702941cdSRichard Lowe
301*702941cdSRichard LoweFUNC(ss_mov_small_struct_ret_and_spill)
302*702941cdSRichard Lowepushq   %rbp
303*702941cdSRichard Lowemovq    %rsp,%rbp
304*702941cdSRichard Lowesubq    $0x50,%rsp
305*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
306*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
307*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
308*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
309*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
310*702941cdSRichard Lowemovq    %r9,-0x30(%rbp)
311*702941cdSRichard LoweSET_SIZE(ss_mov_small_struct_ret_and_spill, ss_mov_small_struct_ret_and_spill_end)
312*702941cdSRichard Lowe
313*702941cdSRichard LoweFUNC(ss_mov_stack_spill)
314*702941cdSRichard Lowepushq   %rbp
315*702941cdSRichard Lowemovq    %rsp,%rbp
316*702941cdSRichard Lowesubq    $0x50,%rsp
317*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
318*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
319*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
320*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
321*702941cdSRichard Lowemovq    %r8,-0x28(%rbp)
322*702941cdSRichard Lowemovq    %r9,-0x30(%rbp)
323*702941cdSRichard LoweSET_SIZE(ss_mov_stack_spill, ss_mov_stack_spill_end)
324*702941cdSRichard Lowe
325*702941cdSRichard Lowe/* DTrace instrumentation */
326*702941cdSRichard LoweFUNC(dtrace_instrumented)
327*702941cdSRichard Loweint	$0x3
328*702941cdSRichard Lowemovq	%rsp, %rbp
329*702941cdSRichard Lowemovq	%rbx,-0x28(%rbp)
330*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
331*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
332*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
333*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
334*702941cdSRichard Lowesubq    $0x50,%rsp
335*702941cdSRichard LoweSET_SIZE(dtrace_instrumented, dtrace_instrumented_end)
336*702941cdSRichard Lowe
337*702941cdSRichard Lowe/*
338*702941cdSRichard Lowe * System functions with special characteristics, be they non-initial FP save,
339*702941cdSRichard Lowe * gaps between FP save and argument saving, or gaps between saved arguments.
340*702941cdSRichard Lowe */
341*702941cdSRichard LoweFUNC(kmem_alloc)
342*702941cdSRichard Loweleaq    -0x1(%rdi),%rax
343*702941cdSRichard Lowepushq   %rbp
344*702941cdSRichard Lowemovq    %rax,%rdx
345*702941cdSRichard Lowemovq    %rsp,%rbp
346*702941cdSRichard Lowesubq    $0x30,%rsp
347*702941cdSRichard Loweshrq    $0x3,%rdx
348*702941cdSRichard Lowemovq    %r12,-0x28(%rbp)
349*702941cdSRichard Lowemovq    %rbx,-0x30(%rbp)
350*702941cdSRichard Lowecmpq    $0x1ff,%rdx
351*702941cdSRichard Lowemovq    %r13,-0x20(%rbp)
352*702941cdSRichard Lowemovq    %r14,-0x18(%rbp)
353*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
354*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
355*702941cdSRichard Lowemovq    %rdi,%r12
356*702941cdSRichard LoweSET_SIZE(kmem_alloc, kmem_alloc_end)
357*702941cdSRichard Lowe
358*702941cdSRichard LoweFUNC(uts_kill)
359*702941cdSRichard Lowepushq   %rbp
360*702941cdSRichard Lowemovq    %rsp,%rbp
361*702941cdSRichard Lowesubq    $0x50,%rsp
362*702941cdSRichard Lowemovq    %rbx,-0x28(%rbp)
363*702941cdSRichard Loweleaq    -0x50(%rbp),%rbx
364*702941cdSRichard Lowemovq    %r12,-0x20(%rbp)
365*702941cdSRichard Lowemovq    %r13,-0x18(%rbp)
366*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
367*702941cdSRichard Lowemovl    %edi,%r12d
368*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
369*702941cdSRichard LoweSET_SIZE(uts_kill, uts_kill_end)
370*702941cdSRichard Lowe
371*702941cdSRichard LoweFUNC(av1394_ic_bitreverse)
372*702941cdSRichard Lowemovq    %rdi,%rdx
373*702941cdSRichard Lowemovq    $0x5555555555555555,%rax
374*702941cdSRichard Lowemovq    $0x3333333333333333,%rcx
375*702941cdSRichard Loweshrq    $0x1,%rdx
376*702941cdSRichard Lowepushq   %rbp
377*702941cdSRichard Loweandq    %rax,%rdx
378*702941cdSRichard Loweandq    %rdi,%rax
379*702941cdSRichard Loweaddq    %rax,%rax
380*702941cdSRichard Lowemovq    %rsp,%rbp
381*702941cdSRichard Lowesubq    $0x10,%rsp
382*702941cdSRichard Loweorq     %rdx,%rax
383*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
384*702941cdSRichard LoweSET_SIZE(av1394_ic_bitreverse, av1394_ic_bitreverse_end)
385*702941cdSRichard Lowe
386*702941cdSRichard Lowe/* Problematic functions which should not match */
387*702941cdSRichard Lowe
388*702941cdSRichard LoweFUNC(no_fp) /* No frame pointer */
389*702941cdSRichard Lowemovq	%rdi, %rsi
390*702941cdSRichard Lowemovq	%rsi, %rdi
391*702941cdSRichard Lowemovq	%rbx,-0x28(%rbp)
392*702941cdSRichard Lowemovq    %rcx,-0x20(%rbp)
393*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
394*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
395*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
396*702941cdSRichard Lowesubq    $0x50,%rsp
397*702941cdSRichard LoweSET_SIZE(no_fp, no_fp_end)
398*702941cdSRichard Lowe
399*702941cdSRichard Lowe/* Small structure return, but with an SSE type (thus forcing it to the stack) */
400*702941cdSRichard LoweFUNC(small_struct_ret_w_float)
401*702941cdSRichard Lowepushq   %rbp
402*702941cdSRichard Lowemovq    %rsp,%rbp
403*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
404*702941cdSRichard Lowesubq    $0x30,%rsp
405*702941cdSRichard LoweSET_SIZE(small_struct_ret_w_float, small_struct_ret_w_float_end)
406*702941cdSRichard Lowe
407*702941cdSRichard Lowe/* Big structure return, but with an SSE type */
408*702941cdSRichard LoweFUNC(big_struct_ret_w_float)
409*702941cdSRichard Lowepushq  %rbp
410*702941cdSRichard Lowemovq   %rsp,%rbp
411*702941cdSRichard Lowemovq   %rsi,-0x8(%rbp)
412*702941cdSRichard Lowesubq   $0x50,%rsp
413*702941cdSRichard Lowemovq   %rsi,-0x48(%rbp)
414*702941cdSRichard Lowemovq   -0x48(%rbp),%rax
415*702941cdSRichard Lowemovq   %rax,%rsi
416*702941cdSRichard Lowemovl   $0x400f60,%edi
417*702941cdSRichard Lowemovl   $0x0,%eax
418*702941cdSRichard Lowemovl   $0x1770,%edi
419*702941cdSRichard Lowemovl   $0x0,%eax
420*702941cdSRichard Loweleave
421*702941cdSRichard Loweret
422*702941cdSRichard LoweSET_SIZE(big_struct_ret_w_float, big_struct_ret_w_float_end)
423*702941cdSRichard Lowe
424*702941cdSRichard LoweFUNC(big_struct_arg_by_value)
425*702941cdSRichard Lowepushq   %rbp
426*702941cdSRichard Lowemovq    %rsp,%rbp
427*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
428*702941cdSRichard Lowesubq    $0x40,%rsp
429*702941cdSRichard LoweSET_SIZE(big_struct_arg_by_value, big_struct_arg_by_value_end)
430*702941cdSRichard Lowe
431*702941cdSRichard LoweFUNC(small_struct_arg_by_value)
432*702941cdSRichard Lowepushq   %rbp
433*702941cdSRichard Lowemovq    %rsp,%rbp
434*702941cdSRichard Lowemovq    %rdx,-0x18(%rbp)
435*702941cdSRichard Lowemovq    %rsi,-0x10(%rbp)
436*702941cdSRichard Lowemovq    %rdi,-0x8(%rbp)
437*702941cdSRichard Lowesubq    $0x50,%rsp
438*702941cdSRichard LoweSET_SIZE(small_struct_arg_by_value, small_struct_arg_by_value_end)
439*702941cdSRichard Lowe
440*702941cdSRichard LoweFUNC(interleaved_argument_saves)
441*702941cdSRichard Lowepushq	%rbp
442*702941cdSRichard Lowemovq	%rdi,%rax
443*702941cdSRichard Loweshlq	$0x21,%rax
444*702941cdSRichard Lowemovq	%rsp,%rbp
445*702941cdSRichard Loweshrq	$0x29,%rax
446*702941cdSRichard Lowesubq	$0x30,%rsp
447*702941cdSRichard Lowemovq	%rdi,-0x8(%rbp)
448*702941cdSRichard Lowemovq	%rbx,-0x28(%rbp)
449*702941cdSRichard Lowemovzbl	%dil,%edi
450*702941cdSRichard Lowemovq	%rcx,-0x20(%rbp)
451*702941cdSRichard Lowemovq	%rdx,-0x18(%rbp)
452*702941cdSRichard Lowemovq	%rsi,-0x10(%rbp)
453*702941cdSRichard Lowemovq	0x0(,%rax,8),%rax
454*702941cdSRichard LoweSET_SIZE(interleaved_argument_saves, interleaved_argument_saves_end)
455*702941cdSRichard Lowe
456*702941cdSRichard LoweFUNC(jmp_table)
457*702941cdSRichard Lowepushq	%rbp
458*702941cdSRichard Lowemovq	%rsp,%rbp
459*702941cdSRichard Lowe.word	0x9afe
460*702941cdSRichard Lowe.word	0xffff
461*702941cdSRichard Lowe.word	0xffff
462*702941cdSRichard Lowe.word	0xa8ff
463*702941cdSRichard Lowe.word	0xffff
464*702941cdSRichard Lowe.word	0xffff
465*702941cdSRichard Lowe.word	0x7cff
466*702941cdSRichard Lowe.word	0xffff
467*702941cdSRichard Lowe.word	0xffff
468*702941cdSRichard LoweSET_SIZE(jmp_table, jmp_table_end)
469