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