From 846319db3ffb6b9c0f1e9e4722fc2652d82fccad Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 26 Aug 2005 22:04:42 +0000 Subject: [PATCH] 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. --- src/include/storage/s_lock.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index 0124b365a0..3951aa7137 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -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 */