aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/sysdep/i386/locks.h4
-rw-r--r--libjava/sysdep/x86-64/locks.h8
3 files changed, 11 insertions, 6 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index c16a006..517aea5 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2004-01-16 Andrew Haley <aph@redhat.com>
+
+ * sysdep/x86-64/locks.h: Don't use in/out memory constraints.
+ * sysdep/i386/locks.h: Likewise.
+
2004-01-16 Fernando Nasser <fnasser@redhat.com>
* java/awt/EventDispatchThread.java (run): Stop running when
diff --git a/libjava/sysdep/i386/locks.h b/libjava/sysdep/i386/locks.h
index a9501ae..0e2cd79 100644
--- a/libjava/sysdep/i386/locks.h
+++ b/libjava/sysdep/i386/locks.h
@@ -25,8 +25,8 @@ compare_and_swap(volatile obj_addr_t *addr,
{
char result;
__asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
- : "+m"(*(addr)), "=q"(result)
- : "r" (new_val), "a"(old)
+ : "=m"(*addr), "=q"(result)
+ : "r" (new_val), "a"(old), "m"(*addr)
: "memory");
return (bool) result;
}
diff --git a/libjava/sysdep/x86-64/locks.h b/libjava/sysdep/x86-64/locks.h
index bad6de6..7fb9bbb 100644
--- a/libjava/sysdep/x86-64/locks.h
+++ b/libjava/sysdep/x86-64/locks.h
@@ -26,13 +26,13 @@ compare_and_swap(volatile obj_addr_t *addr, obj_addr_t old, obj_addr_t new_val)
char result;
#ifdef __x86_64__
__asm__ __volatile__("lock; cmpxchgq %2, %0; setz %1"
- : "+m"(*(addr)), "=q"(result)
- : "r" (new_val), "a"(old)
+ : "=m"(*(addr)), "=q"(result)
+ : "r" (new_val), "a"(old), "m"(*addr)
: "memory");
#else
__asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1"
- : "+m"(*(addr)), "=q"(result)
- : "r" (new_val), "a"(old)
+ : "=m"(*(addr)), "=q"(result)
+ : "r" (new_val), "a"(old), "m"(*addr)
: "memory");
#endif
return (bool) result;