Revised fix for "impossible constraint in asm" - Bug 2971 GCC_SURGE
authorWilliam Roberts <williamr@symbian.org>
Tue, 13 Jul 2010 17:32:46 +0100
branchGCC_SURGE
changeset 42 a16d1cd191f6
parent 39 4393da0c39b5
child 45 4b03adbd26ca
Revised fix for "impossible constraint in asm" - Bug 2971
glib/build/symbian/inc/config.h
glib/glib/gatomic.c
--- a/glib/build/symbian/inc/config.h	Tue Jun 22 22:03:38 2010 +0100
+++ b/glib/build/symbian/inc/config.h	Tue Jul 13 17:32:46 2010 +0100
@@ -69,10 +69,14 @@
 /* #undef G_ATOMIC_ALPHA */
 
 /* arm atomic implementation */
-/* #undef G_ATOMIC_ARM */
+#ifdef __MARM__
+#define G_ATOMIC_ARM 1
+#endif
 
 /* i486 atomic implementation */
+#ifdef __X86__
 #define G_ATOMIC_I486 1
+#endif
 
 /* ia64 atomic implementation */
 /* #undef G_ATOMIC_IA64 */
--- a/glib/glib/gatomic.c	Tue Jun 22 22:03:38 2010 +0100
+++ b/glib/glib/gatomic.c	Tue Jul 13 17:32:46 2010 +0100
@@ -40,44 +40,7 @@
 
 
 #if defined (__GNUC__)
-#define GCC_VERSION (__GNUC__ * 10000 \
-                               + __GNUC_MINOR__ * 100 \
-                               + __GNUC_PATCHLEVEL__)
-
-/* Test for GCC > 4.4.0 */
-# if (GCC_VERSION > 40400)
-
-EXPORT_C gint
-g_atomic_int_exchange_and_add (volatile gint *atomic,
-			       gint           val)
-{
-   return __sync_fetch_and_add(atomic, val);
-}
-
-EXPORT_C void
-g_atomic_int_add (volatile gint *atomic,
-		  gint           val)
-{
-   __sync_fetch_and_add(atomic, val);
-}
-
-EXPORT_C gboolean
-g_atomic_int_compare_and_exchange (volatile gint *atomic,
-				   gint           oldval,
-				   gint           newval)
-{
-  return __sync_val_compare_and_swap(atomic, oldval, newval);
-}
-
-EXPORT_C gboolean
-g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
-				       gpointer           oldval,
-				       gpointer           newval)
-{
-  return __sync_val_compare_and_swap(atomic, oldval, newval);
-}
-
-#elif defined (G_ATOMIC_I486)
+# if defined (G_ATOMIC_I486)
 /* Adapted from CVS version 1.10 of glibc's sysdeps/i386/i486/bits/atomic.h 
  */
 EXPORT_C gint