diff options
Diffstat (limited to 'yocto-poky/meta/recipes-support/liburcu')
7 files changed, 184 insertions, 245 deletions
diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-Support-for-NIOS2-architecture.patch b/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-Support-for-NIOS2-architecture.patch new file mode 100644 index 000000000..690872b4a --- /dev/null +++ b/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-Support-for-NIOS2-architecture.patch @@ -0,0 +1,144 @@ +From add566b913e1b5cd4974a2167157dc08d8245ab0 Mon Sep 17 00:00:00 2001 +From: Marek Vasut <marex@denx.de> +Date: Tue, 9 Feb 2016 01:52:26 +0100 +Subject: [PATCH] Support for NIOS2 architecture + +Add support for the Altera NIOS2 CPU archirecture. The atomic operations +are handled by the GCC. The memory barriers on this systems are entirely +trivial too, since the CPU does not support SMP at all. + +Signed-off-by: Marek Vasut <marex@denx.de> +Upstream-Status: Backport [ http://git.lttng.org/?p=userspace-rcu.git;a=commit;h=859050b3088aa3f0cb59d7f51ce24b9a0f18faa5 ] +--- + LICENSE | 1 + + README.md | 1 + + configure.ac | 1 + + urcu/arch/nios2.h | 40 ++++++++++++++++++++++++++++++++++++++++ + urcu/uatomic/nios2.h | 32 ++++++++++++++++++++++++++++++++ + 5 files changed, 75 insertions(+) + create mode 100644 urcu/arch/nios2.h + create mode 100644 urcu/uatomic/nios2.h + +diff --git a/LICENSE b/LICENSE +index 3147094..a06fdcc 100644 +--- a/LICENSE ++++ b/LICENSE +@@ -45,6 +45,7 @@ compiler.h + arch/s390.h + uatomic/alpha.h + uatomic/mips.h ++uatomic/nios2.h + uatomic/s390.h + system.h + +diff --git a/README.md b/README.md +index f6b290f..6fe9c1e 100644 +--- a/README.md ++++ b/README.md +@@ -43,6 +43,7 @@ Currently, the following architectures are supported: + - S390, S390x + - ARM 32/64 + - MIPS ++ - NIOS2 + - Alpha + - ia64 + - Sparcv9 32/64 +diff --git a/configure.ac b/configure.ac +index 39a7777..71a7d71 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -124,6 +124,7 @@ AS_CASE([$host_cpu], + [arm*], [ARCHTYPE="arm"], + [aarch64], [ARCHTYPE="aarch64"], + [mips*], [ARCHTYPE="mips"], ++ [nios2*], [ARCHTYPE="nios2"], + [tile*], [ARCHTYPE="tile"], + [hppa*], [ARCHTYPE="hppa"], + [ARCHTYPE="unknown"] +diff --git a/urcu/arch/nios2.h b/urcu/arch/nios2.h +new file mode 100644 +index 0000000..030d1bc +--- /dev/null ++++ b/urcu/arch/nios2.h +@@ -0,0 +1,40 @@ ++#ifndef _URCU_ARCH_NIOS2_H ++#define _URCU_ARCH_NIOS2_H ++ ++/* ++ * arch_nios2.h: trivial definitions for the NIOS2 architecture. ++ * ++ * Copyright (c) 2016 Marek Vasut <marex@denx.de> ++ * ++ * This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Lesser General Public ++ * License as published by the Free Software Foundation; either ++ * version 2.1 of the License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * Lesser General Public License for more details. ++ * ++ * You should have received a copy of the GNU Lesser General Public ++ * License along with this library; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ++ */ ++ ++#include <urcu/compiler.h> ++#include <urcu/config.h> ++#include <urcu/syscall-compat.h> ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#define cmm_mb() cmm_barrier() ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#include <urcu/arch/generic.h> ++ ++#endif /* _URCU_ARCH_NIOS2_H */ +diff --git a/urcu/uatomic/nios2.h b/urcu/uatomic/nios2.h +new file mode 100644 +index 0000000..5b3c303 +--- /dev/null ++++ b/urcu/uatomic/nios2.h +@@ -0,0 +1,32 @@ ++#ifndef _URCU_UATOMIC_ARCH_NIOS2_H ++#define _URCU_UATOMIC_ARCH_NIOS2_H ++ ++/* ++ * Atomic exchange operations for the NIOS2 architecture. Let GCC do it. ++ * ++ * Copyright (c) 2016 Marek Vasut <marex@denx.de> ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a copy ++ * of this software and associated documentation files (the "Software"), to ++ * deal in the Software without restriction, including without limitation the ++ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the Software is ++ * furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS ++ * IN THE SOFTWARE. ++ */ ++ ++#include <urcu/compiler.h> ++#include <urcu/system.h> ++#include <urcu/uatomic/generic.h> ++ ++#endif /* _URCU_UATOMIC_ARCH_NIOS2_H */ +-- +2.7.0 + diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-uatomic-Specify-complete-types-for-atomic-function-c.patch b/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-uatomic-Specify-complete-types-for-atomic-function-c.patch deleted file mode 100644 index 5ad0bbd15..000000000 --- a/yocto-poky/meta/recipes-support/liburcu/liburcu/0001-uatomic-Specify-complete-types-for-atomic-function-c.patch +++ /dev/null @@ -1,158 +0,0 @@ -From 6af790818d074c103c4797f1ce764896f183e028 Mon Sep 17 00:00:00 2001 -From: Khem Raj <raj.khem@gmail.com> -Date: Sat, 22 Aug 2015 21:35:03 -0700 -Subject: [PATCH] uatomic: Specify complete types for atomic function calls - -This was unearthed by clang compiler where it complained about parameter -mismatch, gcc doesnt notice this - -urcu/uatomic/generic.h:190:10: error: address argument to atomic builtin -must be a pointer to integer or pointer ('void *' invalid) - return __sync_add_and_fetch_4(addr, val); - -Fixed all instances thusly - -Signed-off-by: Khem Raj <raj.khem@gmail.com> ---- -Upstream-Status: Submitted - - urcu/uatomic/generic.h | 40 ++++++++++++++++++++-------------------- - 1 file changed, 20 insertions(+), 20 deletions(-) - -diff --git a/urcu/uatomic/generic.h b/urcu/uatomic/generic.h -index 37f59cc..0046ffd 100644 ---- a/urcu/uatomic/generic.h -+++ b/urcu/uatomic/generic.h -@@ -65,17 +65,17 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old, - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- return __sync_val_compare_and_swap_1(addr, old, _new); -+ return __sync_val_compare_and_swap_1((unsigned char *)addr, old, _new); - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- return __sync_val_compare_and_swap_2(addr, old, _new); -+ return __sync_val_compare_and_swap_2((unsigned short int *)addr, old, _new); - #endif - case 4: -- return __sync_val_compare_and_swap_4(addr, old, _new); -+ return __sync_val_compare_and_swap_4((unsigned int *)addr, old, _new); - #if (CAA_BITS_PER_LONG == 64) - case 8: -- return __sync_val_compare_and_swap_8(addr, old, _new); -+ return __sync_val_compare_and_swap_8((unsigned long *)addr, old, _new); - #endif - } - _uatomic_link_error(); -@@ -100,20 +100,20 @@ void _uatomic_and(void *addr, unsigned long val, - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- __sync_and_and_fetch_1(addr, val); -+ __sync_and_and_fetch_1((unsigned char *)addr, val); - return; - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- __sync_and_and_fetch_2(addr, val); -+ __sync_and_and_fetch_2((unsigned short int *)addr, val); - return; - #endif - case 4: -- __sync_and_and_fetch_4(addr, val); -+ __sync_and_and_fetch_4((unsigned int *)addr, val); - return; - #if (CAA_BITS_PER_LONG == 64) - case 8: -- __sync_and_and_fetch_8(addr, val); -+ __sync_and_and_fetch_8((unsigned long *)addr, val); - return; - #endif - } -@@ -139,20 +139,20 @@ void _uatomic_or(void *addr, unsigned long val, - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- __sync_or_and_fetch_1(addr, val); -+ __sync_or_and_fetch_1((unsigned char *)addr, val); - return; - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- __sync_or_and_fetch_2(addr, val); -+ __sync_or_and_fetch_2((unsigned short int *)addr, val); - return; - #endif - case 4: -- __sync_or_and_fetch_4(addr, val); -+ __sync_or_and_fetch_4((unsigned int *)addr, val); - return; - #if (CAA_BITS_PER_LONG == 64) - case 8: -- __sync_or_and_fetch_8(addr, val); -+ __sync_or_and_fetch_8((unsigned long *)addr, val); - return; - #endif - } -@@ -180,17 +180,17 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val, - switch (len) { - #ifdef UATOMIC_HAS_ATOMIC_BYTE - case 1: -- return __sync_add_and_fetch_1(addr, val); -+ return __sync_add_and_fetch_1((unsigned char *)addr, val); - #endif - #ifdef UATOMIC_HAS_ATOMIC_SHORT - case 2: -- return __sync_add_and_fetch_2(addr, val); -+ return __sync_add_and_fetch_2((unsigned short int *)addr, val); - #endif - case 4: -- return __sync_add_and_fetch_4(addr, val); -+ return __sync_add_and_fetch_4((unsigned int *)addr, val); - #if (CAA_BITS_PER_LONG == 64) - case 8: -- return __sync_add_and_fetch_8(addr, val); -+ return __sync_add_and_fetch_8((unsigned long *)addr, val); - #endif - } - _uatomic_link_error(); -@@ -218,7 +218,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) - - do { - old = uatomic_read((unsigned char *)addr); -- } while (!__sync_bool_compare_and_swap_1(addr, old, val)); -+ } while (!__sync_bool_compare_and_swap_1((unsigned char *)addr, old, val)); - - return old; - } -@@ -230,7 +230,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) - - do { - old = uatomic_read((unsigned short *)addr); -- } while (!__sync_bool_compare_and_swap_2(addr, old, val)); -+ } while (!__sync_bool_compare_and_swap_2((unsigned short int *)addr, old, val)); - - return old; - } -@@ -241,7 +241,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) - - do { - old = uatomic_read((unsigned int *)addr); -- } while (!__sync_bool_compare_and_swap_4(addr, old, val)); -+ } while (!__sync_bool_compare_and_swap_4((unsigned int *)addr, old, val)); - - return old; - } -@@ -252,7 +252,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len) - - do { - old = uatomic_read((unsigned long *)addr); -- } while (!__sync_bool_compare_and_swap_8(addr, old, val)); -+ } while (!__sync_bool_compare_and_swap_8((unsigned long *)addr, old, val)); - - return old; - } --- -2.1.4 - diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu/0002-Support-for-aarch64_be.patch b/yocto-poky/meta/recipes-support/liburcu/liburcu/0002-Support-for-aarch64_be.patch new file mode 100644 index 000000000..a10ccd7d8 --- /dev/null +++ b/yocto-poky/meta/recipes-support/liburcu/liburcu/0002-Support-for-aarch64_be.patch @@ -0,0 +1,19 @@ +liburcu: add support for aarch64_be + +Upstream-Status: Pending + +Signed-off-by: Tudor Florea <tudor.florea@enea.com> + +diff --git a/configure.ac b/configure.ac +index 8ebfa8b..fe1c55d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -121,7 +121,7 @@ AS_CASE([$host_cpu], + [alpha*], [ARCHTYPE="alpha"], + [ia64], [ARCHTYPE="ia64"], + [arm*], [ARCHTYPE="arm"], +- [aarch64], [ARCHTYPE="aarch64"], ++ [aarch64*], [ARCHTYPE="aarch64"], + [mips*], [ARCHTYPE="mips"], + [nios2*], [ARCHTYPE="nios2"], + [tile*], [ARCHTYPE="tile"], diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu/Revert-Blacklist-ARM-gcc-4.8.0-4.8.1-4.8.2.patch b/yocto-poky/meta/recipes-support/liburcu/liburcu/Revert-Blacklist-ARM-gcc-4.8.0-4.8.1-4.8.2.patch deleted file mode 100644 index 535a7384c..000000000 --- a/yocto-poky/meta/recipes-support/liburcu/liburcu/Revert-Blacklist-ARM-gcc-4.8.0-4.8.1-4.8.2.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 7b3df100346128d780f218b881d563d1fd12e310 Mon Sep 17 00:00:00 2001 -From: Jonathan Liu <net147@gmail.com> -Date: Mon, 20 Oct 2014 13:46:10 +1100 -Subject: [PATCH] Revert "Blacklist ARM gcc 4.8.0, 4.8.1, 4.8.2" - -This reverts commit 4b79310aa3d408ba30fee02cc497a68072d38a99. -OE-Core is using a patched GCC 4.8.2 which is able to compile liburcu -properly. - -Upstream-Status: Inappropriate [OE specific] - -Signed-off-by: Jonathan Liu <net147@gmail.com> ---- - urcu/compiler.h | 19 ------------------- - 1 file changed, 19 deletions(-) - -diff --git a/urcu/compiler.h b/urcu/compiler.h -index 1e30903..19534f0 100644 ---- a/urcu/compiler.h -+++ b/urcu/compiler.h -@@ -108,23 +108,4 @@ - - #define CAA_ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) - --/* -- * Don't allow compiling with buggy compiler. -- */ -- --#ifdef __GNUC__ --# define URCU_GCC_VERSION (__GNUC__ * 10000 \ -- + __GNUC_MINOR__ * 100 \ -- + __GNUC_PATCHLEVEL__) -- --/* -- * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854 -- */ --# ifdef __ARMEL__ --# if URCU_GCC_VERSION >= 40800 && URCU_GCC_VERSION <= 40802 --# error Your gcc version produces clobbered frame accesses --# endif --# endif --#endif -- - #endif /* _URCU_COMPILER_H */ --- -2.1.2 - diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu/aarch64.patch b/yocto-poky/meta/recipes-support/liburcu/liburcu/aarch64.patch deleted file mode 100644 index c6cc8c2fd..000000000 --- a/yocto-poky/meta/recipes-support/liburcu/liburcu/aarch64.patch +++ /dev/null @@ -1,19 +0,0 @@ -libucru: recognize aarch64 - -Make the same as "arm" internally. - -Upstream-Status: Pending - -Signed-off-by: joe.slater@windriver.com - - ---- a/configure.ac -+++ b/configure.ac -@@ -77,6 +77,7 @@ AS_CASE([$host_cpu], - [alpha*], [ARCHTYPE="alpha"], - [ia64], [ARCHTYPE="gcc"], - [arm*], [ARCHTYPE="arm"], -+ [aarch64], [ARCHTYPE="arm"], - [mips*], [ARCHTYPE="mips"], - [tile*], [ARCHTYPE="gcc"], - [ARCHTYPE="unknown"] diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu_0.8.7.bb b/yocto-poky/meta/recipes-support/liburcu/liburcu_0.8.7.bb deleted file mode 100644 index a7f4f51b5..000000000 --- a/yocto-poky/meta/recipes-support/liburcu/liburcu_0.8.7.bb +++ /dev/null @@ -1,21 +0,0 @@ -SUMMARY = "Userspace RCU (read-copy-update) library" -HOMEPAGE = "http://lttng.org/urcu" -BUGTRACKER = "http://lttng.org/project/issues" - -LICENSE = "LGPLv2.1+ & MIT-style" -LIC_FILES_CHKSUM = "file://LICENSE;md5=0f060c30a27922ce9c0d557a639b4fa3 \ - file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \ - file://urcu/uatomic/x86.h;beginline=4;endline=21;md5=220552f72c55b102f2ee35929734ef42" - -SRC_URI = "http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2 \ - file://Revert-Blacklist-ARM-gcc-4.8.0-4.8.1-4.8.2.patch \ - file://aarch64.patch \ - file://0001-uatomic-Specify-complete-types-for-atomic-function-c.patch \ - " - -SRC_URI[md5sum] = "7a6ee17871d31226db3f618e28351d22" -SRC_URI[sha256sum] = "b523f22c4726ca6bb77a77d258e76d8c33c89724433bd65313024b98e55c4295" - -S = "${WORKDIR}/userspace-rcu-${PV}" -CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE" -inherit autotools diff --git a/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb b/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb new file mode 100644 index 000000000..aadc32ff7 --- /dev/null +++ b/yocto-poky/meta/recipes-support/liburcu/liburcu_0.9.1.bb @@ -0,0 +1,21 @@ +SUMMARY = "Userspace RCU (read-copy-update) library" +HOMEPAGE = "http://lttng.org/urcu" +BUGTRACKER = "http://lttng.org/project/issues" + +LICENSE = "LGPLv2.1+ & MIT-style" +LIC_FILES_CHKSUM = "file://LICENSE;md5=e548d28737289d75a8f1e01ba2fd7825 \ + file://urcu.h;beginline=4;endline=32;md5=4de0d68d3a997643715036d2209ae1d9 \ + file://urcu/uatomic/x86.h;beginline=4;endline=21;md5=58e50bbd8a2f073bb5500e6554af0d0b" + +SRC_URI = " \ + http://lttng.org/files/urcu/userspace-rcu-${PV}.tar.bz2 \ + file://0001-Support-for-NIOS2-architecture.patch \ + file://0002-Support-for-aarch64_be.patch \ + " + +SRC_URI[md5sum] = "124eaeea06863271c0bdf2a0cc1d8e4b" +SRC_URI[sha256sum] = "f8d278e9d95bec97c9ba954fc4c3fb584936bc0010713a8fe358b916bafd8715" + +S = "${WORKDIR}/userspace-rcu-${PV}" +CFLAGS_append_libc-uclibc = " -D_GNU_SOURCE" +inherit autotools |