blob: 577403d68b2efc188b992be546c3877fe4a737c4 [file] [log] [blame]
@
@ 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
@
@ Unless required by applicable law or agreed to in writing,
@ software distributed under the License is distributed on an
@ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@ KIND, either express or implied. See the License for the
@ specific language governing permissions and limitations
@ under the License.
@
@ ARM support code for OpenOffice C++/UNO bridging
@
@ Written by Peter Naulls <peter@chocky.org>
@ Modified by Caolan McNamara <caolanm@redhat.com>
@ Fixed by Michael Casadevall <mcasadevall@kubuntu.org>
#ifdef __ARM_EABI__
# define UNWIND
#else
# define UNWIND @
#endif
.file "armhelper.s"
.text
.align 4
.global privateSnippetExecutor
.type privateSnippetExecutor, %function
privateSnippetExecutor:
UNWIND .fnstart @ start of unwinder entry
stmfd sp!, {r0-r3} @ follow other parameters on stack
UNWIND .pad #16 @ throw this data away on exception
mov r0, ip @ r0 points to functionoffset/vtable
mov r1, sp @ r1 points to this and params
@ (see cppuno.cxx:codeSnippet())
stmfd sp!, {r4,lr} @ save return address
@ (r4 pushed to preserve stack alignment)
UNWIND .save {r4,lr} @ restore these regs on exception
bl cpp_vtable_call(PLT)
add sp, sp, #4 @ no need to restore r4 (we didn't touch it)
ldr pc, [sp], #20 @ return, discarding function arguments
UNWIND .fnend @ end of unwinder entry
.size privateSnippetExecutor, . - privateSnippetExecutor
.section .note.GNU-stack,"",%progbits