Various patches not commited, plus a linux/sparc patch from
Satoshi Ishikawa <power@sekine.densi.gifu-u.ac.jp>
This commit is contained in:
parent
7a7a9b1a04
commit
08a5901ba1
@ -7,7 +7,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.12 1997/03/12 21:06:48 scrappy Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.13 1997/04/24 02:35:35 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -453,4 +453,37 @@ S_INIT_LOCK(slock_t *lock)
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(linux) && defined(sparc)
|
||||
|
||||
int
|
||||
tas(slock_t *m)
|
||||
{
|
||||
slock_t res;
|
||||
__asm__("ldstub [%1], %0"
|
||||
: "=&r" (res)
|
||||
: "r" (m));
|
||||
return (res != 0);
|
||||
}
|
||||
|
||||
void
|
||||
S_LOCK(slock_t *lock)
|
||||
{
|
||||
while (tas(lock))
|
||||
;
|
||||
}
|
||||
|
||||
void
|
||||
S_UNLOCK(slock_t *lock)
|
||||
{
|
||||
*lock = 0;
|
||||
}
|
||||
|
||||
void
|
||||
S_INIT_LOCK(slock_t *lock)
|
||||
{
|
||||
S_UNLOCK(lock);
|
||||
}
|
||||
|
||||
#endif /* defined(linux) && defined(sparc) */
|
||||
|
||||
#endif /* HAS_TEST_AND_SET */
|
||||
|
@ -12,3 +12,6 @@
|
||||
# define HAS_TEST_AND_SET
|
||||
typedef unsigned char slock_t;
|
||||
# endif
|
||||
# if defined(sparc)
|
||||
# undef NEED_I386_TAS_ASM
|
||||
# endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user