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