summaryrefslogtreecommitdiff
blob: 295bb6cfb6002b19d9da35e5a8480f4024f820df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
--- postgresql-8.2.3.orig/src/include/storage/s_lock.h	2006-06-08 00:24:45.000000000 +0200
+++ postgresql-8.2.3/src/include/storage/s_lock.h	2007-03-29 12:25:56.000000000 +0200
@@ -299,6 +299,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__)		/* Sparc */
 #define HAS_TEST_AND_SET