diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index eb9a808f099582b8a798aa60623ba6f01fc711cd..b094ed8fb8d7e81bcf92a656dc636d6bf2893ccd 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.51 1998/10/01 01:53:50 tgl Exp $ + * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.52 1998/10/02 15:23:08 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -168,6 +168,22 @@ tas(volatile slock_t *lock) +#if defined(NEED_NS32K_TAS_ASM) +#define TAS(lock) tas(lock) + +static __inline__ int +tas(volatile slock_t *lock) +{ + register _res; + __asm__("sbitb 0, %0 + sfsd %1" + : "=m"(*lock), "=r"(_res)); + return (int) _res; +} + +#endif /* NEED_NS32K_TAS_ASM */ + + #else /* __GNUC__ */ /*************************************************************************** @@ -212,24 +228,6 @@ tas(slock_t *s_lock) #endif /* NEED_I386_TAS_ASM */ - - -#if defined(NEED_NS32K_TAS_ASM) - -#define S_LOCK(lock) \ -{ \ - slock_t res = 1; \ - while (res) { \ - __asm__("movqd 0, r0"); \ - __asm__("sbitd r0, %0" : "=m"(*lock)); \ - __asm__("sprb us, %0" : "=r" (res)); \ - res = ((res >> 5) & 1); \ - } \ -} - -#endif /* NEED_NS32K_TAS_ASM */ - - #endif /* defined(__GNUC__) */