bump product version to 6.3.0.0.beta1
[LibreOffice.git] / bridges / source / cpp_uno / gcc3_linux_x86-64 / call.s
blob57d0c9f9465743246d556d17ad59883a7fc35efc
1 /*
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 .
19 .text
20 .align 2
21 .globl privateSnippetExecutor
22 .type privateSnippetExecutor, @function
23 privateSnippetExecutor:
24 .LFB3:
25 pushq %rbp
26 .LCFI0:
27 movq %rsp, %rbp
28 .LCFI1:
29 subq $160, %rsp
30 .LCFI2:
31 movq %r10, -152(%rbp) # Save (nVtableOffset << 32) + nFunctionIndex
33 movq %rdi, -112(%rbp) # Save GP registers
34 movq %rsi, -104(%rbp)
35 movq %rdx, -96(%rbp)
36 movq %rcx, -88(%rbp)
37 movq %r8 , -80(%rbp)
38 movq %r9 , -72(%rbp)
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)
47 movsd %xmm7, -8(%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
56 call cpp_vtable_call
58 cmp $10, %rax # typelib_TypeClass_FLOAT
59 je .Lfloat
60 cmp $11, %rax # typelib_TypeClass_DOUBLE
61 je .Lfloat
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)
67 jmp .Lfinish
68 .Lfloat:
69 movlpd -144(%rbp), %xmm0 # Return value (float/double case)
71 .Lfinish:
72 leave
73 ret
74 .LFE3:
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
80 .Lframe1:
81 .long .LECIE1-.LSCIE1
82 .LSCIE1:
83 .long 0x0
84 .byte 0x1
85 .string "zR"
86 .uleb128 0x1
87 .sleb128 -8
88 .byte 0x10
89 .uleb128 0x1
90 .byte 0x1b
91 .byte 0xc
92 .uleb128 0x7
93 .uleb128 0x8
94 .byte 0x90
95 .uleb128 0x1
96 .align 8
97 .LECIE1:
98 .LSFDE1:
99 .long .LEFDE1-.LASFDE1
100 .LASFDE1:
101 .long .LASFDE1-.Lframe1
102 .long .LFB3-.
103 .long .LFE3-.LFB3
104 .uleb128 0x0
105 .byte 0x4
106 .long .LCFI0-.LFB3
107 .byte 0xe
108 .uleb128 0x10
109 .byte 0x86
110 .uleb128 0x2
111 .byte 0x4
112 .long .LCFI1-.LCFI0
113 .byte 0xd
114 .uleb128 0x6
115 .align 8
116 .LEFDE1:
117 .section .note.GNU-stack,"",@progbits