2004-06-25 01:09:55 +02:00
|
|
|
$NetBSD: patch-ad,v 1.3 2004/06/24 23:09:55 taya Exp $
|
2004-04-20 01:25:27 +02:00
|
|
|
|
|
|
|
diff -ru ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp
|
|
|
|
--- ../Orig/mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp 2001-09-29 05:12:51.000000000 +0900
|
2004-06-25 01:09:55 +02:00
|
|
|
+++ ./xpcom/reflect/xptcall/src/md/unix/xptcinvoke_netbsd_m68k.cpp 2004-06-15 23:55:46.000000000 +0900
|
2004-04-20 01:25:27 +02:00
|
|
|
@@ -132,6 +132,15 @@
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * SYMBOL PREFIX must be "_" for aout symbols and "" for ELF
|
|
|
|
+ */
|
|
|
|
+#ifndef __ELF__
|
|
|
|
+#define SYMBOLPREFIX "_"
|
|
|
|
+#else
|
|
|
|
+#define SYMBOLPREFIX
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
XPTC_PUBLIC_API(nsresult)
|
|
|
|
XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
|
|
|
|
PRUint32 paramCount, nsXPTCVariant* params)
|
|
|
|
@@ -139,30 +148,30 @@
|
|
|
|
PRUint32 result;
|
|
|
|
|
|
|
|
__asm__ __volatile__(
|
|
|
|
- "movl %4, sp@-\n\t"
|
|
|
|
- "movl %3, sp@-\n\t"
|
|
|
|
- "jbsr _invoke_count_words\n\t" /* count words */
|
|
|
|
- "addql #8, sp\n\t"
|
|
|
|
- "lsll #2, d0\n\t" /* *= 4 */
|
|
|
|
- "movl sp, a2\n\t" /* save original sp */
|
|
|
|
- "subl d0, sp\n\t" /* make room for params */
|
|
|
|
- "movl sp, a0\n\t"
|
|
|
|
- "movl %4, sp@-\n\t"
|
|
|
|
- "movl %3, sp@-\n\t"
|
|
|
|
- "movl a0, sp@-\n\t"
|
|
|
|
- "jbsr _invoke_copy_to_stack\n\t" /* copy params */
|
|
|
|
- "addl #12, sp\n\t"
|
|
|
|
- "movl %1, a0\n\t"
|
|
|
|
- "movl a0@, a1\n\t"
|
|
|
|
- "movl %2, d0\n\t" /* function index */
|
|
|
|
- "movl a0, d1\n\t"
|
|
|
|
- "movw a1@(8,d0:l:8), a0\n\t"
|
|
|
|
- "addl a0, d1\n\t"
|
|
|
|
- "movl a1@(12,d0:l:8), a1\n\t"
|
|
|
|
- "movl d1, sp@-\n\t"
|
|
|
|
- "jbsr a1@\n\t"
|
|
|
|
- "movl a2, sp\n\t" /* restore original sp */
|
|
|
|
- "movl d0, %0\n\t"
|
|
|
|
+ "movl %4, %%sp@-\n\t"
|
|
|
|
+ "movl %3, %%sp@-\n\t"
|
|
|
|
+ "jbsr "SYMBOLPREFIX"invoke_count_words\n\t" /* count words */
|
|
|
|
+ "addql #8, %%sp\n\t"
|
|
|
|
+ "lsll #2, %%d0\n\t" /* *= 4 */
|
|
|
|
+ "movl %%sp, %%a2\n\t" /* save original sp */
|
|
|
|
+ "subl %%d0, %%sp\n\t" /* make room for params */
|
|
|
|
+ "movl %%sp, %%a0\n\t"
|
|
|
|
+ "movl %4, %%sp@-\n\t"
|
|
|
|
+ "movl %3, %%sp@-\n\t"
|
|
|
|
+ "movl %%a0, %%sp@-\n\t"
|
|
|
|
+ "jbsr "SYMBOLPREFIX"invoke_copy_to_stack\n\t" /* copy params */
|
|
|
|
+ "addl #12, %%sp\n\t"
|
|
|
|
+ "movl %1, %%a0\n\t"
|
|
|
|
+ "movl %%a0@, %%a1\n\t"
|
|
|
|
+ "movl %2, %%d0\n\t" /* function index */
|
|
|
|
+ "movl %%a0, %%d1\n\t"
|
|
|
|
+ "movw %%a1@(8,%%d0:l:8), %%a0\n\t"
|
|
|
|
+ "addl %%a0, %%d1\n\t"
|
|
|
|
+ "movl %%a1@(12,%%d0:l:8), %%a1\n\t"
|
|
|
|
+ "movl %%d1, %%sp@-\n\t"
|
|
|
|
+ "jbsr %%a1@\n\t"
|
|
|
|
+ "movl %%a2, %%sp\n\t" /* restore original sp */
|
|
|
|
+ "movl %%d0, %0\n\t"
|
|
|
|
: "=g" (result) /* %0 */
|
|
|
|
: "g" (that), /* %1 */
|
|
|
|
"g" (methodIndex), /* %2 */
|