unicode: Update to unicode 7.0.0
[platform/upstream/glib.git] / glib / gbitlock.c
index 7674f9a..572c2d1 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
  *
  * Author: Ryan Lortie <desrt@desrt.ca>
  */
 
+#include "config.h"
+
 #include "gbitlock.h"
 
 #include <glib/gmessages.h>
 #include <glib/gslice.h>
 
 #include "gthreadprivate.h"
-#include "config.h"
 
-#undef HAVE_FUTEX
 #ifdef G_BIT_LOCK_FORCE_FUTEX_EMULATION
+#undef HAVE_FUTEX
 #endif
 
 #ifndef HAVE_FUTEX
@@ -207,12 +206,12 @@ g_bit_lock (volatile gint *address,
 {
 #ifdef USE_ASM_GOTO
  retry:
-  asm volatile goto ("lock bts %1, (%0)\n"
-                     "jc %l[contended]"
-                     : /* no output */
-                     : "r" (address), "r" (lock_bit)
-                     : "cc", "memory"
-                     : contended);
+  __asm__ volatile goto ("lock bts %1, (%0)\n"
+                         "jc %l[contended]"
+                         : /* no output */
+                         : "r" (address), "r" (lock_bit)
+                         : "cc", "memory"
+                         : contended);
   return;
 
  contended:
@@ -280,12 +279,12 @@ g_bit_trylock (volatile gint *address,
 #ifdef USE_ASM_GOTO
   gboolean result;
 
-  asm volatile ("lock bts %2, (%1)\n"
-                "setnc %%al\n"
-                "movzx %%al, %0"
-                : "=r" (result)
-                : "r" (address), "r" (lock_bit)
-                : "cc", "memory");
+  __asm__ volatile ("lock bts %2, (%1)\n"
+                    "setnc %%al\n"
+                    "movzx %%al, %0"
+                    : "=r" (result)
+                    : "r" (address), "r" (lock_bit)
+                    : "cc", "memory");
 
   return result;
 #else
@@ -366,6 +365,12 @@ g_futex_int_address (const volatile void *address)
 {
   const volatile gint *int_address = address;
 
+  /* this implementation makes these (reasonable) assumptions: */
+  G_STATIC_ASSERT (G_BYTE_ORDER == G_LITTLE_ENDIAN ||
+      (G_BYTE_ORDER == G_BIG_ENDIAN &&
+       sizeof (int) == 4 &&
+       (sizeof (gpointer) == 4 || sizeof (gpointer) == 8)));
+
 #if G_BYTE_ORDER == G_BIG_ENDIAN && GLIB_SIZEOF_VOID_P == 8
   int_address++;
 #endif