308 lines
10 KiB
ArmAsm
308 lines
10 KiB
ArmAsm
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
.text
|
|
|
|
.globl privateSnippetExecutorGeneral
|
|
.type privateSnippetExecutorGeneral,@function
|
|
privateSnippetExecutorGeneral:
|
|
.LFBg:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFIg0:
|
|
movl %esp,%ebp
|
|
.LCFIg1:
|
|
subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
|
|
# stack alignment
|
|
pushl %esp # 32bit &returnValue
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
movl 16(%esp),%eax # 32bit returnValue
|
|
leave
|
|
ret
|
|
.LFEg:
|
|
.size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral
|
|
|
|
.globl privateSnippetExecutorVoid
|
|
.type privateSnippetExecutorVoid,@function
|
|
privateSnippetExecutorVoid:
|
|
.LFBv:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFIv0:
|
|
movl %esp,%ebp
|
|
.LCFIv1:
|
|
andl $0xFFFFFFF0,%esp # preserve potential 128bit stack alignment
|
|
pushl $0 # 32bit null pointer (returnValue not used)
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
leave
|
|
ret
|
|
.LFEv:
|
|
.size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid
|
|
|
|
.globl privateSnippetExecutorHyper
|
|
.type privateSnippetExecutorHyper,@function
|
|
privateSnippetExecutorHyper:
|
|
.LFBh:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFIh0:
|
|
movl %esp,%ebp
|
|
.LCFIh1:
|
|
subl $0x8,%esp # 64bit returnValue (preserves potential 128bit
|
|
# stack alignment)
|
|
pushl %esp # 32bit &returnValue
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
movl 16(%esp),%eax # 64bit returnValue, lower half
|
|
movl 20(%esp),%edx # 64bit returnValue, upper half
|
|
leave
|
|
ret
|
|
.LFEh:
|
|
.size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper
|
|
|
|
.globl privateSnippetExecutorFloat
|
|
.type privateSnippetExecutorFloat,@function
|
|
privateSnippetExecutorFloat:
|
|
.LFBf:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFIf0:
|
|
movl %esp,%ebp
|
|
.LCFIf1:
|
|
subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
|
|
# stack alignment
|
|
pushl %esp # 32bit &returnValue
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
flds 16(%esp) # 32bit returnValue
|
|
leave
|
|
ret
|
|
.LFEf:
|
|
.size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat
|
|
|
|
.globl privateSnippetExecutorDouble
|
|
.type privateSnippetExecutorDouble,@function
|
|
privateSnippetExecutorDouble:
|
|
.LFBd:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFId0:
|
|
movl %esp,%ebp
|
|
.LCFId1:
|
|
subl $0x8,%esp # 64bit returnValue (preserves potential 128bit
|
|
# stack alignment)
|
|
pushl %esp # 32bit &returnValue
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
fldl 16(%esp) # 64bit returnValue
|
|
leave
|
|
ret
|
|
.LFEd:
|
|
.size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble
|
|
|
|
.globl privateSnippetExecutorClass
|
|
.type privateSnippetExecutorClass,@function
|
|
privateSnippetExecutorClass:
|
|
.LFBc:
|
|
movl %esp,%ecx
|
|
pushl %ebp # proper stack frame needed for exception handling
|
|
.LCFIc0:
|
|
movl %esp,%ebp
|
|
.LCFIc1:
|
|
subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit
|
|
# stack alignment
|
|
pushl %esp # 32bit &returnValue
|
|
pushl %ecx # 32bit pCallStack
|
|
pushl %edx # 32bit nVtableOffset
|
|
pushl %eax # 32bit nFunctionIndex
|
|
call cpp_vtable_call
|
|
movl 16(%esp),%eax # 32bit returnValue
|
|
leave
|
|
ret $4
|
|
.LFEc:
|
|
.size privateSnippetExecutorClass,.-privateSnippetExecutorClass
|
|
|
|
.section .eh_frame,"a",@progbits
|
|
.Lframe1:
|
|
.long .LECIE1-.LSCIE1 # length
|
|
.LSCIE1:
|
|
.long 0 # CIE_ID
|
|
.byte 1 # version
|
|
.string "zR" # augmentation
|
|
.uleb128 1 # code_alignment_factor
|
|
.sleb128 -4 # data_alignment_factor
|
|
.byte 8 # return_address_register
|
|
.uleb128 1 # augmentation size 1:
|
|
.byte 0x1B # FDE Encoding (pcrel sdata4)
|
|
# initial_instructions:
|
|
.byte 0x0C # DW_CFA_def_cfa %esp, 4
|
|
.uleb128 4
|
|
.uleb128 4
|
|
.byte 0x88 # DW_CFA_offset ret, 1
|
|
.uleb128 1
|
|
.align 4
|
|
.LECIE1:
|
|
.LSFDEg:
|
|
.long .LEFDEg-.LASFDEg # length
|
|
.LASFDEg:
|
|
.long .LASFDEg-.Lframe1 # CIE_pointer
|
|
.long .LFBg-. # initial_location
|
|
.long .LFEg-.LFBg # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIg0-.LFBg
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIg1-.LCFIg0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEg:
|
|
.LSFDEv:
|
|
.long .LEFDEv-.LASFDEv # length
|
|
.LASFDEv:
|
|
.long .LASFDEv-.Lframe1 # CIE_pointer
|
|
.long .LFBv-. # initial_location
|
|
.long .LFEv-.LFBv # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIv0-.LFBv
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIv1-.LCFIv0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEv:
|
|
.LSFDEh:
|
|
.long .LEFDEh-.LASFDEh # length
|
|
.LASFDEh:
|
|
.long .LASFDEh-.Lframe1 # CIE_pointer
|
|
.long .LFBh-. # initial_location
|
|
.long .LFEh-.LFBh # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIh0-.LFBh
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIh1-.LCFIh0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEh:
|
|
.LSFDEf:
|
|
.long .LEFDEf-.LASFDEf # length
|
|
.LASFDEf:
|
|
.long .LASFDEf-.Lframe1 # CIE_pointer
|
|
.long .LFBf-. # initial_location
|
|
.long .LFEf-.LFBf # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIf0-.LFBf
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIf1-.LCFIf0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEf:
|
|
.LSFDEd:
|
|
.long .LEFDEd-.LASFDEd # length
|
|
.LASFDEd:
|
|
.long .LASFDEd-.Lframe1 # CIE_pointer
|
|
.long .LFBd-. # initial_location
|
|
.long .LFEd-.LFBd # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFId0-.LFBd
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFId1-.LCFId0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEd:
|
|
.LSFDEc:
|
|
.long .LEFDEc-.LASFDEc # length
|
|
.LASFDEc:
|
|
.long .LASFDEc-.Lframe1 # CIE_pointer
|
|
.long .LFBc-. # initial_location
|
|
.long .LFEc-.LFBc # address_range
|
|
.uleb128 0 # augmentation size 0
|
|
# instructions:
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIc0-.LFBc
|
|
.byte 0x0E # DW_CFA_def_cfa_offset 8
|
|
.uleb128 8
|
|
.byte 0x85 # DW_CFA_offset %ebp, 2
|
|
.uleb128 2
|
|
.byte 0x04 # DW_CFA_advance_loc4
|
|
.long .LCFIc1-.LCFIc0
|
|
.byte 0x0D # DW_CFA_def_cfa_register %ebp
|
|
.uleb128 5
|
|
.align 4
|
|
.LEFDEc:
|
|
.section .note.GNU-stack,"",@progbits
|
|
.section .note.gnu.property,"a"
|
|
.p2align 2
|
|
.long 1f - 0f
|
|
.long 4f - 1f
|
|
.long 5
|
|
0:
|
|
.string "GNU"
|
|
1:
|
|
.p2align 2
|
|
.long 0xc0000002
|
|
.long 3f - 2f
|
|
2:
|
|
.long 0x3
|
|
3:
|
|
.p2align 2
|
|
4:
|