| 
							- --- glib-2.22.5/glib/gatomic.c	2021-01-12 00:34:17.000000000 +0000
 - +++ glib-2.22.5.mod/glib/gatomic.c	2021-01-12 00:31:22.000000000 +0000
 - @@ -561,55 +561,33 @@
 -  #    error "Your system has an unsupported pointer size"
 -  #  endif /* GLIB_SIZEOF_VOID_P */
 -  # elif defined (__aarch64__)
 - -static volatile int atomic_spin = 0;
 - -
 - -static int atomic_spin_trylock (void)
 - -{
 - -  int result;
 - -
 - -  asm volatile (
 - -    "swp %0, %1, [%2]\n"
 - -    : "=&r,&r" (result)
 - -    : "r,0" (1), "r,r" (&atomic_spin)
 - -    : "memory");
 - -  if (result == 0)
 - -    return 0;
 - -  else
 - -    return -1;
 - -}
 - -
 - -static void atomic_spin_lock (void)
 - -{
 - -  while (atomic_spin_trylock())
 - -    sched_yield();
 - -}
 - -
 - -static void atomic_spin_unlock (void)
 - -{
 - -  atomic_spin = 0;
 - -}
 - +#include <pthread.h>
 - +static pthread_mutex_t g_atomic_lock = PTHREAD_MUTEX_INITIALIZER;
 -  
 -  gint
 -  g_atomic_int_exchange_and_add (volatile gint G_GNUC_MAY_ALIAS *atomic, 
 -  			       gint           val)
 -  {
 - -  gint result;
 - - 
 - -  atomic_spin_lock();  
 - -  result = *atomic;
 - -  *atomic += val;
 - -  atomic_spin_unlock();
 - +  guint oldval;
 -  
 - -  return result;
 - +  pthread_mutex_lock (&g_atomic_lock);
 - +  oldval = *atomic;
 - +  *atomic = oldval & val;
 - +  pthread_mutex_unlock (&g_atomic_lock);
 - +
 - +  return oldval;
 -  }
 -  
 -  void
 -  g_atomic_int_add (volatile gint G_GNUC_MAY_ALIAS *atomic,
 -  		  gint           val)
 -  {
 - -  atomic_spin_lock();
 - -  *atomic += val;
 - -  atomic_spin_unlock();
 - +  guint oldval;
 - +
 - +  pthread_mutex_lock (&g_atomic_lock);
 - +  oldval = *atomic;
 - +  *atomic = oldval & val;
 - +  pthread_mutex_unlock (&g_atomic_lock);
 -  }
 -  
 -  gboolean
 - @@ -617,19 +595,16 @@
 -  				   gint           oldval, 
 -  				   gint           newval)
 -  {
 - -  gboolean result;
 - +  gboolean success;
 -  
 - -  atomic_spin_lock();
 - -  if (*atomic == oldval)
 - -    {
 - -      result = TRUE;
 - -      *atomic = newval;
 - -    }
 - -  else
 - -    result = FALSE;
 - -  atomic_spin_unlock();
 - +  pthread_mutex_lock (&g_atomic_lock);
 -  
 - -  return result;
 - +  if ((success = (*atomic == oldval)))
 - +    *atomic = newval;
 - +
 - +  pthread_mutex_unlock (&g_atomic_lock);
 - +
 - +  return success;
 -  }
 -  
 -  gboolean
 - @@ -637,19 +612,17 @@
 -  				       gpointer           oldval, 
 -  				       gpointer           newval)
 -  {
 - -  gboolean result;
 - - 
 - -  atomic_spin_lock();
 - -  if (*atomic == oldval)
 - -    {
 - -      result = TRUE;
 - -      *atomic = newval;
 - -    }
 - -  else
 - -    result = FALSE;
 - -  atomic_spin_unlock();
 - +  gpointer *ptr = atomic;
 - +  gboolean success;
 -  
 - -  return result;
 - +  pthread_mutex_lock (&g_atomic_lock);
 - +
 - +  if ((success = (*ptr == oldval)))
 - +    *ptr = newval;
 - +
 - +  pthread_mutex_unlock (&g_atomic_lock);
 - +
 - +  return success;
 -  }
 -  # elif defined (G_ATOMIC_CRIS) || defined (G_ATOMIC_CRISV32)
 -  #  ifdef G_ATOMIC_CRIS
 
 
  |