-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Varga Zoltan wrote:

|                              Hi,
|
|   Sparc/linux is not yet supported as a JIT platform at the
| moment.
| Somebody who has access to such a configuration needs to
| cook up a patch.

Attached is one.  Note, Solaris and Linux seem to do something
differently w.r.t. ucontext.  Therefore, exception handling is probably
very, very broken.

Mark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFArjj0Ofj2Ja/u/oARAgEbAKCaloUI9oXi2rKYSNSDQV6kks2XaQCggWTd
nXZWm7uD3oR4myAcxNLKpSE=
=P7hU
-----END PGP SIGNATURE-----
? _tmpinst
? diff
? tmpinst-dir.stamp
? mono/arch/sparc/.libs
? mono/arch/sparc/libmonoarch-sparc.la
? mono/arch/sparc/tramp.lo
? mono/mini/log
Index: configure.in
===================================================================
RCS file: /cvs/public/mono/configure.in,v
retrieving revision 1.247
diff -u -r1.247 configure.in
--- configure.in        20 May 2004 10:26:46 -0000      1.247
+++ configure.in        21 May 2004 16:27:13 -0000
@@ -92,7 +92,7 @@
                platform_win32=no
                CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS 
-D_REENTRANT"
                need_link_unlink=yes
-               libmono_cflags="-D_REENTRANT"
+               libmono_cflags="-D_REENTRANT -DMONO_SOLARIS"
                libgc_threads=pthreads
                ;;
        *-*-darwin*)
Index: mono/mini/exceptions-sparc.c
===================================================================
RCS file: /cvs/public/mono/mono/mini/exceptions-sparc.c,v
retrieving revision 1.17
diff -u -r1.17 exceptions-sparc.c
--- mono/mini/exceptions-sparc.c        18 May 2004 08:27:58 -0000      1.17
+++ mono/mini/exceptions-sparc.c        21 May 2004 16:27:14 -0000
@@ -26,6 +26,10 @@
 #include "mini.h"
 #include "mini-sparc.h"
 
+#ifndef REG_SP
+#define REG_SP REG_O6
+#endif
+
 /*
  * mono_arch_get_restore_context:
  *
@@ -371,7 +375,12 @@
         * under documented under solaris. The code below seems to work under
         * Solaris 9.
         */
+#ifdef MONO_SOLARIS
        g_assert (!ctx->uc_mcontext.gwins);
+#else
+       /* better, but doesn't work all the time.  need to rethink! */
+       g_assert (!ctx->uc_mcontext.gregs);
+#endif
 
        mctx.ip = ctx->uc_mcontext.gregs [REG_PC];
        mctx.sp = ctx->uc_mcontext.gregs [REG_SP];
Index: mono/mini/mini-sparc.c
===================================================================
RCS file: /cvs/public/mono/mono/mini/mini-sparc.c,v
retrieving revision 1.36
diff -u -r1.36 mini-sparc.c
--- mono/mini/mini-sparc.c      7 May 2004 13:29:50 -0000       1.36
+++ mono/mini/mini-sparc.c      21 May 2004 16:27:14 -0000
@@ -14,7 +14,11 @@
  */
 #include "mini.h"
 #include <string.h>
+#include <unistd.h>
+
+#ifdef MONO_SOLARIS
 #include <sys/systeminfo.h>
+#endif
 
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
@@ -126,8 +130,21 @@
 
        *exclude_mask = 0;
 
+#ifdef MONO_SOLARIS
        if (!sysinfo (SI_ISALIST, buf, 1024))
                g_assert_not_reached ();
+#else
+       /* From glibc.  If the getpagesize is 8192, we're on sparc64, which
+        * (in)directly implies that we're a v9 or better.
+        * Improvements to this are greatly accepted...
+        * Also, we don't differentiate between v7 and v8.  I sense SIGILL
+        * sniffing in my future.  
+        */
+       if (getpagesize() == 8192)
+               strcpy (buf, "sparcv9");
+       else
+               strcpy (buf, "sparcv8");
+#endif
 
        /* 
         * On some processors, the cmov instructions are even slower than the
Index: mono/tests/tests-config
===================================================================
RCS file: /cvs/public/mono/mono/tests/tests-config,v
retrieving revision 1.1
diff -u -r1.1 tests-config
--- mono/tests/tests-config     31 May 2002 07:51:40 -0000      1.1
+++ mono/tests/tests-config     21 May 2004 16:27:15 -0000
@@ -1,5 +1,5 @@
 <configuration>
-       <dllmap dll="cygwin1.dll" target="libc.so.6" />
-       <dllmap dll="libc" target="libc.so.6" />
+       <dllmap dll="cygwin1.dll" target="libc.so" />
+       <dllmap dll="libc" target="libc.so" />
 </configuration>
 

Reply via email to