xref: /AOO41X/main/bridges/source/cpp_uno/mingw_intel/call.s (revision b5da552ccefc4034e06a43bfae43fb8a8b64a7ad)
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_privateSnippetExecutorGeneral:
26.LFBg:
27    movl    %esp,%ecx
28    pushl   %ebp              # proper stack frame needed for exception handling
29.LCFIg0:
30    movl    %esp,%ebp
31.LCFIg1:
32    subl    $0x4,%esp         # 32bit returnValue
33    pushl   %esp              # 32bit &returnValue
34    pushl   %ecx              # 32bit pCallStack
35    pushl   %edx              # 32bit nVtableOffset
36    pushl   %eax              # 32bit nFunctionIndex
37    call    _cpp_vtable_call
38    movl    16(%esp),%eax     # 32bit returnValue
39    leave
40    ret
41.LFEg:
42    .long   .-_privateSnippetExecutorGeneral
43
44.globl _privateSnippetExecutorVoid
45_privateSnippetExecutorVoid:
46.LFBv:
47    movl    %esp,%ecx
48    pushl   %ebp              # proper stack frame needed for exception handling
49.LCFIv0:
50    movl    %esp,%ebp
51.LCFIv1:
52    pushl   $0                # 32bit null pointer (returnValue not used)
53    pushl   %ecx              # 32bit pCallStack
54    pushl   %edx              # 32bit nVtableOffset
55    pushl   %eax              # 32bit nFunctionIndex
56    call    _cpp_vtable_call
57    leave
58    ret
59.LFEv:
60    .long   .-_privateSnippetExecutorVoid
61
62.globl _privateSnippetExecutorHyper
63_privateSnippetExecutorHyper:
64.LFBh:
65    movl    %esp,%ecx
66    pushl   %ebp              # proper stack frame needed for exception handling
67.LCFIh0:
68    movl    %esp,%ebp
69.LCFIh1:
70    subl    $0x8,%esp         # 64bit returnValue
71    pushl   %esp              # 32bit &returnValue
72    pushl   %ecx              # 32bit pCallStack
73    pushl   %edx              # 32bit nVtableOffset
74    pushl   %eax              # 32bit nFunctionIndex
75    call    _cpp_vtable_call
76    movl    16(%esp),%eax     # 64bit returnValue, lower half
77    movl    20(%esp),%edx     # 64bit returnValue, upper half
78    leave
79    ret
80.LFEh:
81    .long   .-_privateSnippetExecutorHyper
82
83.globl _privateSnippetExecutorFloat
84_privateSnippetExecutorFloat:
85.LFBf:
86    movl    %esp,%ecx
87    pushl   %ebp              # proper stack frame needed for exception handling
88.LCFIf0:
89    movl    %esp,%ebp
90.LCFIf1:
91    subl    $0x4,%esp         # 32bit returnValue
92    pushl   %esp              # 32bit &returnValue
93    pushl   %ecx              # 32bit pCallStack
94    pushl   %edx              # 32bit nVtableOffset
95    pushl   %eax              # 32bit nFunctionIndex
96    call    _cpp_vtable_call
97    flds    16(%esp)          # 32bit returnValue
98    leave
99    ret
100.LFEf:
101    .long   .-_privateSnippetExecutorFloat
102
103.globl _privateSnippetExecutorDouble
104_privateSnippetExecutorDouble:
105.LFBd:
106    movl    %esp,%ecx
107    pushl   %ebp              # proper stack frame needed for exception handling
108.LCFId0:
109    movl    %esp,%ebp
110.LCFId1:
111    subl    $0x8,%esp         # 64bit returnValue
112    pushl   %esp              # 32bit &returnValue
113    pushl   %ecx              # 32bit pCallStack
114    pushl   %edx              # 32bit nVtableOffset
115    pushl   %eax              # 32bit nFunctionIndex
116    call    _cpp_vtable_call
117    fldl    16(%esp)          # 64bit returnValue
118    leave
119    ret
120.LFEd:
121    .long   .-_privateSnippetExecutorDouble
122
123.globl _privateSnippetExecutorClass
124_privateSnippetExecutorClass:
125.LFBc:
126    movl    %esp,%ecx
127    pushl   %ebp              # proper stack frame needed for exception handling
128.LCFIc0:
129    movl    %esp,%ebp
130.LCFIc1:
131    subl    $0x4,%esp         # 32bit returnValue
132    pushl   %esp              # 32bit &returnValue
133    pushl   %ecx              # 32bit pCallStack
134    pushl   %edx              # 32bit nVtableOffset
135    pushl   %eax              # 32bit nFunctionIndex
136    call    _cpp_vtable_call
137    movl    16(%esp),%eax     # 32bit returnValue
138    leave
139    ret     $4
140.LFEc:
141    .long   .-_privateSnippetExecutorClass
142
143    .section .eh_frame,"dr"
144.Lframe1:
145    .long   .LECIE1-.LSCIE1   # length
146.LSCIE1:
147    .long   0                 # CIE_ID
148    .byte   1                 # version
149    .string "zR"              # augmentation
150    .uleb128 1                # code_alignment_factor
151    .sleb128 -4               # data_alignment_factor
152    .byte   8                 # return_address_register
153    .uleb128 1                # augmentation size 1:
154    .byte   0x1B              #  FDE Encoding (pcrel sdata4)
155                              # initial_instructions:
156    .byte   0x0C              #  DW_CFA_def_cfa %esp, 4
157    .uleb128 4
158    .uleb128 4
159    .byte   0x88              #  DW_CFA_offset ret, 1
160    .uleb128 1
161    .align 4
162.LECIE1:
163.LSFDEg:
164    .long   .LEFDEg-.LASFDEg  # length
165.LASFDEg:
166    .long   .LASFDEg-.Lframe1 # CIE_pointer
167    .long   .LFBg-.           # initial_location
168    .long   .LFEg-.LFBg       # address_range
169    .uleb128 0                # augmentation size 0
170                              # instructions:
171    .byte   0x04              #  DW_CFA_advance_loc4
172    .long   .LCFIg0-.LFBg
173    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
174    .uleb128 8
175    .byte   0x85              #  DW_CFA_offset %ebp, 2
176    .uleb128 2
177    .byte   0x04              #  DW_CFA_advance_loc4
178    .long   .LCFIg1-.LCFIg0
179    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
180    .uleb128 5
181    .align 4
182.LEFDEg:
183.LSFDEv:
184    .long   .LEFDEv-.LASFDEv  # length
185.LASFDEv:
186    .long   .LASFDEv-.Lframe1 # CIE_pointer
187    .long   .LFBv-.           # initial_location
188    .long   .LFEv-.LFBv       # address_range
189    .uleb128 0                # augmentation size 0
190                              # instructions:
191    .byte   0x04              #  DW_CFA_advance_loc4
192    .long   .LCFIv0-.LFBv
193    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
194    .uleb128 8
195    .byte   0x85              #  DW_CFA_offset %ebp, 2
196    .uleb128 2
197    .byte   0x04              #  DW_CFA_advance_loc4
198    .long   .LCFIv1-.LCFIv0
199    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
200    .uleb128 5
201    .align 4
202.LEFDEv:
203.LSFDEh:
204    .long   .LEFDEh-.LASFDEh  # length
205.LASFDEh:
206    .long   .LASFDEh-.Lframe1 # CIE_pointer
207    .long   .LFBh-.           # initial_location
208    .long   .LFEh-.LFBh       # address_range
209    .uleb128 0                # augmentation size 0
210                              # instructions:
211    .byte   0x04              #  DW_CFA_advance_loc4
212    .long   .LCFIh0-.LFBh
213    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
214    .uleb128 8
215    .byte   0x85              #  DW_CFA_offset %ebp, 2
216    .uleb128 2
217    .byte   0x04              #  DW_CFA_advance_loc4
218    .long   .LCFIh1-.LCFIh0
219    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
220    .uleb128 5
221    .align 4
222.LEFDEh:
223.LSFDEf:
224    .long   .LEFDEf-.LASFDEf  # length
225.LASFDEf:
226    .long   .LASFDEf-.Lframe1 # CIE_pointer
227    .long   .LFBf-.           # initial_location
228    .long   .LFEf-.LFBf       # address_range
229    .uleb128 0                # augmentation size 0
230                              # instructions:
231    .byte   0x04              #  DW_CFA_advance_loc4
232    .long   .LCFIf0-.LFBf
233    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
234    .uleb128 8
235    .byte   0x85              #  DW_CFA_offset %ebp, 2
236    .uleb128 2
237    .byte   0x04              #  DW_CFA_advance_loc4
238    .long   .LCFIf1-.LCFIf0
239    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
240    .uleb128 5
241    .align 4
242.LEFDEf:
243.LSFDEd:
244    .long   .LEFDEd-.LASFDEd  # length
245.LASFDEd:
246    .long   .LASFDEd-.Lframe1 # CIE_pointer
247    .long   .LFBd-.           # initial_location
248    .long   .LFEd-.LFBd       # address_range
249    .uleb128 0                # augmentation size 0
250                              # instructions:
251    .byte   0x04              #  DW_CFA_advance_loc4
252    .long   .LCFId0-.LFBd
253    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
254    .uleb128 8
255    .byte   0x85              #  DW_CFA_offset %ebp, 2
256    .uleb128 2
257    .byte   0x04              #  DW_CFA_advance_loc4
258    .long   .LCFId1-.LCFId0
259    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
260    .uleb128 5
261    .align 4
262.LEFDEd:
263.LSFDEc:
264    .long   .LEFDEc-.LASFDEc  # length
265.LASFDEc:
266    .long   .LASFDEc-.Lframe1 # CIE_pointer
267    .long   .LFBc-.           # initial_location
268    .long   .LFEc-.LFBc       # address_range
269    .uleb128 0                # augmentation size 0
270                              # instructions:
271    .byte   0x04              #  DW_CFA_advance_loc4
272    .long   .LCFIc0-.LFBc
273    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
274    .uleb128 8
275    .byte   0x85              #  DW_CFA_offset %ebp, 2
276    .uleb128 2
277    .byte   0x04              #  DW_CFA_advance_loc4
278    .long   .LCFIc1-.LCFIc0
279    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
280    .uleb128 5
281    .align 4
282.LEFDEc:
283