diff options
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s')
-rw-r--r-- | bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s new file mode 100644 index 000000000000..8fd1a38e4f51 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s @@ -0,0 +1,22 @@ +@ ARM support code for OpenOffice C++/UNO bridging +@ +@ Written by Peter Naulls <peter@chocky.org> +@ Modified by Caolan McNamara <caolanm@redhat.com> + .file "armhelper.s" + .text + .align 4 + .global privateSnippetExecutor + .type privateSnippetExecutor, %function +privateSnippetExecutor: + stmfd sp!, {r0-r3} @ follow other parameters on stack + mov r0, ip @ r0 points to functionoffset/vtable + mov ip, sp @ fix up the ip + stmfd sp!, {fp,ip,lr,pc} @ 8 x 4 => stack remains 8 aligned + sub fp, ip, #4 @ set frame pointer + + add r1, sp, #16 @ r1 points to this and params + bl cpp_vtable_call(PLT) + + add sp, sp, #32 @ restore stack + ldr fp, [sp, #-32] @ restore frame pointer + ldr pc, [sp, #-24] @ return |