Commit 846319db authored by Tom Lane's avatar Tom Lane

Another try at the inlined MIPS spinlock code. Can't test this myself,

but for sure it's not any more broken than the prior version.
parent f9244df7
......@@ -66,7 +66,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.136 2005/08/26 14:47:35 tgl Exp $
* $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.137 2005/08/26 22:04:42 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -464,25 +464,25 @@ typedef unsigned int slock_t;
static __inline__ int
tas(volatile slock_t *lock)
{
register volatile slock_t *__l = lock;
register int __r;
register volatile slock_t *_l = lock;
register int _res;
register int _tmp;
__asm__ __volatile__(
" .set push \n"
" .set mips2 \n"
" .set noreorder \n"
" .set nomacro \n"
"1: ll %0, %1 \n"
" bne %0, $0, 1f \n"
" xori %0, 1 \n"
" sc %0, %1 \n"
" beq %0, $0, 1b \n"
" sync \n"
" ll %0, %2 \n"
" or %1, %0, $1 \n"
" sc %1, %2 \n"
" xori %1, $1 \n"
" or %0, %0, %1 \n"
"1: .set pop "
: "=&r" (__r), "+R" (*__l)
: "=&r" (_res), "=&r" (_tmp), "+R" (*_l)
:
: "memory", "cc");
return __r;
: "memory");
return _res;
}
#endif /* __mips__ && !__sgi */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment