* sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set mips2 on new abi. * sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise. Handle 64-bit longs on n64.

2003-03-14  Alexandre Oliva  <aoliva@redhat.com>

	* sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set
	mips2 on new abi.
	* sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise.
	Handle 64-bit longs on n64.
This commit is contained in:
Alexandre Oliva 2003-03-14 04:22:05 +00:00
parent 264befa8c2
commit 7fb8033c1f
3 changed files with 22 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2003-03-14 Alexandre Oliva <aoliva@redhat.com>
* sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't .set
mips2 on new abi.
* sysdeps/mips/pt-machine.h (__compare_and_swap): Likewise.
Handle 64-bit longs on n64.
2003-03-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/ia64/pspinlock.c (__pthread_spin_lock,

View File

@ -1,5 +1,5 @@
/* POSIX spinlock implementation. MIPS version.
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -32,7 +32,9 @@ __pthread_spin_lock (pthread_spinlock_t *lock)
("\t\t\t# spin_lock\n"
"1:\n\t"
".set push\n\t"
#if _MIPS_SIM == _MIPS_SIM_ABI32
".set mips2\n\t"
#endif
"ll %1,%3\n\t"
"li %2,1\n\t"
"bnez %1,1b\n\t"

View File

@ -1,6 +1,7 @@
/* Machine-dependent pthreads configuration and inline functions.
Copyright (C) 1996, 1997, 1998, 2000, 2002 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ralf Baechle <ralf@gnu.org>.
Based on the Alpha version by Richard Henderson <rth@tamu.edu>.
@ -60,12 +61,22 @@ __compare_and_swap (long int *p, long int oldval, long int newval)
("/* Inline compare & swap */\n"
"1:\n\t"
".set push\n\t"
#if _MIPS_SIM == _MIPS_SIM_ABI32
".set mips2\n\t"
#endif
#if defined _ABI64 && _MIPS_SIM == _ABI64
"lld %1,%5\n\t"
#else
"ll %1,%5\n\t"
#endif
"move %0,$0\n\t"
"bne %1,%3,2f\n\t"
"move %0,%4\n\t"
#if defined _ABI64 && _MIPS_SIM == _ABI64
"scd %0,%2\n\t"
#else
"sc %0,%2\n\t"
#endif
".set pop\n\t"
"beqz %0,1b\n"
"2:\n\t"