summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
diff options
context:
space:
mode:
authorAndre McCurdy <armccurdy@gmail.com>2018-06-26 13:24:55 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-06-28 09:22:35 +0100
commit9fa6e7d487030e3c3340f6ad19b56b91f3ed4fa0 (patch)
treed19a7f55ef98ae555ad4baf19c24fe39aca49361 /meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
parent3f5b5c59e727c4553572bce4afad3b9111d75a08 (diff)
downloadpoky-9fa6e7d487030e3c3340f6ad19b56b91f3ed4fa0.tar.gz
db: drop legacy ARM specific SWP based mutex optimisation
Although the ARM SWP instruction may exist for ARMv6 and above, it's not guaranteed to work, especially on SMP systems where it's use may lead to instability at runtime, etc: https://community.arm.com/processors/b/blog/posts/locks-swps-and-two-smoking-barriers Keeping the optimisation for architecture levels which pre-date SMP (ie <= ARMv5) may be safe, however other distros (Buildroot, Debian, Fedora, etc) are not doing so and mutex contention is likely to be less of an issue on uniprocessor systems anyway, so the benefits of this micro optimisations are not clear. Since OE uses ARMv5 qemu as a proxy for testing all 32bit ARM architecture levels, it's desirable to keep the ARMv5 builds aligned with later ARM architecture levels wherever possible. (From OE-Core rev: 7aa94abac09be6beb7ce14a2b9a409e934465706) Signed-off-by: Andre McCurdy <armccurdy@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-support/db/db/arm-thumb-mutex_db5.patch')
-rw-r--r--meta/recipes-support/db/db/arm-thumb-mutex_db5.patch50
1 files changed, 0 insertions, 50 deletions
diff --git a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch b/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
deleted file mode 100644
index 6a8eada605..0000000000
--- a/meta/recipes-support/db/db/arm-thumb-mutex_db5.patch
+++ /dev/null
@@ -1,50 +0,0 @@
1Original patch submitted by jbowler@nslu2-linux.org on 2005-11-17:
2
3db: fix thumb uclibc operation in 4.3.29
4 - uclibc thumb builds were using libpthread to implement mutexes, the
5 - uclibc version seems to be a stub (at least on thumb). This commit
6 - fixes the ARM/gcc-assembly mutex implementation so that it has thumb
7 - support and the resultant db4 works (tested on LE Thumb uclibc)
8
9Upstream-Status: Inappropriate [embedded specific]
10
11Author: jbowler@nslu2-linux.org
12
13Index: db-6.0.30/src/dbinc/mutex_int.h
14===================================================================
15--- db-6.0.30.orig/src/dbinc/mutex_int.h
16+++ db-6.0.30/src/dbinc/mutex_int.h
17@@ -474,6 +474,25 @@ typedef unsigned char tsl_t;
18
19 #ifdef LOAD_ACTUAL_MUTEX_CODE
20 /* gcc/arm: 0 is clear, 1 is set. */
21+#if defined __thumb__
22+#define MUTEX_SET(tsl) ({ \
23+ int __r, __p; \
24+ __asm__ volatile( \
25+ ".align 2\n\t" \
26+ "bx pc\n\t" \
27+ "nop\n\t" \
28+ ".arm\n\t" \
29+ "swpb %0, %2, [%3]\n\t" \
30+ "eor %0, %0, #1\n\t" \
31+ "orr %1, pc, #1\n\t" \
32+ "bx %1\n\t" \
33+ ".force_thumb" \
34+ : "=&r" (__r), "=r" (__p) \
35+ : "r" (1), "r" (tsl) \
36+ ); \
37+ __r & 1; \
38+})
39+#else
40 #define MUTEX_SET(tsl) ({ \
41 int __r; \
42 __asm__ volatile( \
43@@ -484,6 +503,7 @@ typedef unsigned char tsl_t;
44 ); \
45 __r & 1; \
46 })
47+#endif
48
49 #define MUTEX_UNSET(tsl) (*(volatile tsl_t *)(tsl) = 0)
50 #define MUTEX_INIT(tsl) (MUTEX_UNSET(tsl), 0)