summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/gcc3_linux_ia64/call.s
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/gcc3_linux_ia64/call.s')
-rw-r--r--bridges/source/cpp_uno/gcc3_linux_ia64/call.s20
1 files changed, 20 insertions, 0 deletions
diff --git a/bridges/source/cpp_uno/gcc3_linux_ia64/call.s b/bridges/source/cpp_uno/gcc3_linux_ia64/call.s
new file mode 100644
index 000000000000..8073127da3e3
--- /dev/null
+++ b/bridges/source/cpp_uno/gcc3_linux_ia64/call.s
@@ -0,0 +1,20 @@
+/* ia64 support code for OpenOffice C++/UNO bridging
+ *
+ * Caolan McNamara <caolanm@redhat.com>
+ */
+ .text
+ .align 16
+ .global privateSnippetExecutor#
+ .proc privateSnippetExecutor#
+privateSnippetExecutor:
+ adds r15 = 8, gp /* r15 now points to real gp value*/
+ ;;
+ ld8 r14 = [gp] /* load nOffsetAndIndex into a handy register */
+ ld8 gp = [r15] /* load real gp value into gp */
+ ;;
+ /* store the address where large structs are "returned" into a handy register */
+ mov r15 = r8
+ ;;
+ br cpp_vtable_call# /* call cpp_vtable_call which'll suck out r14 */
+ ;;
+ .endp privateSnippetExecutor#