![Paul Burton](/assets/img/avatar_default.png)
When Loongson3 LL/SC errata workarounds are enabled (ie. CONFIG_CPU_LOONGSON3_WORKAROUNDS=y) run a tool to scan through the compiled kernel & ensure that the workaround is applied correctly. That is, ensure that: - Every LL or LLD instruction is preceded by a sync instruction. - Any branches from within an LL/SC loop to outside of that loop target a sync instruction. Reasoning for these conditions can be found by reading the comment above the definition of __SYNC_loongson3_war in arch/mips/include/asm/sync.h. This tool will help ensure that we don't inadvertently introduce code paths that miss the required workarounds. Signed-off-by: Paul Burton <paul.burton@mips.com> Cc: linux-mips@vger.kernel.org Cc: Huacai Chen <chenhc@lemote.com> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: linux-kernel@vger.kernel.org
45 lines
962 B
Makefile
45 lines
962 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# ===========================================================================
|
|
# Post-link MIPS pass
|
|
# ===========================================================================
|
|
#
|
|
# 1. Check that Loongson3 LL/SC workarounds are applied correctly
|
|
# 2. Insert relocations into vmlinux
|
|
|
|
PHONY := __archpost
|
|
__archpost:
|
|
|
|
-include include/config/auto.conf
|
|
include scripts/Kbuild.include
|
|
|
|
CMD_LS3_LLSC = arch/mips/tools/loongson3-llsc-check
|
|
quiet_cmd_ls3_llsc = LLSCCHK $@
|
|
cmd_ls3_llsc = $(CMD_LS3_LLSC) $@
|
|
|
|
CMD_RELOCS = arch/mips/boot/tools/relocs
|
|
quiet_cmd_relocs = RELOCS $@
|
|
cmd_relocs = $(CMD_RELOCS) $@
|
|
|
|
# `@true` prevents complaint when there is nothing to be done
|
|
|
|
vmlinux: FORCE
|
|
@true
|
|
ifeq ($(CONFIG_CPU_LOONGSON3_WORKAROUNDS),y)
|
|
$(call if_changed,ls3_llsc)
|
|
endif
|
|
ifeq ($(CONFIG_RELOCATABLE),y)
|
|
$(call if_changed,relocs)
|
|
endif
|
|
|
|
%.ko: FORCE
|
|
@true
|
|
|
|
clean:
|
|
@true
|
|
|
|
PHONY += FORCE clean
|
|
|
|
FORCE:
|
|
|
|
.PHONY: $(PHONY)
|