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
|