xref: /AOO41X/main/bridges/source/cpp_uno/gcc3_freebsd_x86-64/call.s (revision e1d5bd03a6ea7ac2b26b792c9e2a94e9f347a43b)
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	movq	-136(%rbp), %rdx		# Return value (int case)
47	movq	-144(%rbp), %xmm0		# Return value (int case)
48	movq	-136(%rbp), %xmm1		# Return value (int case)
49	jmp	.Lfinish
50.Lfloat:
51	movlpd	-144(%rbp), %xmm0		# Return value (float/double case)
52
53.Lfinish:
54	leave
55	ret
56.LFE3:
57	.size	privateSnippetExecutor, .-privateSnippetExecutor
58	.section	.eh_frame,"a",@progbits
59.Lframe1:
60	.long	.LECIE1-.LSCIE1
61.LSCIE1:
62	.long	0x0
63	.byte	0x1
64	.string	"zR"
65	.uleb128 0x1
66	.sleb128 -8
67	.byte	0x10
68	.uleb128 0x1
69	.byte	0x1b
70	.byte	0xc
71	.uleb128 0x7
72	.uleb128 0x8
73	.byte	0x90
74	.uleb128 0x1
75	.align 8
76.LECIE1:
77.LSFDE1:
78	.long	.LEFDE1-.LASFDE1
79.LASFDE1:
80	.long	.LASFDE1-.Lframe1
81	.long	.LFB3-.
82	.long	.LFE3-.LFB3
83	.uleb128 0x0
84	.byte	0x4
85	.long	.LCFI0-.LFB3
86	.byte	0xe
87	.uleb128 0x10
88	.byte	0x86
89	.uleb128 0x2
90	.byte	0x4
91	.long	.LCFI1-.LCFI0
92	.byte	0xd
93	.uleb128 0x6
94	.align 8
95.LEFDE1:
96	.section	.note.GNU-stack,"",@progbits
97