xref: /AOO41X/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1	.text
2	.align 2
3.globl privateSnippetExecutor
4	.type	privateSnippetExecutor, @function
5privateSnippetExecutor:
6.LFB3:
7	pushq	%rbp
8.LCFI0:
9	movq	%rsp, %rbp
10.LCFI1:
11	subq	$160, %rsp
12.LCFI2:
13	movq	%r10, -152(%rbp)		# Save (nVtableOffset << 32) + nFunctionIndex
14
15	movq	%rdi, -112(%rbp)		# Save GP registers
16	movq	%rsi, -104(%rbp)
17	movq	%rdx, -96(%rbp)
18	movq	%rcx, -88(%rbp)
19	movq	%r8 , -80(%rbp)
20	movq	%r9 , -72(%rbp)
21
22	movsd	%xmm0, -64(%rbp)		# Save FP registers
23	movsd	%xmm1, -56(%rbp)
24	movsd	%xmm2, -48(%rbp)
25	movsd	%xmm3, -40(%rbp)
26	movsd	%xmm4, -32(%rbp)
27	movsd	%xmm5, -24(%rbp)
28	movsd	%xmm6, -16(%rbp)
29	movsd	%xmm7, -8(%rbp)
30
31	leaq	-144(%rbp), %r9			# 6th param: sal_uInt64 * pRegisterReturn
32	leaq	16(%rbp), %r8			# 5rd param: void ** ovrflw
33	leaq	-64(%rbp), %rcx			# 4th param: void ** fpreg
34	leaq	-112(%rbp), %rdx		# 3rd param: void ** gpreg
35	movl	-148(%rbp), %esi		# 2nd param: sal_int32 nVtableOffset
36	movl	-152(%rbp), %edi		# 1st param: sal_int32 nFunctionIndex
37
38	call	cpp_vtable_call
39
40	cmp	$10, %rax					# typelib_TypeClass_FLOAT
41	je	.Lfloat
42	cmp	$11, %rax					# typelib_TypeClass_DOUBLE
43	je	.Lfloat
44
45	movq	-144(%rbp), %rax		# Return value (int case)
46	jmp	.Lfinish
47.Lfloat:
48	movlpd	-144(%rbp), %xmm0		# Return value (float/double case)
49
50.Lfinish:
51	leave
52	ret
53.LFE3:
54	.size	privateSnippetExecutor, .-privateSnippetExecutor
55	.section	.eh_frame,"a",@progbits
56.Lframe1:
57	.long	.LECIE1-.LSCIE1
58.LSCIE1:
59	.long	0x0
60	.byte	0x1
61	.string	"zR"
62	.uleb128 0x1
63	.sleb128 -8
64	.byte	0x10
65	.uleb128 0x1
66	.byte	0x1b
67	.byte	0xc
68	.uleb128 0x7
69	.uleb128 0x8
70	.byte	0x90
71	.uleb128 0x1
72	.align 8
73.LECIE1:
74.LSFDE1:
75	.long	.LEFDE1-.LASFDE1
76.LASFDE1:
77	.long	.LASFDE1-.Lframe1
78	.long	.LFB3-.
79	.long	.LFE3-.LFB3
80	.uleb128 0x0
81	.byte	0x4
82	.long	.LCFI0-.LFB3
83	.byte	0xe
84	.uleb128 0x10
85	.byte	0x86
86	.uleb128 0x2
87	.byte	0x4
88	.long	.LCFI1-.LCFI0
89	.byte	0xd
90	.uleb128 0x6
91	.align 8
92.LEFDE1:
93	.section	.note.GNU-stack,"",@progbits
94