@ @ 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 @ Modified by Caolan McNamara @ Fixed by Michael Casadevall #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