blob: fc59d52af0e8968e53921b7440aad769d2cdba69 (
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
|
--- 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
|