toolchain: Add config option for atomic intrinsics

GCC has several builtin functions that implement atomic operations. Those
functions are architecture specific and may not be implemented by the
specific toolchain. In case of GCC for ARC those functions rely on
LLOCK/SCOND instructions which are optional in ARC CPU's. If ARC CPU doesn't
support those instructions but software tries to use them, then application
will be aborted with Illegal instruction exception. To avoid confusion user
should first specify that their CPU supports atomic extension, which will
allow selection of packages that use builtin atomic functions.

Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Anton Kolesov 2014-07-31 17:24:42 +04:00 committed by Thomas Petazzoni
parent 21205fced5
commit cbffd50561
3 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,8 @@
# Choise of atomic instructions presence
config BR2_ARC_ATOMIC_EXT
bool "Atomic extension (LLOCK/SCOND instructions)"
select BR2_TOOLCHAIN_HAS_ATOMIC_INTRINSICS
config BR2_ARCH
default "arc" if BR2_arcle
default "arceb" if BR2_arceb

View File

@ -102,6 +102,10 @@ ifeq ($(BR2_xtensa),y)
TARGET_ABI += -mlongcalls -mtext-section-literals
endif
ifeq ($(BR2_arc)$(BR2_ARC_ATOMIC_EXT),yy)
TARGET_ABI += -matomic
endif
STAGING_SUBDIR = usr/$(GNU_TARGET_NAME)/sysroot
STAGING_DIR = $(HOST_DIR)/$(STAGING_SUBDIR)

View File

@ -44,6 +44,10 @@ config BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
config BR2_TOOLCHAIN_HAS_SSP
bool
config BR2_TOOLCHAIN_HAS_ATOMIC_INTRINSICS
bool
default y if !BR2_arc
config BR2_ENABLE_LOCALE_PURGE
bool "Purge unwanted locales"
help