From 903e4a93bbaba4c47265245b701cd260dfa5408e Mon Sep 17 00:00:00 2001 From: bo <bo@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 1 Oct 2002 09:02:08 +0000 Subject: [PATCH] 2002-09-30 Bo Thorsen <bo@suse.de> * sysdep/x86-64/locks.h (compare_and_swap): Fix multilib support. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57682 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 4 ++++ libjava/sysdep/x86-64/locks.h | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8c2ab3e243ae..eef5d761cb7e 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,7 @@ +2002-09-30 Bo Thorsen <bo@suse.de> + + * sysdep/x86-64/locks.h (compare_and_swap): Fix multilib support. + 2002-09-30 Tom Tromey <tromey@redhat.com> * java/io/ObjectInputStream.java (resolveProxyClass): New method diff --git a/libjava/sysdep/x86-64/locks.h b/libjava/sysdep/x86-64/locks.h index cb6be85951b0..bad6de6dc6f6 100644 --- a/libjava/sysdep/x86-64/locks.h +++ b/libjava/sysdep/x86-64/locks.h @@ -24,10 +24,17 @@ inline static bool 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) : "memory"); +#else + __asm__ __volatile__("lock; cmpxchgl %2, %0; setz %1" + : "+m"(*(addr)), "=q"(result) + : "r" (new_val), "a"(old) + : "memory"); +#endif return (bool) result; } -- GitLab