xref: /AOO41X/main/bridges/source/cpp_uno/gcc3_linux_intel/call.s (revision b5da552ccefc4034e06a43bfae43fb8a8b64a7ad)
1*b5da552cSAndrew Rist/**************************************************************
2*b5da552cSAndrew Rist *
3*b5da552cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*b5da552cSAndrew Rist * or more contributor license agreements.  See the NOTICE file
5*b5da552cSAndrew Rist * distributed with this work for additional information
6*b5da552cSAndrew Rist * regarding copyright ownership.  The ASF licenses this file
7*b5da552cSAndrew Rist * to you under the Apache License, Version 2.0 (the
8*b5da552cSAndrew Rist * "License"); you may not use this file except in compliance
9*b5da552cSAndrew Rist * with the License.  You may obtain a copy of the License at
10*b5da552cSAndrew Rist *
11*b5da552cSAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12*b5da552cSAndrew Rist *
13*b5da552cSAndrew Rist * Unless required by applicable law or agreed to in writing,
14*b5da552cSAndrew Rist * software distributed under the License is distributed on an
15*b5da552cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b5da552cSAndrew Rist * KIND, either express or implied.  See the License for the
17*b5da552cSAndrew Rist * specific language governing permissions and limitations
18*b5da552cSAndrew Rist * under the License.
19*b5da552cSAndrew Rist *
20*b5da552cSAndrew Rist *************************************************************/
21*b5da552cSAndrew Rist
22cdf0e10cSrcweir    .text
23cdf0e10cSrcweir
24cdf0e10cSrcweir.globl privateSnippetExecutorGeneral
25cdf0e10cSrcweir    .type   privateSnippetExecutorGeneral,@function
26cdf0e10cSrcweirprivateSnippetExecutorGeneral:
27cdf0e10cSrcweir.LFBg:
28cdf0e10cSrcweir    movl    %esp,%ecx
29cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
30cdf0e10cSrcweir.LCFIg0:
31cdf0e10cSrcweir    movl    %esp,%ebp
32cdf0e10cSrcweir.LCFIg1:
33cdf0e10cSrcweir    subl    $0x8,%esp         # 32bit returnValue, and preserve potential 128bit
34cdf0e10cSrcweir                              #  stack alignment
35cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
36cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
37cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
38cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
39cdf0e10cSrcweir    call    cpp_vtable_call
40cdf0e10cSrcweir    movl    16(%esp),%eax     # 32bit returnValue
41cdf0e10cSrcweir    leave
42cdf0e10cSrcweir    ret
43cdf0e10cSrcweir.LFEg:
44cdf0e10cSrcweir    .size   privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
45cdf0e10cSrcweir
46cdf0e10cSrcweir.globl privateSnippetExecutorVoid
47cdf0e10cSrcweir    .type   privateSnippetExecutorVoid,@function
48cdf0e10cSrcweirprivateSnippetExecutorVoid:
49cdf0e10cSrcweir.LFBv:
50cdf0e10cSrcweir    movl    %esp,%ecx
51cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
52cdf0e10cSrcweir.LCFIv0:
53cdf0e10cSrcweir    movl    %esp,%ebp
54cdf0e10cSrcweir.LCFIv1:
55cdf0e10cSrcweir    andl    $0xFFFFFFF0,%esp  # preserve potential 128bit stack alignment
56cdf0e10cSrcweir    pushl   $0                # 32bit null pointer (returnValue not used)
57cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
58cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
59cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
60cdf0e10cSrcweir    call    cpp_vtable_call
61cdf0e10cSrcweir    leave
62cdf0e10cSrcweir    ret
63cdf0e10cSrcweir.LFEv:
64cdf0e10cSrcweir    .size   privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
65cdf0e10cSrcweir
66cdf0e10cSrcweir.globl privateSnippetExecutorHyper
67cdf0e10cSrcweir    .type   privateSnippetExecutorHyper,@function
68cdf0e10cSrcweirprivateSnippetExecutorHyper:
69cdf0e10cSrcweir.LFBh:
70cdf0e10cSrcweir    movl    %esp,%ecx
71cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
72cdf0e10cSrcweir.LCFIh0:
73cdf0e10cSrcweir    movl    %esp,%ebp
74cdf0e10cSrcweir.LCFIh1:
75cdf0e10cSrcweir    subl    $0x8,%esp         # 64bit returnValue (preserves potential 128bit
76cdf0e10cSrcweir                              #  stack alignment)
77cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
78cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
79cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
80cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
81cdf0e10cSrcweir    call    cpp_vtable_call
82cdf0e10cSrcweir    movl    16(%esp),%eax     # 64bit returnValue, lower half
83cdf0e10cSrcweir    movl    20(%esp),%edx     # 64bit returnValue, upper half
84cdf0e10cSrcweir    leave
85cdf0e10cSrcweir    ret
86cdf0e10cSrcweir.LFEh:
87cdf0e10cSrcweir    .size   privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
88cdf0e10cSrcweir
89cdf0e10cSrcweir.globl privateSnippetExecutorFloat
90cdf0e10cSrcweir    .type   privateSnippetExecutorFloat,@function
91cdf0e10cSrcweirprivateSnippetExecutorFloat:
92cdf0e10cSrcweir.LFBf:
93cdf0e10cSrcweir    movl    %esp,%ecx
94cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
95cdf0e10cSrcweir.LCFIf0:
96cdf0e10cSrcweir    movl    %esp,%ebp
97cdf0e10cSrcweir.LCFIf1:
98cdf0e10cSrcweir    subl    $0x8,%esp         # 32bit returnValue, and preserve potential 128bit
99cdf0e10cSrcweir                              #  stack alignment
100cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
101cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
102cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
103cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
104cdf0e10cSrcweir    call    cpp_vtable_call
105cdf0e10cSrcweir    flds    16(%esp)          # 32bit returnValue
106cdf0e10cSrcweir    leave
107cdf0e10cSrcweir    ret
108cdf0e10cSrcweir.LFEf:
109cdf0e10cSrcweir    .size   privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
110cdf0e10cSrcweir
111cdf0e10cSrcweir.globl privateSnippetExecutorDouble
112cdf0e10cSrcweir    .type   privateSnippetExecutorDouble,@function
113cdf0e10cSrcweirprivateSnippetExecutorDouble:
114cdf0e10cSrcweir.LFBd:
115cdf0e10cSrcweir    movl    %esp,%ecx
116cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
117cdf0e10cSrcweir.LCFId0:
118cdf0e10cSrcweir    movl    %esp,%ebp
119cdf0e10cSrcweir.LCFId1:
120cdf0e10cSrcweir    subl    $0x8,%esp         # 64bit returnValue (preserves potential 128bit
121cdf0e10cSrcweir                              #  stack alignment)
122cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
123cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
124cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
125cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
126cdf0e10cSrcweir    call    cpp_vtable_call
127cdf0e10cSrcweir    fldl    16(%esp)          # 64bit returnValue
128cdf0e10cSrcweir    leave
129cdf0e10cSrcweir    ret
130cdf0e10cSrcweir.LFEd:
131cdf0e10cSrcweir    .size   privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
132cdf0e10cSrcweir
133cdf0e10cSrcweir.globl privateSnippetExecutorClass
134cdf0e10cSrcweir    .type   privateSnippetExecutorClass,@function
135cdf0e10cSrcweirprivateSnippetExecutorClass:
136cdf0e10cSrcweir.LFBc:
137cdf0e10cSrcweir    movl    %esp,%ecx
138cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
139cdf0e10cSrcweir.LCFIc0:
140cdf0e10cSrcweir    movl    %esp,%ebp
141cdf0e10cSrcweir.LCFIc1:
142cdf0e10cSrcweir    subl    $0x8,%esp         # 32bit returnValue, and preserve potential 128bit
143cdf0e10cSrcweir                              #  stack alignment
144cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
145cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
146cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
147cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
148cdf0e10cSrcweir    call    cpp_vtable_call
149cdf0e10cSrcweir    movl    16(%esp),%eax     # 32bit returnValue
150cdf0e10cSrcweir    leave
151cdf0e10cSrcweir    ret     $4
152cdf0e10cSrcweir.LFEc:
153cdf0e10cSrcweir    .size   privateSnippetExecutorClass,.-privateSnippetExecutorClass
154cdf0e10cSrcweir
155cdf0e10cSrcweir    .section .eh_frame,"a",@progbits
156cdf0e10cSrcweir.Lframe1:
157cdf0e10cSrcweir    .long   .LECIE1-.LSCIE1   # length
158cdf0e10cSrcweir.LSCIE1:
159cdf0e10cSrcweir    .long   0                 # CIE_ID
160cdf0e10cSrcweir    .byte   1                 # version
161cdf0e10cSrcweir    .string "zR"              # augmentation
162cdf0e10cSrcweir    .uleb128 1                # code_alignment_factor
163cdf0e10cSrcweir    .sleb128 -4               # data_alignment_factor
164cdf0e10cSrcweir    .byte   8                 # return_address_register
165cdf0e10cSrcweir    .uleb128 1                # augmentation size 1:
166cdf0e10cSrcweir    .byte   0x1B              #  FDE Encoding (pcrel sdata4)
167cdf0e10cSrcweir                              # initial_instructions:
168cdf0e10cSrcweir    .byte   0x0C              #  DW_CFA_def_cfa %esp, 4
169cdf0e10cSrcweir    .uleb128 4
170cdf0e10cSrcweir    .uleb128 4
171cdf0e10cSrcweir    .byte   0x88              #  DW_CFA_offset ret, 1
172cdf0e10cSrcweir    .uleb128 1
173cdf0e10cSrcweir    .align 4
174cdf0e10cSrcweir.LECIE1:
175cdf0e10cSrcweir.LSFDEg:
176cdf0e10cSrcweir    .long   .LEFDEg-.LASFDEg  # length
177cdf0e10cSrcweir.LASFDEg:
178cdf0e10cSrcweir    .long   .LASFDEg-.Lframe1 # CIE_pointer
179cdf0e10cSrcweir    .long   .LFBg-.           # initial_location
180cdf0e10cSrcweir    .long   .LFEg-.LFBg       # address_range
181cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
182cdf0e10cSrcweir                              # instructions:
183cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
184cdf0e10cSrcweir    .long   .LCFIg0-.LFBg
185cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
186cdf0e10cSrcweir    .uleb128 8
187cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
188cdf0e10cSrcweir    .uleb128 2
189cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
190cdf0e10cSrcweir    .long   .LCFIg1-.LCFIg0
191cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
192cdf0e10cSrcweir    .uleb128 5
193cdf0e10cSrcweir    .align 4
194cdf0e10cSrcweir.LEFDEg:
195cdf0e10cSrcweir.LSFDEv:
196cdf0e10cSrcweir    .long   .LEFDEv-.LASFDEv  # length
197cdf0e10cSrcweir.LASFDEv:
198cdf0e10cSrcweir    .long   .LASFDEv-.Lframe1 # CIE_pointer
199cdf0e10cSrcweir    .long   .LFBv-.           # initial_location
200cdf0e10cSrcweir    .long   .LFEv-.LFBv       # address_range
201cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
202cdf0e10cSrcweir                              # instructions:
203cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
204cdf0e10cSrcweir    .long   .LCFIv0-.LFBv
205cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
206cdf0e10cSrcweir    .uleb128 8
207cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
208cdf0e10cSrcweir    .uleb128 2
209cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
210cdf0e10cSrcweir    .long   .LCFIv1-.LCFIv0
211cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
212cdf0e10cSrcweir    .uleb128 5
213cdf0e10cSrcweir    .align 4
214cdf0e10cSrcweir.LEFDEv:
215cdf0e10cSrcweir.LSFDEh:
216cdf0e10cSrcweir    .long   .LEFDEh-.LASFDEh  # length
217cdf0e10cSrcweir.LASFDEh:
218cdf0e10cSrcweir    .long   .LASFDEh-.Lframe1 # CIE_pointer
219cdf0e10cSrcweir    .long   .LFBh-.           # initial_location
220cdf0e10cSrcweir    .long   .LFEh-.LFBh       # address_range
221cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
222cdf0e10cSrcweir                              # instructions:
223cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
224cdf0e10cSrcweir    .long   .LCFIh0-.LFBh
225cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
226cdf0e10cSrcweir    .uleb128 8
227cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
228cdf0e10cSrcweir    .uleb128 2
229cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
230cdf0e10cSrcweir    .long   .LCFIh1-.LCFIh0
231cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
232cdf0e10cSrcweir    .uleb128 5
233cdf0e10cSrcweir    .align 4
234cdf0e10cSrcweir.LEFDEh:
235cdf0e10cSrcweir.LSFDEf:
236cdf0e10cSrcweir    .long   .LEFDEf-.LASFDEf  # length
237cdf0e10cSrcweir.LASFDEf:
238cdf0e10cSrcweir    .long   .LASFDEf-.Lframe1 # CIE_pointer
239cdf0e10cSrcweir    .long   .LFBf-.           # initial_location
240cdf0e10cSrcweir    .long   .LFEf-.LFBf       # address_range
241cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
242cdf0e10cSrcweir                              # instructions:
243cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
244cdf0e10cSrcweir    .long   .LCFIf0-.LFBf
245cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
246cdf0e10cSrcweir    .uleb128 8
247cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
248cdf0e10cSrcweir    .uleb128 2
249cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
250cdf0e10cSrcweir    .long   .LCFIf1-.LCFIf0
251cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
252cdf0e10cSrcweir    .uleb128 5
253cdf0e10cSrcweir    .align 4
254cdf0e10cSrcweir.LEFDEf:
255cdf0e10cSrcweir.LSFDEd:
256cdf0e10cSrcweir    .long   .LEFDEd-.LASFDEd  # length
257cdf0e10cSrcweir.LASFDEd:
258cdf0e10cSrcweir    .long   .LASFDEd-.Lframe1 # CIE_pointer
259cdf0e10cSrcweir    .long   .LFBd-.           # initial_location
260cdf0e10cSrcweir    .long   .LFEd-.LFBd       # address_range
261cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
262cdf0e10cSrcweir                              # instructions:
263cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
264cdf0e10cSrcweir    .long   .LCFId0-.LFBd
265cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
266cdf0e10cSrcweir    .uleb128 8
267cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
268cdf0e10cSrcweir    .uleb128 2
269cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
270cdf0e10cSrcweir    .long   .LCFId1-.LCFId0
271cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
272cdf0e10cSrcweir    .uleb128 5
273cdf0e10cSrcweir    .align 4
274cdf0e10cSrcweir.LEFDEd:
275cdf0e10cSrcweir.LSFDEc:
276cdf0e10cSrcweir    .long   .LEFDEc-.LASFDEc  # length
277cdf0e10cSrcweir.LASFDEc:
278cdf0e10cSrcweir    .long   .LASFDEc-.Lframe1 # CIE_pointer
279cdf0e10cSrcweir    .long   .LFBc-.           # initial_location
280cdf0e10cSrcweir    .long   .LFEc-.LFBc       # address_range
281cdf0e10cSrcweir    .uleb128 0                # augmentation size 0
282cdf0e10cSrcweir                              # instructions:
283cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
284cdf0e10cSrcweir    .long   .LCFIc0-.LFBc
285cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
286cdf0e10cSrcweir    .uleb128 8
287cdf0e10cSrcweir    .byte   0x85              #  DW_CFA_offset %ebp, 2
288cdf0e10cSrcweir    .uleb128 2
289cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
290cdf0e10cSrcweir    .long   .LCFIc1-.LCFIc0
291cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
292cdf0e10cSrcweir    .uleb128 5
293cdf0e10cSrcweir    .align 4
294cdf0e10cSrcweir.LEFDEc:
295cdf0e10cSrcweir    .section .note.GNU-stack,"",@progbits
296