uclibc: arc: Disable usage of atomic ops if hardware has no LLSC
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>
Wed, 19 Apr 2017 17:48:57 +0000 (20:48 +0300)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Thu, 4 May 2017 20:51:58 +0000 (22:51 +0200)
Since uClibc-ng v1.0.20 we can force libc to either use llock/scond
instructions for atomic ops or if those are missing use kernel-assisted
emulation. By default atomics are used so we disable that feature in
libc if we build for a target without LLSC.

This allows us to build and use NPTL on ARC750 for example which was not
possible before.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
package/uclibc/uclibc.mk

index f47b3ec3bfefc4ac390060f883fe27a1e8206817..bbf389e327fe4eac77f837daf8232a3c0f03f76c 100644 (file)
@@ -101,6 +101,12 @@ define UCLIBC_ARC_PAGE_SIZE_CONFIG
        $(call KCONFIG_ENABLE_OPT,$(UCLIBC_ARC_PAGE_SIZE),$(@D)/.config)
 endef
 
+ifeq ($(BR2_ARC_ATOMIC_EXT),)
+define UCLIBC_ARC_ATOMICS_CONFIG
+       $(call KCONFIG_DISABLE_OPT,CONFIG_ARC_HAS_ATOMICS,$(@D)/.config)
+endef
+endif
+
 endif # arc
 
 #
@@ -395,6 +401,7 @@ define UCLIBC_KCONFIG_FIXUP_CMDS
        $(UCLIBC_BINFMT_CONFIG)
        $(UCLIBC_ARC_TYPE_CONFIG)
        $(UCLIBC_ARC_PAGE_SIZE_CONFIG)
+       $(UCLIBC_ARC_ATOMICS_CONFIG)
        $(UCLIBC_ARM_ABI_CONFIG)
        $(UCLIBC_ARM_BINFMT_FLAT)
        $(UCLIBC_ARM_NO_CONTEXT_FUNCS)