diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/storage/s_lock.h | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index d50e3564bb7..863801f8ee3 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.74 2000/11/28 23:27:57 tgl Exp $ + * $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.75 2000/12/03 14:41:42 thomas Exp $ * *------------------------------------------------------------------------- */ @@ -128,6 +128,29 @@ __asm__("swpb %0, %0, [%3]": "=r"(_res), "=m"(*lock):"0"(_res), "r" (lock)); #endif /* __arm__ */ +#if defined(__s390__) +/* + * S/390 Linux + */ +#define TAS(lock) tas(lock) + +static inline int +tas(volatile slock_t *lock) +{ + int _res; + + __asm__ __volatile(" la 1,1\n" + " l 2,%2\n" + " slr 0,0\n" + " cs 0,1,0(2)\n" + " lr %1,0" + : "=m" (lock), "=d" (_res) + : "m" (lock) + : "0", "1", "2"); + + return (_res); +} +#endif /* __s390__ */ #if defined(__sparc__) |