[maemo-commits] [maemo-commits] r18936 - in projects/haf/trunk/glib/debian: . patches
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jul 22 12:29:48 EEST 2009
- Previous message: [maemo-commits] r18935 - in projects/haf/trunk/libmatchbox2: . debian matchbox/core matchbox/theme-engines
- Next message: [maemo-commits] r18937 - projects/haf/tags/glib
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: csaavedra
Date: 2009-07-22 12:29:46 +0300 (Wed, 22 Jul 2009)
New Revision: 18936
Modified:
projects/haf/trunk/glib/debian/changelog
projects/haf/trunk/glib/debian/patches/25-gatomic.patch
Log:
glib2.0 (2.20.3-1maemo2) unstable; urgency=low
[ Jussi Laako ]
* Fix ARM atomic operations once more
[ Claudio Saavedra ]
* 25-gatomic.patch: updated
+ Fixes: NB#106135 (glib does not use fast ARMv6+ atomic operations)
-- Claudio Saavedra <csaavedra at igalia.com> Wed, 22 Jul 2009 11:01:54 +0200
Modified: projects/haf/trunk/glib/debian/changelog
===================================================================
--- projects/haf/trunk/glib/debian/changelog 2009-07-22 07:50:51 UTC (rev 18935)
+++ projects/haf/trunk/glib/debian/changelog 2009-07-22 09:29:46 UTC (rev 18936)
@@ -1,3 +1,14 @@
+glib2.0 (2.20.3-1maemo2) unstable; urgency=low
+
+ [ Jussi Laako ]
+ * Fix ARM atomic operations once more
+
+ [ Claudio Saavedra ]
+ * 25-gatomic.patch: updated
+ + Fixes: NB#106135 (glib does not use fast ARMv6+ atomic operations)
+
+ -- Claudio Saavedra <csaavedra at igalia.com> Wed, 22 Jul 2009 11:01:54 +0200
+
glib2.0 (2.20.3-1maemo1) unstable; urgency=low
[ Michael Natterer ]
Modified: projects/haf/trunk/glib/debian/patches/25-gatomic.patch
===================================================================
--- projects/haf/trunk/glib/debian/patches/25-gatomic.patch 2009-07-22 07:50:51 UTC (rev 18935)
+++ projects/haf/trunk/glib/debian/patches/25-gatomic.patch 2009-07-22 09:29:46 UTC (rev 18936)
@@ -1,8 +1,29 @@
-Index: glib-2.20.1/glib/gatomic.c
-===================================================================
---- glib-2.20.1.orig/glib/gatomic.c 2009-06-02 11:04:38.000000000 +0200
-+++ glib-2.20.1/glib/gatomic.c 2009-06-02 12:51:21.000000000 +0200
-@@ -561,6 +561,7 @@ g_atomic_pointer_compare_and_exchange (v
+diff -urN glib2.0-2.20.1-orig/configure.in glib2.0-2.20.1-jl2/configure.in
+--- glib2.0-2.20.1-orig/configure.in 2009-04-01 02:04:20.000000000 +0300
++++ glib2.0-2.20.1-jl2/configure.in 2009-06-30 19:17:14.000000000 +0300
+@@ -2401,9 +2401,15 @@
+ ;;
+ arm*)
+ AC_MSG_RESULT([arm])
+- AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
+- [arm atomic implementation])
+- glib_memory_barrier_needed=no
++ AC_MSG_CHECKING(arm atomic operations type)
++ AC_MSG_RESULT(inline asm)
++ AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 6,
++ [armv6 atomic implementation])
++ glib_memory_barrier_needed=yes
++ dnl AC_MSG_RESULT(kernel helper)
++ dnl AC_DEFINE_UNQUOTED(G_ATOMIC_ARM_LINUX, 1,
++ dnl [special arm linux implementation])
++ dnl glib_memory_barrier_needed=yes
+ ;;
+ crisv32*|etraxfs*)
+ AC_MSG_RESULT([crisv32])
+diff -urN glib2.0-2.20.1-orig/glib/gatomic.c glib2.0-2.20.1-jl2/glib/gatomic.c
+--- glib2.0-2.20.1-orig/glib/gatomic.c 2009-04-01 02:04:20.000000000 +0300
++++ glib2.0-2.20.1-jl2/glib/gatomic.c 2009-06-30 19:26:29.000000000 +0300
+@@ -561,6 +561,7 @@
# error "Your system has an unsupported pointer size"
# endif /* GLIB_SIZEOF_VOID_P */
# elif defined (G_ATOMIC_ARM)
@@ -10,16 +31,14 @@
static volatile int atomic_spin = 0;
static int atomic_spin_trylock (void)
-@@ -651,6 +652,194 @@ g_atomic_pointer_compare_and_exchange (v
+@@ -651,6 +652,217 @@
return result;
}
-+
-+// merge mark
+# else /* G_ATOMIC_ARM < 6 */
+gint
-+g_atomic_int_exchange_and_add (volatile gint *atomic,
-+ gint val)
++g_atomic_int_exchange_and_add (volatile gint *atomic,
++ gint val)
+{
+ unsigned long result;
+ int old, tmp;
@@ -38,7 +57,7 @@
+
+void
+g_atomic_int_add (volatile gint *atomic,
-+ gint val)
++ gint val)
+{
+ unsigned long result;
+ int tmp;
@@ -55,16 +74,16 @@
+}
+
+gboolean
-+g_atomic_int_compare_and_exchange (volatile gint *atomic,
-+ gint oldval,
-+ gint newval)
++g_atomic_int_compare_and_exchange (volatile gint *atomic,
++ gint oldval,
++ gint newval)
+{
+ unsigned long result;
+ int old;
+
+ asm volatile (
+ "ldrex %1, [%2]\n"
-+ "mov %0, #0\n"
++ "mov %0, #1\n"
+ "teq %1, %3\n"
+ "strexeq %0, %4, [%2]\n"
+ : "=&r" (result), "=&r" (old)
@@ -74,16 +93,16 @@
+}
+
+gboolean
-+g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
-+ gpointer oldval,
-+ gpointer newval)
++g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
++ gpointer oldval,
++ gpointer newval)
+{
+ unsigned long result;
+ void *old;
+
+ asm volatile (
+ "ldrex %1, [%2]\n"
-+ "mov %0, #0\n"
++ "mov %0, #1\n"
+ "teq %1, %3\n"
+ "strexeq %0, %4, [%2]\n"
+ : "=&r" (result), "=&r" (old)
@@ -92,15 +111,14 @@
+ return (result) ? FALSE : TRUE;
+}
+
-+
+gint
-+g_atomic_int_get (volatile gint *atomic)
++(g_atomic_int_get) (volatile gint *atomic)
+{
+ return *atomic;
+}
+
+void
-+g_atomic_int_set (volatile gint *atomic,
++(g_atomic_int_set) (volatile gint *atomic,
+ gint newval)
+{
+ unsigned long result;
@@ -116,12 +134,13 @@
+}
+
+gpointer
-+g_atomic_pointer_get (volatile gpointer *atomic)
++(g_atomic_pointer_get) (volatile gpointer *atomic)
+{
+ return *atomic;
-+}
++}
++
+void
-+g_atomic_pointer_set (volatile gpointer *atomic,
++(g_atomic_pointer_set) (volatile gpointer *atomic,
+ gpointer newval)
+{
+ unsigned long result;
@@ -141,15 +160,15 @@
+
+typedef void (_khelper_barrier_t)(void);
+#define _khelper_barrier (*(_khelper_barrier_t *)0xffff0fa0)
-+/*#define G_ATOMIC_MEMORY_BARRIER _khelper_barrier()*/
++#define G_ATOMIC_MEMORY_BARRIER _khelper_barrier()
+/* scratchbox/qemu explodes on barrier */
-+#define G_ATOMIC_MEMORY_BARRIER while(0)
++/*#define G_ATOMIC_MEMORY_BARRIER while(0)*/
+typedef int (_khelper_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
+#define _khelper_cmpxchg (*(_khelper_cmpxchg_t *)0xffff0fc0)
+
+gint
-+g_atomic_int_exchange_and_add (volatile gint *atomic,
-+ gint val)
++g_atomic_int_exchange_and_add (volatile gint *atomic,
++ gint val)
+{
+ int result;
+ int old, new;
@@ -164,7 +183,7 @@
+
+void
+g_atomic_int_add (volatile gint *atomic,
-+ gint val)
++ gint val)
+{
+ int result;
+ int old, new;
@@ -177,9 +196,9 @@
+}
+
+gboolean
-+g_atomic_int_compare_and_exchange (volatile gint *atomic,
-+ gint oldval,
-+ gint newval)
++g_atomic_int_compare_and_exchange (volatile gint *atomic,
++ gint oldval,
++ gint newval)
+{
+ int result;
+
@@ -188,9 +207,9 @@
+}
+
+gboolean
-+g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
-+ gpointer oldval,
-+ gpointer newval)
++g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
++ gpointer oldval,
++ gpointer newval)
+{
+ int result;
+
@@ -200,55 +219,43 @@
+ return (result) ? FALSE : TRUE;
+}
+
-+// merge mark
++gint
++(g_atomic_int_get) (volatile gint *atomic)
++{
++ return *atomic;
++}
+
++void
++(g_atomic_int_set) (volatile gint *atomic,
++ gint newval)
++{
++ while (_khelper_cmpxchg(*atomic, newval, atomic));
++}
++
++gpointer
++(g_atomic_pointer_get) (volatile gpointer *atomic)
++{
++ return *atomic;
++}
++
++void
++(g_atomic_pointer_set) (volatile gpointer *atomic,
++ gpointer newval)
++{
++ while (_khelper_cmpxchg(*((int *) atomic),
++ *((int *) &newval),
++ (int *) atomic));
++}
# elif defined (G_ATOMIC_CRIS) || defined (G_ATOMIC_CRISV32)
# ifdef G_ATOMIC_CRIS
# define CRIS_ATOMIC_INT_CMP_XCHG(atomic, oldval, newval) \
-@@ -954,7 +1143,7 @@ void
+@@ -954,7 +1166,8 @@
g_mutex_unlock (g_atomic_mutex);
}
#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
-#elif defined (G_ATOMIC_OP_MEMORY_BARRIER_NEEDED)
-+#elif (defined(G_ATOMIC_OP_MEMORY_BARRIER_NEEDED) && !defined(G_ATOMIC_ARM))
++#elif (defined (G_ATOMIC_OP_MEMORY_BARRIER_NEEDED) && \
++ !defined(G_ATOMIC_ARM) && !defined(G_ATOMIC_ARM_LINUX))
gint
(g_atomic_int_get) (volatile gint G_GNUC_MAY_ALIAS *atomic)
{
-Index: glib-2.20.1/configure.in
-===================================================================
---- glib-2.20.1.orig/configure.in 2009-06-02 11:04:38.000000000 +0200
-+++ glib-2.20.1/configure.in 2009-06-02 12:51:55.000000000 +0200
-@@ -2401,9 +2401,32 @@ if test x"$GCC" = xyes; then
- ;;
- arm*)
- AC_MSG_RESULT([arm])
-- AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
-+ AC_MSG_CHECKING(arm atomic operations type)
-+ maemo_changes_check=true # MAEMO_CHANGES: inline ARM assembler
-+ if test x$glib_os_linux != xyes || $maemo_changes_check; then
-+ AC_MSG_RESULT(inline asm)
-+ glib_save_CFLAGS=$CFLAGS
-+ AC_MSG_CHECKING(architecture supports ARMv6 instructions)
-+ CFLAGS="$CFLAGS -march=armv6"
-+ AC_TRY_RUN([#include "$srcdir/armv6-test.c"],
-+ [AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 6,
-+ [armv6 atomic implementation])
-+ glib_memory_barrier_needed=yes
-+ add_flags="-march=armv6"
-+ AC_MSG_RESULT(armv6)],
-+ [AC_DEFINE_UNQUOTED(G_ATOMIC_ARM, 1,
- [arm atomic implementation])
- glib_memory_barrier_needed=no
-+ add_flags=""
-+ AC_MSG_RESULT(pre-armv6)])
-+ CFLAGS=$glib_save_CFLAGS
-+ CFLAGS="$CFLAGS $add_flags"
-+ else
-+ AC_MSG_RESULT(kernel helper)
-+ AC_DEFINE_UNQUOTED(G_ATOMIC_ARM_LINUX, 1,
-+ [special arm linux implementation])
-+ glib_memory_barrier_needed=yes
-+ fi
- ;;
- crisv32*|etraxfs*)
- AC_MSG_RESULT([crisv32])
- Previous message: [maemo-commits] r18935 - in projects/haf/trunk/libmatchbox2: . debian matchbox/core matchbox/theme-engines
- Next message: [maemo-commits] r18937 - projects/haf/tags/glib
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
