Bug#155245: SuperH mutex support
Package: db3
Version: 3.2.9-16
Severity: wishlist
Tags: patch
Hi,
I'm one of the Debian/sh porters (see http://debian.dodes.org/sh).
This report is Cc:-ed to debian-superh@lists.debian.org.
Could you please include this patch in the package to enable SuperH
specific mutex code?
diff -urN db-3.2.9/dist/acconfig.h db-3.2.9.new/dist/acconfig.h
--- db-3.2.9/dist/acconfig.h Sun Jun 23 16:34:28 2002
+++ db-3.2.9.new/dist/acconfig.h Sun Jun 23 16:27:57 2002
@@ -42,6 +42,7 @@
#undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY
#undef HAVE_MUTEX_SEMA_INIT
#undef HAVE_MUTEX_SGI_INIT_LOCK
+#undef HAVE_MUTEX_SH_GCC_ASSEMBLY
#undef HAVE_MUTEX_SOLARIS_LOCK_TRY
#undef HAVE_MUTEX_SOLARIS_LWP
#undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
diff -urN db-3.2.9/dist/aclocal/mutex.m4 db-3.2.9.new/dist/aclocal/mutex.m4
--- db-3.2.9/dist/aclocal/mutex.m4 Sun Jun 23 16:34:28 2002
+++ db-3.2.9.new/dist/aclocal/mutex.m4 Sun Jun 23 16:29:14 2002
@@ -288,6 +288,18 @@
}], [db_cv_mutex="s390/gcc-assembly"])
fi
+dnl sh/gcc: Linux
+if test "$db_cv_mutex" = no; then
+AC_TRY_RUN([main(){
+#if defined(__sh__)
+#if defined(__GNUC__)
+ exit(0);
+#endif
+#endif
+ exit(1);
+}], [db_cv_mutex="sh/gcc-assembly"])
+fi
+
dnl Sparc/gcc: SunOS, Solaris
dnl The sparc/gcc code doesn't always work, specifically, I've seen assembler
dnl failures from the stbar instruction on SunOS 4.1.4/sun4c and gcc 2.7.2.2.
@@ -386,6 +398,8 @@
AC_DEFINE(HAVE_MUTEX_SCO_X86_CC_ASSEMBLY);;
SGI/init_lock) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
AC_DEFINE(HAVE_MUTEX_SGI_INIT_LOCK);;
+sh/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+ AC_DEFINE(HAVE_MUTEX_SH_GCC_ASSEMBLY);;
Solaris/_lock_try) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
AC_DEFINE(HAVE_MUTEX_SOLARIS_LOCK_TRY);;
Solaris/lwp) ADDITIONAL_OBJS="mut_pthread${o} $ADDITIONAL_OBJS"
diff -urN db-3.2.9/dist/config.hin db-3.2.9.new/dist/config.hin
--- db-3.2.9/dist/config.hin Sun Jun 23 16:34:28 2002
+++ db-3.2.9.new/dist/config.hin Sun Jun 23 16:29:35 2002
@@ -71,6 +71,7 @@
#undef HAVE_MUTEX_SCO_X86_CC_ASSEMBLY
#undef HAVE_MUTEX_SEMA_INIT
#undef HAVE_MUTEX_SGI_INIT_LOCK
+#undef HAVE_MUTEX_SH_GCC_ASSEMBLY
#undef HAVE_MUTEX_SOLARIS_LOCK_TRY
#undef HAVE_MUTEX_SOLARIS_LWP
#undef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
diff -urN db-3.2.9/include/mutex.h db-3.2.9.new/include/mutex.h
--- db-3.2.9/include/mutex.h Sun Jun 23 16:34:28 2002
+++ db-3.2.9.new/include/mutex.h Sun Jun 23 16:33:38 2002
@@ -563,6 +563,32 @@
#endif
/*********************************************************************
+ * SuperH/gcc assembly.
+ *********************************************************************/
+#ifdef HAVE_MUTEX_SH_GCC_ASSEMBLY
+typedef unsigned char tsl_t;
+
+#ifdef LOAD_ACTUAL_MUTEX_CODE
+/*
+ * For gcc/sh, 0 is clear, 1 is set.
+ */
+#define MUTEX_SET(tsl) ({ \
+ register tsl_t *__l = (tsl); \
+ int __r; \
+ asm volatile("tas.b %1\n\t" \
+ "movt %0" \
+ : "=r" (__r), "=m" (*__l) \
+ : "1" (*__l) \
+ : "t"); \
+ (__r & 1) == 0; \
+})
+
+#define MUTEX_UNSET(tsl) (*(tsl) = 0)
+#define MUTEX_INIT(tsl) MUTEX_UNSET(tsl)
+#endif
+#endif
+
+/*********************************************************************
* Sparc/gcc assembly.
*********************************************************************/
#ifdef HAVE_MUTEX_SPARC_GCC_ASSEMBLY
Regards,
--
YAEGASHI Takeshi <t@keshi.org> <takeshi@yaegashi.jp> <yaegashi@dodes.org>
Reply to: