ARM: Default to using optimized memset and memcpy routines
We have long had available optimized versions of the memset and memcpy functions that are borrowed from the Linux kernel. We should use these in normal conditions as the speed wins in many workflows outweigh the relatively minor size increase. However, we have a number of places where we're simply too close to size limits in SPL and must be able to make the size vs performance trade-off in those cases. Cc: Philippe Reynes <tremyfr@yahoo.fr> Cc: Eric Jarrige <eric.jarrige@armadeus.org> Cc: Heiko Schocher <hs@denx.de> Cc: Magnus Lilja <lilja.magnus@gmail.com> Cc: Lokesh Vutla <lokeshvutla@ti.com> Cc: Chander Kashyap <k.chander@samsung.com> Cc: Akshay Saraswat <akshay.s@samsung.com> Cc: Simon Glass <sjg@chromium.org> Cc: Stefan Roese <sr@denx.de> Signed-off-by: Tom Rini <trini@konsulko.com> Acked-by: Stefan Roese <sr@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
a4a35934c7
commit
40d5534cff
@ -128,7 +128,16 @@ config ENABLE_ARM_SOC_BOOT0_HOOK
|
||||
|
||||
config USE_ARCH_MEMCPY
|
||||
bool "Use an assembly optimized implementation of memcpy"
|
||||
default y if CPU_V7
|
||||
default y
|
||||
depends on !ARM64
|
||||
help
|
||||
Enable the generation of an optimized version of memcpy.
|
||||
Such implementation may be faster under some conditions
|
||||
but may increase the binary size.
|
||||
|
||||
config SPL_USE_ARCH_MEMCPY
|
||||
bool "Use an assembly optimized implementation of memcpy"
|
||||
default y if USE_ARCH_MEMCPY
|
||||
depends on !ARM64
|
||||
help
|
||||
Enable the generation of an optimized version of memcpy.
|
||||
@ -137,7 +146,16 @@ config USE_ARCH_MEMCPY
|
||||
|
||||
config USE_ARCH_MEMSET
|
||||
bool "Use an assembly optimized implementation of memset"
|
||||
default y if CPU_V7
|
||||
default y
|
||||
depends on !ARM64
|
||||
help
|
||||
Enable the generation of an optimized version of memset.
|
||||
Such implementation may be faster under some conditions
|
||||
but may increase the binary size.
|
||||
|
||||
config SPL_USE_ARCH_MEMSET
|
||||
bool "Use an assembly optimized implementation of memset"
|
||||
default y if USE_ARCH_MEMSET
|
||||
depends on !ARM64
|
||||
help
|
||||
Enable the generation of an optimized version of memset.
|
||||
|
@ -30,12 +30,12 @@ obj-$(CONFIG_CMD_BOOTI) += bootm.o
|
||||
obj-$(CONFIG_CMD_BOOTM) += bootm.o
|
||||
obj-$(CONFIG_CMD_BOOTZ) += bootm.o zimage.o
|
||||
obj-$(CONFIG_SYS_L2_PL310) += cache-pl310.o
|
||||
obj-$(CONFIG_USE_ARCH_MEMSET) += memset.o
|
||||
obj-$(CONFIG_USE_ARCH_MEMCPY) += memcpy.o
|
||||
else
|
||||
obj-$(CONFIG_SPL_FRAMEWORK) += spl.o
|
||||
obj-$(CONFIG_SPL_FRAMEWORK) += zimage.o
|
||||
endif
|
||||
obj-$(CONFIG_$(SPL_)USE_ARCH_MEMSET) += memset.o
|
||||
obj-$(CONFIG_$(SPL_)USE_ARCH_MEMCPY) += memcpy.o
|
||||
obj-$(CONFIG_SEMIHOSTING) += semihosting.o
|
||||
|
||||
obj-y += sections.o
|
||||
|
@ -17,7 +17,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
||||
*/
|
||||
#if !defined(CONFIG_SPL_BUILD) || \
|
||||
(defined(CONFIG_SPL_LIBGENERIC_SUPPORT) && \
|
||||
!defined(CONFIG_USE_ARCH_MEMSET))
|
||||
!defined(CONFIG_SPL_USE_ARCH_MEMCPY))
|
||||
#define _USE_MEMCPY
|
||||
#endif
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
CONFIG_TARGET_APF27=y
|
||||
CONFIG_SPL_NAND_SUPPORT=y
|
||||
CONFIG_SPL_SERIAL_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_AT91=y
|
||||
CONFIG_TARGET_TAURUS=y
|
||||
CONFIG_SPL_GPIO_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_AT91=y
|
||||
CONFIG_TARGET_CORVUS=y
|
||||
CONFIG_SPL_GPIO_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_TARGET_MX31PDK=y
|
||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
CONFIG_SPL_NAND_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_OMAP44XX=y
|
||||
# CONFIG_SPL_I2C_SUPPORT is not set
|
||||
# CONFIG_SPL_NAND_SUPPORT is not set
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_AT91=y
|
||||
CONFIG_TARGET_SMARTWEB=y
|
||||
CONFIG_SPL_GPIO_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_EXYNOS=y
|
||||
CONFIG_ARCH_EXYNOS5=y
|
||||
CONFIG_TARGET_SMDK5250=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_EXYNOS=y
|
||||
CONFIG_ARCH_EXYNOS5=y
|
||||
CONFIG_TARGET_SNOW=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_EXYNOS=y
|
||||
CONFIG_ARCH_EXYNOS5=y
|
||||
CONFIG_TARGET_SPRING=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_ARCH_AT91=y
|
||||
CONFIG_TARGET_TAURUS=y
|
||||
CONFIG_SPL_GPIO_SUPPORT=y
|
||||
|
@ -1,4 +1,6 @@
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_SPL_USE_ARCH_MEMCPY is not set
|
||||
# CONFIG_SPL_USE_ARCH_MEMSET is not set
|
||||
CONFIG_TARGET_X600=y
|
||||
CONFIG_SPL_LIBCOMMON_SUPPORT=y
|
||||
CONFIG_SPL_LIBGENERIC_SUPPORT=y
|
||||
|
@ -35,6 +35,9 @@ EXT_COBJ-y += lib/string.o
|
||||
EXT_COBJ-y += lib/time.o
|
||||
EXT_COBJ-y += lib/vsprintf.o
|
||||
EXT_SOBJ-$(CONFIG_PPC) += arch/powerpc/lib/ppcstring.o
|
||||
ifeq ($(ARCH),arm)
|
||||
EXT_SOBJ-$(CONFIG_USE_ARCH_MEMSET) += arch/arm/lib/memset.o
|
||||
endif
|
||||
|
||||
# Create a list of object files to be compiled
|
||||
OBJS := $(OBJ-y) $(notdir $(EXT_COBJ-y) $(EXT_SOBJ-y))
|
||||
@ -60,5 +63,5 @@ $(addprefix $(obj)/,$(notdir $(EXT_COBJ-y))): $(obj)/%.o: lib/%.c FORCE
|
||||
$(call if_changed_rule,cc_o_c)
|
||||
|
||||
# Rule to build architecture-specific library assembly files
|
||||
$(addprefix $(obj)/,$(notdir $(EXT_SOBJ-y))): $(obj)/%.o: arch/powerpc/lib/%.S FORCE
|
||||
$(addprefix $(obj)/,$(notdir $(EXT_SOBJ-y))): $(obj)/%.o: arch/$(ARCH)/lib/%.S FORCE
|
||||
$(call if_changed_dep,as_o_S)
|
||||
|
Loading…
Reference in New Issue
Block a user