On 23 December 2014 at 16:16, Maxim Uvarov <[email protected]> wrote: > On 12/23/2014 04:26 PM, Ola Liljedahl wrote: >> >> On 23 December 2014 at 10:13, Maxim Uvarov <[email protected]> >> wrote: >>> >>> Odp atomic operations based on compiler build-ins. Make >>> sure that compiler supports such operation at configure >>> stage. >>> >>> Signed-off-by: Maxim Uvarov <[email protected]> >>> --- >>> v3: make atomic checks platfrom specific >>> >>> configure.ac | 4 +++- >>> platform/linux-generic/m4/configure.m4 | 18 ++++++++++++++++++ >>> 2 files changed, 21 insertions(+), 1 deletion(-) >>> create mode 100644 platform/linux-generic/m4/configure.m4 >>> >>> diff --git a/configure.ac b/configure.ac >>> index 377e8be..f55beca 100644 >>> --- a/configure.ac >>> +++ b/configure.ac >>> @@ -47,7 +47,9 @@ AC_ARG_WITH([platform], >>> [AS_HELP_STRING([--with-platform=prefix], >>> [Select platform to be used, default linux-generic])], >>> [], >>> - [with_platform=linux-generic]) >>> + [with_platform=linux-generic >>> + m4_include([./platform/linux-generic/m4/configure.m4]) >>> + ]) >>> >>> AC_SUBST([with_platform]) >>> >>> diff --git a/platform/linux-generic/m4/configure.m4 >>> b/platform/linux-generic/m4/configure.m4 >>> new file mode 100644 >>> index 0000000..bfb1fb0 >>> --- /dev/null >>> +++ b/platform/linux-generic/m4/configure.m4 >>> @@ -0,0 +1,18 @@ >>> +AC_MSG_CHECKING(for GCC atomic builtins) >>> +AC_LINK_IFELSE( >>> + [AC_LANG_SOURCE( >>> + [[#include <stdint.h> >>> + int main() { >>> + uint32_t v = 1; You don't need to use a uint32_t, a plain "int" should suffice. Thus no need to include <stdint.h> either which should be more robust.
>>> + __atomic_fetch_add(&v, 1, __ATOMIC_RELAXED); >>> + __atomic_fetch_sub(&v, 1, __ATOMIC_RELAXED); >>> + __atomic_store_n(&v, 1, __ATOMIC_RELAXED); >>> + __atomic_load_n(&v, __ATOMIC_RELAXED); >>> + return 0; >>> + } >>> + ]])], >>> + AC_MSG_RESULT(yes), >>> + AC_MSG_RESULT(no) >>> + echo "Atomic operation are not supported by your compiller." "compiller" speling erorr. I think the message should be more detailed. echo "GCC-style __atomic builtins not supported by the compiler" >>> + echo "Use newer version. For gcc > 4.7.3" >> >> Why >4.7.3? Minor releases do not introduce major new features. >> __atomic support was introduced on GCC 4.7.0. > > I have ubuntu 12.04 and there is 4.7.3. And it definatelly works there. So I > just set tested value. > I'm ok to change it to 4.7.0. Good. > > Maxim. > >> >>> + exit -1) >>> -- >>> 1.8.5.1.163.gd7aced9 >>> >>> >>> _______________________________________________ >>> lng-odp mailing list >>> [email protected] >>> http://lists.linaro.org/mailman/listinfo/lng-odp > > _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
