summaryrefslogtreecommitdiffstats
path: root/libjava/sysdep/x86-64
diff options
context:
space:
mode:
authorbo <bo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-01 09:02:08 +0000
committerbo <bo@138bc75d-0d04-0410-961f-82ee72b054a4>2002-10-01 09:02:08 +0000
commit903e4a93bbaba4c47265245b701cd260dfa5408e (patch)
tree389bd16319910ee06d97fbe3bfaa98ef4c6079de /libjava/sysdep/x86-64
parentaf844b025f0ee335cafeafc2fe37994bf0fb9709 (diff)
downloadppe42-gcc-903e4a93bbaba4c47265245b701cd260dfa5408e.tar.gz
ppe42-gcc-903e4a93bbaba4c47265245b701cd260dfa5408e.zip
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
Diffstat (limited to 'libjava/sysdep/x86-64')
-rw-r--r--libjava/sysdep/x86-64/locks.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/libjava/sysdep/x86-64/locks.h b/libjava/sysdep/x86-64/locks.h
index cb6be85951b..bad6de6dc6f 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;
}
OpenPOWER on IntegriCloud