2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 .globl privateSnippetExecutor
22 .type privateSnippetExecutor, @function
23 privateSnippetExecutor
:
31 movq
%r10, -152(%rbp
) # Save (nVtableOffset << 32) + nFunctionIndex
33 movq
%rdi
, -112(%rbp
) # Save GP registers
40 movsd
%xmm0
, -64(%rbp
) # Save FP registers
41 movsd
%xmm1
, -56(%rbp
)
42 movsd
%xmm2
, -48(%rbp
)
43 movsd
%xmm3
, -40(%rbp
)
44 movsd
%xmm4
, -32(%rbp
)
45 movsd
%xmm5
, -24(%rbp
)
46 movsd
%xmm6
, -16(%rbp
)
49 leaq
-144(%rbp
), %r9 # 6th param: sal_uInt64 * pRegisterReturn
50 leaq
16(%rbp
), %r8 # 5rd param: void ** ovrflw
51 leaq
-64(%rbp
), %rcx
# 4th param: void ** fpreg
52 leaq
-112(%rbp
), %rdx
# 3rd param: void ** gpreg
53 movl
-148(%rbp
), %esi
# 2nd param: sal_int32 nVtableOffset
54 movl
-152(%rbp
), %edi
# 1st param: sal_int32 nFunctionIndex
58 cmp $
10, %rax
# typelib_TypeClass_FLOAT
60 cmp $
11, %rax
# typelib_TypeClass_DOUBLE
63 movq
-144(%rbp
), %rax
# Return value (int case)
64 movq
-136(%rbp
), %rdx
# Return value (int case)
65 movq
-144(%rbp
), %xmm0
# Return value (int case)
66 movq
-136(%rbp
), %xmm1
# Return value (int case)
69 movlpd
-144(%rbp
), %xmm0
# Return value (float/double case)
75 .size privateSnippetExecutor, .-privateSnippetExecutor
76 # see http://refspecs.linuxfoundation.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html
77 # for details of the .eh_frame, the "Common Information Entry" and "Frame Description Entry" formats
78 # and http://mentorembedded.github.io/cxx-abi/exceptions.pdf for more info
79 .section .eh_frame,"a",@progbits
99 .long .LEFDE1-.LASFDE1
101 .long .LASFDE1-.Lframe1
117 .section .note.GNU-stack,"",@progbits