xref: /AOO41X/main/bridges/source/cpp_uno/gcc3_macosx_intel/call.s (revision b5da552ccefc4034e06a43bfae43fb8a8b64a7ad)
1*b5da552cSAndrew Rist/**************************************************************
2cdf0e10cSrcweir *
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
10cdf0e10cSrcweir *
11*b5da552cSAndrew Rist *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
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.
19cdf0e10cSrcweir *
20*b5da552cSAndrew Rist *************************************************************/
21*b5da552cSAndrew Rist
22*b5da552cSAndrew Rist
23cdf0e10cSrcweir    .text
24cdf0e10cSrcweir
25cdf0e10cSrcweir.align 1, 0x90
26cdf0e10cSrcweir.globl _privateSnippetExecutorGeneral
27cdf0e10cSrcweir_privateSnippetExecutorGeneral:
28cdf0e10cSrcweirLFBg:
29cdf0e10cSrcweir    movl    %esp,%ecx
30cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
31cdf0e10cSrcweirLCFIg0:
32cdf0e10cSrcweir    movl    %esp,%ebp
33cdf0e10cSrcweirLCFIg1:
34cdf0e10cSrcweir    subl    $0x8,%esp         # padding + 32bit returnValue
35cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
36cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
37cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
38cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
39cdf0e10cSrcweir    call    L_cpp_vtable_call$stub
40cdf0e10cSrcweir    movl    16(%esp),%eax     # 32bit returnValue
41cdf0e10cSrcweir    leave
42cdf0e10cSrcweir    ret
43cdf0e10cSrcweirLFEg:
44cdf0e10cSrcweir    .long   .-_privateSnippetExecutorGeneral
45cdf0e10cSrcweir
46cdf0e10cSrcweir.align 1, 0x90
47cdf0e10cSrcweir.globl _privateSnippetExecutorVoid
48cdf0e10cSrcweir_privateSnippetExecutorVoid:
49cdf0e10cSrcweirLFBv:
50cdf0e10cSrcweir    movl    %esp,%ecx
51cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
52cdf0e10cSrcweirLCFIv0:
53cdf0e10cSrcweir    movl    %esp,%ebp
54cdf0e10cSrcweirLCFIv1:
55cdf0e10cSrcweir    sub     $8,%esp           # padding
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    L_cpp_vtable_call$stub
61cdf0e10cSrcweir    leave
62cdf0e10cSrcweir    ret
63cdf0e10cSrcweirLFEv:
64cdf0e10cSrcweir    .long   .-_privateSnippetExecutorVoid
65cdf0e10cSrcweir
66cdf0e10cSrcweir.align 1, 0x90
67cdf0e10cSrcweir.globl _privateSnippetExecutorHyper
68cdf0e10cSrcweir_privateSnippetExecutorHyper:
69cdf0e10cSrcweirLFBh:
70cdf0e10cSrcweir    movl    %esp,%ecx
71cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
72cdf0e10cSrcweirLCFIh0:
73cdf0e10cSrcweir    movl    %esp,%ebp
74cdf0e10cSrcweirLCFIh1:
75cdf0e10cSrcweir    subl    $0x8,%esp         # 64bit returnValue
76cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
77cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
78cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
79cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
80cdf0e10cSrcweir    call    L_cpp_vtable_call$stub
81cdf0e10cSrcweir    movl    16(%esp),%eax     # 64bit returnValue, lower half
82cdf0e10cSrcweir    movl    20(%esp),%edx     # 64bit returnValue, upper half
83cdf0e10cSrcweir    leave
84cdf0e10cSrcweir    ret
85cdf0e10cSrcweirLFEh:
86cdf0e10cSrcweir    .long   .-_privateSnippetExecutorHyper
87cdf0e10cSrcweir
88cdf0e10cSrcweir.align 1, 0x90
89cdf0e10cSrcweir.globl _privateSnippetExecutorFloat
90cdf0e10cSrcweir_privateSnippetExecutorFloat:
91cdf0e10cSrcweirLFBf:
92cdf0e10cSrcweir    movl    %esp,%ecx
93cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
94cdf0e10cSrcweirLCFIf0:
95cdf0e10cSrcweir    movl    %esp,%ebp
96cdf0e10cSrcweirLCFIf1:
97cdf0e10cSrcweir    subl    $0x8,%esp         # padding + 32bit returnValue
98cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
99cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
100cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
101cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
102cdf0e10cSrcweir    call    L_cpp_vtable_call$stub
103cdf0e10cSrcweir    flds    16(%esp)          # 32bit returnValue
104cdf0e10cSrcweir    leave
105cdf0e10cSrcweir    ret
106cdf0e10cSrcweirLFEf:
107cdf0e10cSrcweir    .long   .-_privateSnippetExecutorFloat
108cdf0e10cSrcweir
109cdf0e10cSrcweir.align 1, 0x90
110cdf0e10cSrcweir.globl _privateSnippetExecutorDouble
111cdf0e10cSrcweir_privateSnippetExecutorDouble:
112cdf0e10cSrcweirLFBd:
113cdf0e10cSrcweir    movl    %esp,%ecx
114cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
115cdf0e10cSrcweirLCFId0:
116cdf0e10cSrcweir    movl    %esp,%ebp
117cdf0e10cSrcweirLCFId1:
118cdf0e10cSrcweir    subl    $0x8,%esp         # 64bit returnValue
119cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
120cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
121cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
122cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
123cdf0e10cSrcweir    call    L_cpp_vtable_call$stub
124cdf0e10cSrcweir    fldl    16(%esp)          # 64bit returnValue
125cdf0e10cSrcweir    leave
126cdf0e10cSrcweir    ret
127cdf0e10cSrcweirLFEd:
128cdf0e10cSrcweir    .long   .-_privateSnippetExecutorDouble
129cdf0e10cSrcweir
130cdf0e10cSrcweir.align 1, 0x90
131cdf0e10cSrcweir.globl _privateSnippetExecutorClass
132cdf0e10cSrcweir_privateSnippetExecutorClass:
133cdf0e10cSrcweirLFBc:
134cdf0e10cSrcweir    movl    %esp,%ecx
135cdf0e10cSrcweir    pushl   %ebp              # proper stack frame needed for exception handling
136cdf0e10cSrcweirLCFIc0:
137cdf0e10cSrcweir    movl    %esp,%ebp
138cdf0e10cSrcweirLCFIc1:
139cdf0e10cSrcweir    subl    $0x8,%esp         # padding + 32bit returnValue
140cdf0e10cSrcweir    pushl   %esp              # 32bit &returnValue
141cdf0e10cSrcweir    pushl   %ecx              # 32bit pCallStack
142cdf0e10cSrcweir    pushl   %edx              # 32bit nVtableOffset
143cdf0e10cSrcweir    pushl   %eax              # 32bit nFunctionIndex
144cdf0e10cSrcweir    call    L_cpp_vtable_call$stub
145cdf0e10cSrcweir    movl    16(%esp),%eax     # 32bit returnValue
146cdf0e10cSrcweir    leave
147cdf0e10cSrcweir    ret     $4
148cdf0e10cSrcweirLFEc:
149cdf0e10cSrcweir    .long   .-_privateSnippetExecutorClass
150cdf0e10cSrcweir
151cdf0e10cSrcweir    .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
152cdf0e10cSrcweirEH_frame1:
153cdf0e10cSrcweir    .set L$set$frame1,LECIE1-LSCIE1
154cdf0e10cSrcweir    .long   L$set$frame1      # length
155cdf0e10cSrcweirLSCIE1:
156cdf0e10cSrcweir    .long   0                 # CIE_ID
157cdf0e10cSrcweir    .byte   1                 # version
158cdf0e10cSrcweir    .ascii  "zPR\0"           # augmentation
159cdf0e10cSrcweir    .byte   1                 # code_alignment_factor (.uleb128 1)
160cdf0e10cSrcweir    .byte   0x7c              # data_alignment_factor (.sleb128 -4)
161cdf0e10cSrcweir    .byte   8                 # return_address_register
162cdf0e10cSrcweir    .byte   0x6               # augmentation size 7:
163cdf0e10cSrcweir    .byte   0x9b              #  ???
164cdf0e10cSrcweir    .long   L___gxx_personality_v0$non_lazy_ptr-.
165cdf0e10cSrcweir    .byte   0x10
166cdf0e10cSrcweir                              # initial_instructions:
167cdf0e10cSrcweir    .byte   0x0C              #  DW_CFA_def_cfa %esp, 4
168cdf0e10cSrcweir    .byte   5
169cdf0e10cSrcweir    .byte   4
170cdf0e10cSrcweir    .byte   0x88              #  DW_CFA_offset ret, 1
171cdf0e10cSrcweir    .byte   1
172cdf0e10cSrcweir    .align 2
173cdf0e10cSrcweirLECIE1:
174cdf0e10cSrcweir    .globl _privateSnippetExecutorGeneral.eh
175cdf0e10cSrcweir_privateSnippetExecutorGeneral.eh:
176cdf0e10cSrcweirLSFDEg:
177cdf0e10cSrcweir    .set L$set$g1,LEFDEg-LASFDEg
178cdf0e10cSrcweir    .long   L$set$g1          # length
179cdf0e10cSrcweirLASFDEg:
180cdf0e10cSrcweir    .long   LASFDEg-EH_frame1 # CIE_pointer
181cdf0e10cSrcweir    .long   LFBg-.            # initial_location
182cdf0e10cSrcweir    .long   LFEg-LFBg         # address_range
183cdf0e10cSrcweir    .byte   0                 # augmentation size 0
184cdf0e10cSrcweir                              # instructions:
185cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
186cdf0e10cSrcweir    .long   LCFIg0-LFBg
187cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
188cdf0e10cSrcweir    .byte   8
189cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
190cdf0e10cSrcweir    .byte   2
191cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
192cdf0e10cSrcweir    .long   LCFIg1-LCFIg0
193cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
194cdf0e10cSrcweir    .byte   4
195cdf0e10cSrcweir    .align 2
196cdf0e10cSrcweirLEFDEg:
197cdf0e10cSrcweir    .globl _privateSnippetExecutorVoid.eh
198cdf0e10cSrcweir_privateSnippetExecutorVoid.eh:
199cdf0e10cSrcweirLSFDEv:
200cdf0e10cSrcweir    .set L$set$v1,LEFDEv-LASFDEv
201cdf0e10cSrcweir    .long   L$set$v1          # length
202cdf0e10cSrcweirLASFDEv:
203cdf0e10cSrcweir    .long   LASFDEv-EH_frame1 # CIE_pointer
204cdf0e10cSrcweir    .long   LFBv-.            # initial_location
205cdf0e10cSrcweir    .long   LFEv-LFBv         # address_range
206cdf0e10cSrcweir    .byte   0                 # augmentation size 0
207cdf0e10cSrcweir                              # instructions:
208cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
209cdf0e10cSrcweir    .long   LCFIv0-LFBv
210cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
211cdf0e10cSrcweir    .byte   8
212cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
213cdf0e10cSrcweir    .byte   2
214cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
215cdf0e10cSrcweir    .long   LCFIv1-LCFIv0
216cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
217cdf0e10cSrcweir    .byte   4
218cdf0e10cSrcweir    .align 2
219cdf0e10cSrcweirLEFDEv:
220cdf0e10cSrcweir    .globl _privateSnippetExecutorHyper.eh
221cdf0e10cSrcweir_privateSnippetExecutorHyper.eh:
222cdf0e10cSrcweirLSFDEh:
223cdf0e10cSrcweir    .set L$set$h1,LEFDEh-LASFDEh
224cdf0e10cSrcweir    .long   L$set$h1          # length
225cdf0e10cSrcweirLASFDEh:
226cdf0e10cSrcweir    .long   LASFDEh-EH_frame1 # CIE_pointer
227cdf0e10cSrcweir    .long   LFBh-.            # initial_location
228cdf0e10cSrcweir    .long   LFEh-LFBh         # address_range
229cdf0e10cSrcweir    .byte   0                 # augmentation size 0
230cdf0e10cSrcweir                              # instructions:
231cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
232cdf0e10cSrcweir    .long   LCFIh0-LFBh
233cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
234cdf0e10cSrcweir    .byte   8
235cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
236cdf0e10cSrcweir    .byte   2
237cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
238cdf0e10cSrcweir    .long   LCFIh1-LCFIh0
239cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
240cdf0e10cSrcweir    .byte   4
241cdf0e10cSrcweir    .align 2
242cdf0e10cSrcweirLEFDEh:
243cdf0e10cSrcweir    .globl _privateSnippetExecutorFloat.eh
244cdf0e10cSrcweir_privateSnippetExecutorFloat.eh:
245cdf0e10cSrcweirLSFDEf:
246cdf0e10cSrcweir    .set L$set$f1,LEFDEf-LASFDEf
247cdf0e10cSrcweir    .long   L$set$f1          # length
248cdf0e10cSrcweirLASFDEf:
249cdf0e10cSrcweir    .long   LASFDEf-EH_frame1 # CIE_pointer
250cdf0e10cSrcweir    .long   LFBf-.            # initial_location
251cdf0e10cSrcweir    .long   LFEf-LFBf         # address_range
252cdf0e10cSrcweir    .byte   0                 # augmentation size 0
253cdf0e10cSrcweir                              # instructions:
254cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
255cdf0e10cSrcweir    .long   LCFIf0-LFBf
256cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
257cdf0e10cSrcweir    .byte   8
258cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
259cdf0e10cSrcweir    .byte   2
260cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
261cdf0e10cSrcweir    .long   LCFIf1-LCFIf0
262cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
263cdf0e10cSrcweir    .byte   4
264cdf0e10cSrcweir    .align 2
265cdf0e10cSrcweirLEFDEf:
266cdf0e10cSrcweir    .globl _privateSnippetExecutorDouble.eh
267cdf0e10cSrcweir_privateSnippetExecutorDouble.eh:
268cdf0e10cSrcweirLSFDEd:
269cdf0e10cSrcweir    .set L$set$d1,LEFDEd-LASFDEd
270cdf0e10cSrcweir    .long   L$set$d1          # length
271cdf0e10cSrcweirLASFDEd:
272cdf0e10cSrcweir    .long   LASFDEd-EH_frame1 # CIE_pointer
273cdf0e10cSrcweir    .long   LFBd-.            # initial_location
274cdf0e10cSrcweir    .long   LFEd-LFBd         # address_range
275cdf0e10cSrcweir    .byte   0                 # augmentation size 0
276cdf0e10cSrcweir                              # instructions:
277cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
278cdf0e10cSrcweir    .long   LCFId0-LFBd
279cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
280cdf0e10cSrcweir    .byte   8
281cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
282cdf0e10cSrcweir    .byte   2
283cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
284cdf0e10cSrcweir    .long   LCFId1-LCFId0
285cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
286cdf0e10cSrcweir    .byte   4
287cdf0e10cSrcweir    .align 2
288cdf0e10cSrcweirLEFDEd:
289cdf0e10cSrcweir    .globl _privateSnippetExecutorClass.eh
290cdf0e10cSrcweir_privateSnippetExecutorClass.eh:
291cdf0e10cSrcweirLSFDEc:
292cdf0e10cSrcweir    .set L$set$c1,LEFDEc-LASFDEc
293cdf0e10cSrcweir    .long   L$set$c1          # length
294cdf0e10cSrcweirLASFDEc:
295cdf0e10cSrcweir    .long   LASFDEc-EH_frame1 # CIE_pointer
296cdf0e10cSrcweir    .long   LFBc-.            # initial_location
297cdf0e10cSrcweir    .long   LFEc-LFBc         # address_range
298cdf0e10cSrcweir    .byte   0                 # augmentation size 0
299cdf0e10cSrcweir                              # instructions:
300cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
301cdf0e10cSrcweir    .long   LCFIc0-LFBc
302cdf0e10cSrcweir    .byte   0x0E              #  DW_CFA_def_cfa_offset 8
303cdf0e10cSrcweir    .byte   8
304cdf0e10cSrcweir    .byte   0x84              #  DW_CFA_offset %ebp, 2
305cdf0e10cSrcweir    .byte   2
306cdf0e10cSrcweir    .byte   0x04              #  DW_CFA_advance_loc4
307cdf0e10cSrcweir    .long   LCFIc1-LCFIc0
308cdf0e10cSrcweir    .byte   0x0D              #  DW_CFA_def_cfa_register %ebp
309cdf0e10cSrcweir    .byte   4
310cdf0e10cSrcweir    .align 2
311cdf0e10cSrcweirLEFDEc:
312cdf0e10cSrcweir    .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
313cdf0e10cSrcweirL_cpp_vtable_call$stub:
314cdf0e10cSrcweir    .indirect_symbol _cpp_vtable_call
315cdf0e10cSrcweir    hlt ; hlt ; hlt ; hlt ; hlt
316cdf0e10cSrcweir    .section __IMPORT,__pointers,non_lazy_symbol_pointers
317cdf0e10cSrcweirL___gxx_personality_v0$non_lazy_ptr:
318cdf0e10cSrcweir    .indirect_symbol ___gxx_personality_v0
319cdf0e10cSrcweir    .long 0
320cdf0e10cSrcweir    .constructor
321cdf0e10cSrcweir    .destructor
322cdf0e10cSrcweir    .align 1
323cdf0e10cSrcweir    .subsections_via_symbols
324