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