mirror of https://github.com/OpenIPC/firmware.git
86 lines
2.7 KiB
Diff
86 lines
2.7 KiB
Diff
diff -drupN a/arch/arm64/Makefile b/arch/arm64/Makefile
|
|
--- a/arch/arm64/Makefile 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/arch/arm64/Makefile 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -26,8 +26,17 @@ ifeq ($(CONFIG_ARM64_ERRATUM_843419),y)
|
|
ifeq ($(call ld-option, --fix-cortex-a53-843419),)
|
|
$(warning ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum)
|
|
else
|
|
+ ifeq ($(call gold-ifversion, -lt, 114000000, y), y)
|
|
+$(warning This version of GNU gold may generate incorrect code with --fix-cortex-a53-843419;\
|
|
+ see https://sourceware.org/bugzilla/show_bug.cgi?id=21491)
|
|
+ endif
|
|
LDFLAGS_vmlinux += --fix-cortex-a53-843419
|
|
endif
|
|
+else
|
|
+ ifeq ($(ld-name),gold)
|
|
+# Pass --no-fix-cortex-a53-843419 to ensure the erratum fix is disabled
|
|
+LDFLAGS += --no-fix-cortex-a53-843419
|
|
+ endif
|
|
endif
|
|
|
|
KBUILD_DEFCONFIG := defconfig
|
|
@@ -41,9 +50,17 @@ $(warning LSE atomics not supported by b
|
|
endif
|
|
endif
|
|
|
|
-KBUILD_CFLAGS += -mgeneral-regs-only $(lseinstr)
|
|
+ifeq ($(cc-name),clang)
|
|
+# This is a workaround for https://bugs.llvm.org/show_bug.cgi?id=30792.
|
|
+# TODO: revert when this is fixed in LLVM.
|
|
+KBUILD_CFLAGS += -mno-implicit-float
|
|
+else
|
|
+KBUILD_CFLAGS += -mgeneral-regs-only
|
|
+endif
|
|
+KBUILD_CFLAGS += $(lseinstr)
|
|
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
|
KBUILD_CFLAGS += $(call cc-option, -mpc-relative-literal-loads)
|
|
+KBUILD_CFLAGS += -fno-pic
|
|
KBUILD_AFLAGS += $(lseinstr)
|
|
|
|
ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
|
|
@@ -62,6 +79,10 @@ CHECKFLAGS += -D__aarch64__
|
|
|
|
ifeq ($(CONFIG_ARM64_MODULE_CMODEL_LARGE), y)
|
|
KBUILD_CFLAGS_MODULE += -mcmodel=large
|
|
+ifeq ($(CONFIG_LTO_CLANG), y)
|
|
+# Code model is not stored in LLVM IR, so we need to pass it also to LLVMgold
|
|
+LDFLAGS += -plugin-opt=-code-model=large
|
|
+endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ARM64_MODULE_PLTS),y)
|
|
@@ -80,6 +101,10 @@ else
|
|
TEXT_OFFSET := 0x00080000
|
|
endif
|
|
|
|
+ifeq ($(cc-name),clang)
|
|
+KBUILD_CFLAGS += $(call cc-disable-warning, asm-operand-widths)
|
|
+endif
|
|
+
|
|
# KASAN_SHADOW_OFFSET = VA_START + (1 << (VA_BITS - 3)) - (1 << 61)
|
|
# in 32-bit arithmetic
|
|
KASAN_SHADOW_OFFSET := $(shell printf "0x%08x00000000\n" $$(( \
|
|
@@ -98,7 +123,12 @@ libs-y := arch/arm64/lib/ $(libs-y)
|
|
core-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
|
|
|
# Default target when executing plain make
|
|
+ifeq ($(CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE),y)
|
|
+KBUILD_IMAGE := $(subst $\",,$(CONFIG_BUILD_ARM64_APPENDED_KERNEL_IMAGE_NAME))
|
|
+else
|
|
KBUILD_IMAGE := Image.gz
|
|
+endif
|
|
+
|
|
KBUILD_DTBS := dtbs
|
|
|
|
all: $(KBUILD_IMAGE) $(KBUILD_DTBS)
|
|
@@ -125,6 +155,9 @@ dtbs: prepare scripts
|
|
dtbs_install:
|
|
$(Q)$(MAKE) $(dtbinst)=$(boot)/dts
|
|
|
|
+Image-dtb Image.gz-dtb: vmlinux scripts dtbs
|
|
+ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
|
+
|
|
PHONY += vdso_install
|
|
vdso_install:
|
|
$(Q)$(MAKE) $(build)=arch/arm64/kernel/vdso $@
|