--- src/include/storage/s_lock.h 2005-01-01 07:03:42.000000000 +0900 +++ src/include/storage/s_lock.h 2005-08-17 23:09:19.000000000 +0900 @@ -239,6 +239,31 @@ #endif /* __s390__ || __s390x__ */ +#if defined(__sh__) +#define HAS_TEST_AND_SET + +typedef unsigned char slock_t; + +#define TAS(lock) tas(lock) + +static __inline__ int +tas(volatile slock_t *lock) +{ + register int _res = 1; + + __asm__ __volatile__( + "tas.b @%1\n\t" + "movt %0\n\t" + "xor #1,%0" +: "=z"(_res) +: "r"(lock) +: "t","memory"); + return _res; +} + +#endif /* __sh__ */ + + #if defined(__sparc__) #define HAS_TEST_AND_SET