mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-30 00:21:06 +00:00
c09d29057a
v7_maint_dcache_all() does not work reliable when build with gcc6, see: https://bugzilla.redhat.com/show_bug.cgi?id=1318788 While debugging this I learned that v7_maint_dcache_all() is unreliable when build with gcc5 too when it is marked as noinline. This commit fixes the reliability issues by replacing the C-code with the ready to use asm implementation from the kernel. Given that this code when written as C-code clearly is quite fragile (also see the existing comments about the C-code being the way it is to get optimal assembly) and that we have a proven asm alternative, I believe that this is the best solution. Note that we actually already had a copy of the kernel's v7_flush_dcache_all() before this commit in arch/arm/mach-uniphier/arm32/lowlevel_init.S. This commit moves that code arch/arm/cpu/armv7/cache_v7_asm.S, renames it to __v7_flush_dcache_all(), and adds a v7_flush_dcache_all() wrapper which saves / restores the clobbered registers for use from C-code. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Acked-by: Masahiro Yamada <yamada.masahiro@socionext.com>
54 lines
1.4 KiB
Makefile
54 lines
1.4 KiB
Makefile
#
|
|
# (C) Copyright 2000-2003
|
|
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
#
|
|
|
|
extra-y := start.o
|
|
|
|
obj-y += cache_v7.o cache_v7_asm.o
|
|
|
|
obj-y += cpu.o cp15.o
|
|
obj-y += syslib.o
|
|
|
|
ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA),)
|
|
ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
|
|
obj-y += lowlevel_init.o
|
|
endif
|
|
endif
|
|
|
|
ifneq ($(CONFIG_ARMV7_NONSEC),)
|
|
obj-y += nonsec_virt.o
|
|
obj-y += virt-v7.o
|
|
obj-y += virt-dt.o
|
|
endif
|
|
|
|
ifneq ($(CONFIG_ARMV7_PSCI),)
|
|
obj-y += psci.o
|
|
endif
|
|
|
|
obj-$(CONFIG_IPROC) += iproc-common/
|
|
obj-$(CONFIG_KONA) += kona-common/
|
|
obj-$(CONFIG_OMAP_COMMON) += omap-common/
|
|
obj-$(CONFIG_SYS_ARCH_TIMER) += arch_timer.o
|
|
|
|
ifneq (,$(filter s5pc1xx exynos,$(SOC)))
|
|
obj-y += s5p-common/
|
|
endif
|
|
|
|
obj-$(if $(filter am33xx,$(SOC)),y) += am33xx/
|
|
obj-$(if $(filter bcm281xx,$(SOC)),y) += bcm281xx/
|
|
obj-$(if $(filter bcmcygnus,$(SOC)),y) += bcmcygnus/
|
|
obj-$(if $(filter bcmnsp,$(SOC)),y) += bcmnsp/
|
|
obj-$(if $(filter ls102xa,$(SOC)),y) += ls102xa/
|
|
obj-$(if $(filter mx5,$(SOC)),y) += mx5/
|
|
obj-$(CONFIG_MX6) += mx6/
|
|
obj-$(CONFIG_MX7) += mx7/
|
|
obj-$(CONFIG_OMAP34XX) += omap3/
|
|
obj-$(CONFIG_OMAP44XX) += omap4/
|
|
obj-$(CONFIG_OMAP54XX) += omap5/
|
|
obj-$(CONFIG_RMOBILE) += rmobile/
|
|
obj-$(if $(filter stv0991,$(SOC)),y) += stv0991/
|
|
obj-$(CONFIG_ARCH_SUNXI) += sunxi/
|
|
obj-$(CONFIG_VF610) += vf610/
|