(unnamed)
text/plain
Index: s_lock.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/storage/s_lock.h,v
retrieving revision 1.102
retrieving revision 1.103
diff -c -c -r1.102 -r1.103
*** s_lock.h 10 Nov 2002 00:33:43 -0000 1.102
--- s_lock.h 22 Nov 2002 01:13:16 -0000 1.103
***************
*** 63,69 ****
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
! * $Id: s_lock.h,v 1.102 2002/11/10 00:33:43 momjian Exp $
*
*-------------------------------------------------------------------------
*/
--- 63,69 ----
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
! * $Id: s_lock.h,v 1.103 2002/11/22 01:13:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
***************
*** 150,156 ****
#endif /* __arm__ */
! #if defined(__s390__) || defined(__s390x__)
/*
* S/390 Linux
*/
--- 150,157 ----
#endif /* __arm__ */
!
! #if defined(__s390__) && !defined(__s390x__)
/*
* S/390 Linux
*/
***************
*** 175,180 ****
--- 176,207 ----
}
#endif /* __s390__ */
+
+ #if defined(__s390x__)
+ /*
+ * S/390x Linux (64-bit zSeries)
+ */
+ #define TAS(lock) tas(lock)
+
+ static __inline__ int
+ tas(volatile slock_t *lock)
+ {
+ int _res;
+
+ __asm__ __volatile__(
+ " la 1,1 \n"
+ " lg 2,%2 \n"
+ " slr 0,0 \n"
+ " cs 0,1,0(2) \n"
+ " lr %1,0 \n"
+ : "=m"(lock), "=d"(_res)
+ : "m"(lock)
+ : "0", "1", "2");
+
+ return (_res);
+ }
+
+ #endif /* __s390x__ */
#if defined(__sparc__)