Author: wade
Date: 2006-10-05 15:58:34 -0400 (Thu, 05 Oct 2006)
New Revision: 66310

Modified:
   branches/mono-1-1-13/mono/mono/io-layer/ChangeLog
   branches/mono-1-1-13/mono/mono/io-layer/atomic.h
   branches/mono-1-1-13/mono/mono/utils/ChangeLog
   branches/mono-1-1-13/mono/mono/utils/mono-compiler.h
Log:

       * Pull in changes from HEAD: r61761

       2006-10-05 Neale Ferguson <[EMAIL PROTECTED]>
       * atomic.h: More tinkering with 
InterlockedExchange/InterlockedCompareExchange
       for s390/s390x.

       * Pull in changes from HEAD: r63578

       2006-08-10  Zoltan Varga  <[EMAIL PROTECTED]>
       * mono-compiler.h: Fix TLS definitions so libmono can be loaded 
dynamically as a
       module. Fixes #78767.



Modified: branches/mono-1-1-13/mono/mono/io-layer/ChangeLog
===================================================================
--- branches/mono-1-1-13/mono/mono/io-layer/ChangeLog   2006-10-05 19:35:34 UTC 
(rev 66309)
+++ branches/mono-1-1-13/mono/mono/io-layer/ChangeLog   2006-10-05 19:58:34 UTC 
(rev 66310)
@@ -1,3 +1,11 @@
+2006-10-05 Wade Berrier <[EMAIL PROTECTED]>
+
+       * Pull in changes from HEAD: r61761
+
+       2006-10-05 Neale Ferguson <[EMAIL PROTECTED]>
+       * atomic.h: More tinkering with 
InterlockedExchange/InterlockedCompareExchange
+       for s390/s390x.
+
 2006-07-17  Dick Porter  <[EMAIL PROTECTED]>
 
        * processes.c (CreateProcess): Don't change directory unless a new

Modified: branches/mono-1-1-13/mono/mono/io-layer/atomic.h
===================================================================
--- branches/mono-1-1-13/mono/mono/io-layer/atomic.h    2006-10-05 19:35:34 UTC 
(rev 66309)
+++ branches/mono-1-1-13/mono/mono/io-layer/atomic.h    2006-10-05 19:58:34 UTC 
(rev 66310)
@@ -286,12 +286,8 @@
        gint32 old;
 
        __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tL\t%1,%0\n"
-                             "\tCR\t%1,%3\n"
-                             "\tJNE\t1f\n"
+                             "\tLR\t%1,%3\n"
                              "\tCS\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b\n"
-                             "1:\n"
                              : "+m" (*dest), "=r" (old)
                              : "r" (exch), "r" (comp)
                              : "1", "cc");     
@@ -306,12 +302,8 @@
        gpointer old;
 
        __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tL\t%1,%0\n"
-                             "\tCR\t%1,%3\n"
-                             "\tJNE\t1f\n"
+                             "\tLR\t%1,%3\n"
                              "\tCS\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b\n"
-                             "1:\n"
                              : "+m" (*dest), "=r" (old)
                              : "r" (exch), "r" (comp)
                              : "1", "cc");     
@@ -326,11 +318,11 @@
        gpointer old;
 
        __asm__ __volatile__ ("\tLA\t1,%0\n"
-                               "\tLGR\t%1,%3\n"
-                               "\tCSG\t%1,%2,0(1)\n"
-                               : "+m" (*dest), "=r" (old)
-                               : "r" (exch), "r" (comp)
-                               : "1", "cc");
+                             "\tLGR\t%1,%3\n"
+                             "\tCSG\t%1,%2,0(1)\n"
+                             : "+m" (*dest), "=r" (old)
+                             : "r" (exch), "r" (comp)
+                             : "1", "cc");
 
        return(old);
 }

Modified: branches/mono-1-1-13/mono/mono/utils/ChangeLog
===================================================================
--- branches/mono-1-1-13/mono/mono/utils/ChangeLog      2006-10-05 19:35:34 UTC 
(rev 66309)
+++ branches/mono-1-1-13/mono/mono/utils/ChangeLog      2006-10-05 19:58:34 UTC 
(rev 66310)
@@ -1,3 +1,11 @@
+2006-10-05  Wade Berrier <[EMAIL PROTECTED]>
+
+       * Pull in changes from HEAD: r63578
+
+       2006-08-10  Zoltan Varga  <[EMAIL PROTECTED]>
+       * mono-compiler.h: Fix TLS definitions so libmono can be loaded 
dynamically as a
+       module. Fixes #78767.
+
 2006-01-04  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * mono-codeman.c (new_codechunk): Fix warnings.

Modified: branches/mono-1-1-13/mono/mono/utils/mono-compiler.h
===================================================================
--- branches/mono-1-1-13/mono/mono/utils/mono-compiler.h        2006-10-05 
19:35:34 UTC (rev 66309)
+++ branches/mono-1-1-13/mono/mono/utils/mono-compiler.h        2006-10-05 
19:58:34 UTC (rev 66310)
@@ -9,12 +9,26 @@
 #ifdef HAVE_KW_THREAD
 #if HAVE_TLS_MODEL_ATTR
 
+/* 
+ * Define this if you want a faster libmono, which cannot be loaded 
dynamically as a 
+ * module.
+ */
+//#define PIC_INITIAL_EXEC
+
 #if defined (__powerpc__)
 #define MONO_TLS_FAST
 #elif defined(PIC)
+
+#ifdef PIC_INITIAL_EXEC
 #define MONO_TLS_FAST __attribute__((tls_model("initial-exec")))
 #else
+#define MONO_TLS_FAST __attribute__((tls_model("local-dynamic")))
+#endif
+
+#else
+
 #define MONO_TLS_FAST __attribute__((tls_model("local-exec")))
+
 #endif
 
 #else
@@ -29,6 +43,7 @@
 #endif
 #elif defined(__x86_64__)
 #if defined(PIC)
+// This only works if libmono is linked into the application
 #define MONO_THREAD_VAR_OFFSET(var,offset) do { guint64 foo;  __asm ("movq " 
#var "@GOTTPOFF(%%rip), %0" : "=r" (foo)); offset = foo; } while (0)
 #else
 #define MONO_THREAD_VAR_OFFSET(var,offset) do { guint64 foo;  __asm ("movq $" 
#var "@TPOFF, %0" : "=r" (foo)); offset = foo; } while (0)
@@ -39,6 +54,15 @@
 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
 #endif
 
+#if defined(PIC) && !defined(PIC_INITIAL_EXEC)
+/* 
+ * The above definitions do not seem to work if libmono is loaded dynamically 
as a module.
+ * See bug #78767.
+ */
+#undef MONO_THREAD_VAR_OFFSET
+#define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1
+#endif
+
 #else /* no HAVE_KW_THREAD */
 
 #define MONO_THREAD_VAR_OFFSET(var,offset) (offset) = -1

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to