summaryrefslogtreecommitdiffstats
path: root/meta/recipes-support/boost/boost/arm-intrinsics.patch
diff options
context:
space:
mode:
authorSaul Wold <sgw@linux.intel.com>2013-12-05 11:12:54 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-09 18:01:38 +0000
commitaca3d0bfd8335b7fd293d81c0647bf72b4de23d3 (patch)
tree021646b577ba79cd407c4943dca5505944050841 /meta/recipes-support/boost/boost/arm-intrinsics.patch
parente0bc74e14f7ad67ff85959ce7c0a111d05ac7f2f (diff)
downloadopenembedded-core-contrib-aca3d0bfd8335b7fd293d81c0647bf72b4de23d3.tar.gz
boost: Move files -> boost
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/recipes-support/boost/boost/arm-intrinsics.patch')
-rw-r--r--meta/recipes-support/boost/boost/arm-intrinsics.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/meta/recipes-support/boost/boost/arm-intrinsics.patch b/meta/recipes-support/boost/boost/arm-intrinsics.patch
new file mode 100644
index 0000000000..fe85c69a82
--- /dev/null
+++ b/meta/recipes-support/boost/boost/arm-intrinsics.patch
@@ -0,0 +1,55 @@
+Upstream-Status: Backport
+
+8/17/2010 - rebased to 1.44 by Qing He <qing.he@intel.com>
+
+diff --git a/boost/smart_ptr/detail/atomic_count_sync.hpp b/boost/smart_ptr/detail/atomic_count_sync.hpp
+index b6359b5..78b1cc2 100644
+--- a/boost/smart_ptr/detail/atomic_count_sync.hpp
++++ b/boost/smart_ptr/detail/atomic_count_sync.hpp
+@@ -33,17 +33,46 @@ public:
+
+ long operator++()
+ {
++#ifdef __ARM_ARCH_7A__
++ int v1, tmp;
++ asm volatile ("1: \n\t"
++ "ldrex %0, %1 \n\t"
++ "add %0 ,%0, #1 \n\t"
++ "strex %2, %0, %1 \n\t"
++ "cmp %2, #0 \n\t"
++ "bne 1b \n\t"
++ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
++ );
++#else
+ return __sync_add_and_fetch( &value_, 1 );
++#endif
+ }
+
+ long operator--()
+ {
++#ifdef __ARM_ARCH_7A__
++ int v1, tmp;
++ asm volatile ("1: \n\t"
++ "ldrex %0, %1 \n\t"
++ "sub %0 ,%0, #1 \n\t"
++ "strex %2, %0, %1 \n\t"
++ "cmp %2, #0 \n\t"
++ "bne 1b \n\t"
++ : "=&r" (v1), "+Q"(value_), "=&r"(tmp)
++ );
++ return value_;
++#else
+ return __sync_add_and_fetch( &value_, -1 );
++#endif
+ }
+
+ operator long() const
+ {
++#if __ARM_ARCH_7A__
++ return value_;
++#else
+ return __sync_fetch_and_add( &value_, 0 );
++#endif
+ }
+
+ private: