Blob Blame History Raw
diff -ur mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in mozilla-xx/xpcom/reflect/xptcall/src/md/unix/Makefile.in
--- mozilla/xpcom/reflect/xptcall/src/md/unix/Makefile.in	2004-04-22 22:50:05.000000000 +0200
+++ mozilla-xx/xpcom/reflect/xptcall/src/md/unix/Makefile.in	2004-12-03 11:19:41.560694658 +0100
@@ -341,10 +341,12 @@
 #
 ifeq ($(OS_ARCH)$(OS_TEST),Linuxs390)
 CPPSRCS		:= xptcinvoke_linux_s390.cpp xptcstubs_linux_s390.cpp
+CXXFLAGS	+= -fno-strict-aliasing -fno-inline -fomit-frame-pointer -mbackchain
 endif
 
 ifeq ($(OS_ARCH)$(OS_TEST),Linuxs390x)
 CPPSRCS		:= xptcinvoke_linux_s390x.cpp xptcstubs_linux_s390x.cpp
+CXXFLAGS	+= -fno-strict-aliasing -fno-inline -fomit-frame-pointer -mbackchain
 endif
 
 
diff -ur mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp	2004-12-03 12:18:27.110694658 +0100
+++ mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390.cpp	2004-12-03 12:27:05.100694658 +0100
@@ -184,8 +184,6 @@
     }
 }
 
-volatile register void* r14 asm("r14");
-
 XPTC_PUBLIC_API(nsresult)
 XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
                    PRUint32 paramCount, nsXPTCVariant* params)
@@ -199,8 +197,6 @@
     PRUint32 overflow = invoke_count_words (paramCount, params);
     PRUint32 result;
 
-    volatile void* sav_r14 = r14;
-
     __asm__ __volatile__
     (
         "lr    7,15\n\t"
@@ -235,10 +231,8 @@
           "a" (invoke_copy_to_stack),
           "a" (that),
           "a" (method)
-        : "2", "3", "4", "5", "6", "7", "memory"
+        : "2", "3", "4", "5", "6", "7", "14", "cc", "memory", "%f0", "%f2"
     );
-
-    r14 = sav_r14;
   
     return result;
 }    
diff -ur mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp	2004-12-03 12:18:27.110694658 +0100
+++ mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_linux_s390x.cpp	2004-12-03 12:26:44.500694658 +0100
@@ -178,8 +178,6 @@
     }
 }
 
-volatile register void* r14 asm("r14");
-
 XPTC_PUBLIC_API(nsresult)
 XPTC_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
                    PRUint32 paramCount, nsXPTCVariant* params)
@@ -193,8 +191,6 @@
     PRUint64 overflow = invoke_count_words (paramCount, params);
     PRUint64 result;
 
-    volatile void* sav_r14 = r14;
-
     __asm__ __volatile__
     (
         "lgr    7,15\n\t"
@@ -231,10 +227,9 @@
           "a" (invoke_copy_to_stack),
           "a" (that),
           "a" (method)
-        : "2", "3", "4", "5", "6", "7", "memory"
+        : "2", "3", "4", "5", "6", "7", "14", "cc", "memory",
+	  "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7"
     );
-
-    r14 = sav_r14;
   
     return result;
 }    
diff -ur mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390.cpp mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390.cpp
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390.cpp	2004-12-03 12:18:27.110694658 +0100
+++ mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390.cpp	2004-12-03 11:16:55.400694658 +0100
@@ -177,7 +177,7 @@
                               \
     __asm__ __volatile__      \
     (                         \
-        "lr    %0,15\n\t"     \
+        "l     %0,0(15)\n\t"  \
         "ahi   %0,96\n\t"     \
         "stm   3,6,0(%3)\n\t" \
         "std   0,%1\n\t"      \
diff -ur mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390x.cpp mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390x.cpp
--- mozilla/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390x.cpp	2004-12-03 12:18:27.110694658 +0100
+++ mozilla-xx/xpcom/reflect/xptcall/src/md/unix/xptcstubs_linux_s390x.cpp	2004-12-03 11:17:16.360694658 +0100
@@ -177,7 +177,7 @@
                               \
     __asm__ __volatile__      \
     (                         \
-        "lgr    %0,15\n\t"    \
+        "lg     %0,0(15)\n\t" \
         "aghi   %0,160\n\t"   \
         "stmg   3,6,0(%5)\n\t"\
         "std    0,%1\n\t"     \