ports/lang/mosh/files/patch-fix-sparc64
2015-09-09 18:00:10 +00:00

84 lines
3.4 KiB
Text

--- extlibs/gc-cvs/gc_misc.c.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/gc_misc.c
@@ -1619,7 +1619,7 @@ STATIC void GC_do_blocking_inner(ptr_t d
struct blocking_data * d = (struct blocking_data *) data;
GC_ASSERT(GC_is_initialized);
GC_ASSERT(GC_blocked_sp == NULL);
-# ifdef SPARC
+# if defined(SPARC) && !defined(__FreeBSD__)
GC_blocked_sp = GC_save_regs_in_stack();
# else
GC_blocked_sp = (ptr_t) &d; /* save approx. sp */
--- extlibs/gc-cvs/include/gc_config_macros.h.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/include/gc_config_macros.h
@@ -84,7 +84,7 @@
# if defined(__mips) && !defined(__linux__)
# define GC_IRIX_THREADS
# endif
-# if defined(__sparc) && !defined(__linux__) \
+# if defined(__sparc) && !defined(__linux__) && !defined(__FreeBSD__) \
|| defined(sun) && (defined(i386) || defined(__i386__) \
|| defined(__amd64__))
# define GC_SOLARIS_THREADS
--- extlibs/gc-cvs/include/private/gcconfig.h.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/include/private/gcconfig.h
@@ -2568,7 +2568,7 @@
# endif
#endif /* !GC_WORD_C */
-#if defined(SPARC)
+#if defined(SPARC) && !defined(__FreeBSD__)
# define ASM_CLEAR_CODE /* Stack clearing is crucial, and we */
/* include assembly code to do it well. */
#endif
--- extlibs/gc-cvs/mach_dep.c.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/mach_dep.c
@@ -228,7 +228,7 @@ GC_INNER void GC_with_callee_saves_pushe
# endif
# endif
context = &ctxt;
-# if defined(SPARC) || defined(IA64)
+# if (defined(SPARC) && !defined(__FreeBSD__)) || defined(IA64)
/* On a register window machine, we need to save register */
/* contents on the stack for this to work. This may already be */
/* subsumed by the getcontext() call. */
--- extlibs/gc-cvs/pthread_stop_world.c.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/pthread_stop_world.c
@@ -226,7 +226,7 @@ STATIC void GC_suspend_handler_inner(ptr
RESTORE_CANCEL(cancel_state);
return;
}
-# ifdef SPARC
+# if defined(SPARC) && !defined(__FreeBSD__)
me -> stop_info.stack_ptr = GC_save_regs_in_stack();
# else
me -> stop_info.stack_ptr = (ptr_t)(&me);
@@ -322,7 +322,7 @@ GC_INNER void GC_push_all_stacks(void)
++nthreads;
if (THREAD_EQUAL(p -> id, self)) {
GC_ASSERT(!p->thread_blocked);
-# ifdef SPARC
+# if defined(SPARC) && !defined(__FreeBSD__)
lo = (ptr_t)GC_save_regs_in_stack();
# else
lo = GC_approx_sp();
--- extlibs/gc-cvs/pthread_support.c.orig 2011-06-04 00:48:10 UTC
+++ extlibs/gc-cvs/pthread_support.c
@@ -1058,7 +1058,7 @@ GC_INNER void GC_do_blocking_inner(ptr_t
{
struct blocking_data * d = (struct blocking_data *) data;
GC_thread me;
-# if defined(SPARC) || defined(IA64)
+# if (defined(SPARC) && !defined(__FreeBSD__)) || defined(IA64)
ptr_t stack_ptr = GC_save_regs_in_stack();
# endif
# if defined(GC_DARWIN_THREADS) && !defined(DARWIN_DONT_PARSE_STACK)
@@ -1069,7 +1069,7 @@ GC_INNER void GC_do_blocking_inner(ptr_t
LOCK();
me = GC_lookup_thread(pthread_self());
GC_ASSERT(!(me -> thread_blocked));
-# ifdef SPARC
+# if defined(SPARC) && !defined(__FreeBSD__)
me -> stop_info.stack_ptr = stack_ptr;
# else
me -> stop_info.stack_ptr = GC_approx_sp();