about summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/sysdeps/sparc/sparc64/pt-machine.h6
2 files changed, 8 insertions, 3 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index a33730213b..9c45f6e746 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+1999-04-29  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/sparc/sparc64/pt-machine.h (__compare_and_swap): cas
+	instruction does not allow memory element to use offset.
+
 1999-04-28  Ulrich Drepper  <drepper@cygnus.com>
 
 	* manager.c (pthread_allocate_stack): Optimize initialization of new
diff --git a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
index c4489b3d82..101b85516a 100644
--- a/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
+++ b/linuxthreads/sysdeps/sparc/sparc64/pt-machine.h
@@ -1,6 +1,6 @@
 /* Machine-dependent pthreads configuration and inline functions.
    Sparc v9 version.
-   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <rth@tamu.edu>.
 
@@ -63,9 +63,9 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
 {
   long int readval;
 
-  __asm__ __volatile__ ("cas %1, %2, %0"
+  __asm__ __volatile__ ("cas	[%4], %2, %0"
 			: "=r"(readval), "=m"(*p)
-			: "r"(oldval), "m"(*p), "0"(newval));
+			: "r"(oldval), "m"(*p), "r"(p), "0"(newval));
 
   return readval == newval;
 }