Commit cbffd505 authored by Anton Kolesov's avatar Anton Kolesov Committed by Thomas Petazzoni
Browse files

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: default avatarAnton Kolesov <Anton.Kolesov@synopsys.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 21205fce
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
# 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
+4 −0
Original line number Diff line number Diff line
@@ -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)

+4 −0
Original line number Diff line number Diff line
@@ -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