2022-05-31 03:04:11 -07:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
#
|
|
|
|
# Author: Huacai Chen <chenhuacai@loongson.cn>
|
|
|
|
# Copyright (C) 2020-2022 Loongson Technology Corporation Limited
|
|
|
|
|
|
|
|
boot := arch/loongarch/boot
|
|
|
|
|
2022-05-31 03:04:12 -07:00
|
|
|
KBUILD_DEFCONFIG := loongson3_defconfig
|
2024-01-16 21:43:00 -07:00
|
|
|
KBUILD_DTBS := dtbs
|
2022-05-31 03:04:12 -07:00
|
|
|
|
2022-08-22 05:39:49 -07:00
|
|
|
image-name-y := vmlinux
|
|
|
|
image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz
|
|
|
|
|
efi/loongarch: Add efistub booting support
This patch adds efistub booting support, which is the standard UEFI boot
protocol for LoongArch to use.
We use generic efistub, which means we can pass boot information (i.e.,
system table, memory map, kernel command line, initrd) via a light FDT
and drop a lot of non-standard code.
We use a flat mapping to map the efi runtime in the kernel's address
space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result,
flat mapping is not identity mapping, SetVirtualAddressMap() is still
needed for the efi runtime.
Tested-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
[ardb: change fpic to fpie as suggested by Xi Ruoyao]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2022-08-19 03:20:37 -07:00
|
|
|
ifndef CONFIG_EFI_STUB
|
|
|
|
KBUILD_IMAGE := $(boot)/vmlinux.elf
|
|
|
|
else
|
2022-08-22 05:39:49 -07:00
|
|
|
KBUILD_IMAGE := $(boot)/$(image-name-y).efi
|
efi/loongarch: Add efistub booting support
This patch adds efistub booting support, which is the standard UEFI boot
protocol for LoongArch to use.
We use generic efistub, which means we can pass boot information (i.e.,
system table, memory map, kernel command line, initrd) via a light FDT
and drop a lot of non-standard code.
We use a flat mapping to map the efi runtime in the kernel's address
space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result,
flat mapping is not identity mapping, SetVirtualAddressMap() is still
needed for the efi runtime.
Tested-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
[ardb: change fpic to fpie as suggested by Xi Ruoyao]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2022-08-19 03:20:37 -07:00
|
|
|
endif
|
2022-05-31 03:04:11 -07:00
|
|
|
|
|
|
|
#
|
|
|
|
# Select the object file format to substitute into the linker script.
|
|
|
|
#
|
|
|
|
64bit-tool-archpref = loongarch64
|
|
|
|
32bit-bfd = elf32-loongarch
|
|
|
|
64bit-bfd = elf64-loongarch
|
|
|
|
32bit-emul = elf32loongarch
|
|
|
|
64bit-emul = elf64loongarch
|
|
|
|
|
2024-03-29 00:18:22 -07:00
|
|
|
CC_FLAGS_FPU := -mfpu=64
|
|
|
|
CC_FLAGS_NO_FPU := -msoft-float
|
|
|
|
|
2024-03-11 07:23:47 -07:00
|
|
|
ifdef CONFIG_UNWINDER_ORC
|
|
|
|
orc_hash_h := arch/$(SRCARCH)/include/generated/asm/orc_hash.h
|
|
|
|
orc_hash_sh := $(srctree)/scripts/orc_hash.sh
|
|
|
|
targets += $(orc_hash_h)
|
|
|
|
quiet_cmd_orc_hash = GEN $@
|
|
|
|
cmd_orc_hash = mkdir -p $(dir $@); \
|
|
|
|
$(CONFIG_SHELL) $(orc_hash_sh) < $< > $@
|
|
|
|
$(orc_hash_h): $(srctree)/arch/loongarch/include/asm/orc_types.h $(orc_hash_sh) FORCE
|
|
|
|
$(call if_changed,orc_hash)
|
|
|
|
archprepare: $(orc_hash_h)
|
|
|
|
endif
|
|
|
|
|
2022-12-10 07:40:15 -07:00
|
|
|
ifdef CONFIG_DYNAMIC_FTRACE
|
|
|
|
KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTION_ENTRY
|
|
|
|
CC_FLAGS_FTRACE := -fpatchable-function-entry=2
|
|
|
|
endif
|
|
|
|
|
2022-05-31 03:04:11 -07:00
|
|
|
ifdef CONFIG_64BIT
|
|
|
|
tool-archpref = $(64bit-tool-archpref)
|
|
|
|
UTS_MACHINE := loongarch64
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(SUBARCH),$(ARCH))
|
|
|
|
ifeq ($(CROSS_COMPILE),)
|
|
|
|
CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-)
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifdef CONFIG_64BIT
|
|
|
|
ld-emul = $(64bit-emul)
|
|
|
|
cflags-y += -mabi=lp64s
|
|
|
|
endif
|
|
|
|
|
2024-03-29 00:18:22 -07:00
|
|
|
cflags-y += -pipe $(CC_FLAGS_NO_FPU)
|
LoongArch: Tweak CFLAGS for Clang compatibility
Now the arch code is mostly ready for LLVM/Clang consumption, it is time
to re-organize the CFLAGS a little to actually enable the LLVM build.
Namely, all -G0 switches from CFLAGS are removed, and -mexplicit-relocs
and -mdirect-extern-access are now wrapped with cc-option (with the
related asm/percpu.h definition guarded against toolchain combos that
are known to not work).
A build with !RELOCATABLE && !MODULE is confirmed working within a QEMU
environment; support for the two features are currently blocked on
LLVM/Clang, and will come later.
Why -G0 can be removed:
In GCC, -G stands for "small data threshold", that instructs the
compiler to put data smaller than the specified threshold in a dedicated
"small data" section (called .sdata on LoongArch and several other
arches).
However, benefiting from this would require ABI cooperation, which is
not the case for LoongArch; and current GCC behave the same whether -G0
(equal to disabling this optimization) is given or not. So, remove -G0
from CFLAGS altogether for one less thing to care about. This also
benefits LLVM/Clang compatibility where the -G switch is not supported.
Why -mexplicit-relocs can now be conditionally applied without
regressions:
Originally -mexplicit-relocs is unconditionally added to CFLAGS in case
of CONFIG_AS_HAS_EXPLICIT_RELOCS, because not having it (i.e. old GCC +
new binutils) would not work: modules will have R_LARCH_ABS_* relocs
inside, but given the rarity of such toolchain combo in the wild, it may
not be worthwhile to support it, so support for such relocs in modules
were not added back when explicit relocs support was upstreamed, and
-mexplicit-relocs is unconditionally added to fail the build early.
Now that Clang compatibility is desired, given Clang is behaving like
-mexplicit-relocs from day one but without support for the CLI flag, we
must ensure the flag is not passed in case of Clang. However, explicit
compiler flavor checks can be more brittle than feature detection: in
this case what actually matters is support for __attribute__((model))
when building modules. Given neither older GCC nor current Clang support
this attribute, probing for the attribute support and #error'ing out
would allow proper UX without checking for Clang, and also automatically
work when Clang support for the attribute is to be added in the future.
Why -mdirect-extern-access is now conditionally applied:
This is actually a nice-to-have optimization that can reduce GOT
accesses, but not having it is harmless either. Because Clang does not
support the option currently, but might do so in the future, conditional
application via cc-option ensures compatibility with both current and
future Clang versions.
Suggested-by: Xi Ruoyao <xry111@xry111.site> # cc-option changes
Signed-off-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2023-06-29 05:58:43 -07:00
|
|
|
LDFLAGS_vmlinux += -static -n -nostdlib
|
2022-10-12 01:36:08 -07:00
|
|
|
|
|
|
|
# When the assembler supports explicit relocation hint, we must use it.
|
|
|
|
# GCC may have -mexplicit-relocs off by default if it was built with an old
|
|
|
|
# assembler, so we force it via an option.
|
|
|
|
#
|
|
|
|
# When the assembler does not supports explicit relocation hint, we can't use
|
|
|
|
# it. Disable it if the compiler supports it.
|
|
|
|
#
|
LoongArch: Tweak CFLAGS for Clang compatibility
Now the arch code is mostly ready for LLVM/Clang consumption, it is time
to re-organize the CFLAGS a little to actually enable the LLVM build.
Namely, all -G0 switches from CFLAGS are removed, and -mexplicit-relocs
and -mdirect-extern-access are now wrapped with cc-option (with the
related asm/percpu.h definition guarded against toolchain combos that
are known to not work).
A build with !RELOCATABLE && !MODULE is confirmed working within a QEMU
environment; support for the two features are currently blocked on
LLVM/Clang, and will come later.
Why -G0 can be removed:
In GCC, -G stands for "small data threshold", that instructs the
compiler to put data smaller than the specified threshold in a dedicated
"small data" section (called .sdata on LoongArch and several other
arches).
However, benefiting from this would require ABI cooperation, which is
not the case for LoongArch; and current GCC behave the same whether -G0
(equal to disabling this optimization) is given or not. So, remove -G0
from CFLAGS altogether for one less thing to care about. This also
benefits LLVM/Clang compatibility where the -G switch is not supported.
Why -mexplicit-relocs can now be conditionally applied without
regressions:
Originally -mexplicit-relocs is unconditionally added to CFLAGS in case
of CONFIG_AS_HAS_EXPLICIT_RELOCS, because not having it (i.e. old GCC +
new binutils) would not work: modules will have R_LARCH_ABS_* relocs
inside, but given the rarity of such toolchain combo in the wild, it may
not be worthwhile to support it, so support for such relocs in modules
were not added back when explicit relocs support was upstreamed, and
-mexplicit-relocs is unconditionally added to fail the build early.
Now that Clang compatibility is desired, given Clang is behaving like
-mexplicit-relocs from day one but without support for the CLI flag, we
must ensure the flag is not passed in case of Clang. However, explicit
compiler flavor checks can be more brittle than feature detection: in
this case what actually matters is support for __attribute__((model))
when building modules. Given neither older GCC nor current Clang support
this attribute, probing for the attribute support and #error'ing out
would allow proper UX without checking for Clang, and also automatically
work when Clang support for the attribute is to be added in the future.
Why -mdirect-extern-access is now conditionally applied:
This is actually a nice-to-have optimization that can reduce GOT
accesses, but not having it is harmless either. Because Clang does not
support the option currently, but might do so in the future, conditional
application via cc-option ensures compatibility with both current and
future Clang versions.
Suggested-by: Xi Ruoyao <xry111@xry111.site> # cc-option changes
Signed-off-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2023-06-29 05:58:43 -07:00
|
|
|
# The combination of a "new" assembler and "old" GCC is not supported, given
|
|
|
|
# the rarity of this combo and the extra complexity needed to make it work.
|
|
|
|
# Either upgrade the compiler or downgrade the assembler; the build will error
|
|
|
|
# out if it is the case (by probing for the model attribute; all supported
|
|
|
|
# compilers in this case would have support).
|
|
|
|
#
|
|
|
|
# Also, -mdirect-extern-access is useful in case of building with explicit
|
|
|
|
# relocs, for avoiding unnecessary GOT accesses. It is harmless to not have
|
|
|
|
# support though.
|
2022-10-12 01:36:08 -07:00
|
|
|
ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS
|
LoongArch: Tweak CFLAGS for Clang compatibility
Now the arch code is mostly ready for LLVM/Clang consumption, it is time
to re-organize the CFLAGS a little to actually enable the LLVM build.
Namely, all -G0 switches from CFLAGS are removed, and -mexplicit-relocs
and -mdirect-extern-access are now wrapped with cc-option (with the
related asm/percpu.h definition guarded against toolchain combos that
are known to not work).
A build with !RELOCATABLE && !MODULE is confirmed working within a QEMU
environment; support for the two features are currently blocked on
LLVM/Clang, and will come later.
Why -G0 can be removed:
In GCC, -G stands for "small data threshold", that instructs the
compiler to put data smaller than the specified threshold in a dedicated
"small data" section (called .sdata on LoongArch and several other
arches).
However, benefiting from this would require ABI cooperation, which is
not the case for LoongArch; and current GCC behave the same whether -G0
(equal to disabling this optimization) is given or not. So, remove -G0
from CFLAGS altogether for one less thing to care about. This also
benefits LLVM/Clang compatibility where the -G switch is not supported.
Why -mexplicit-relocs can now be conditionally applied without
regressions:
Originally -mexplicit-relocs is unconditionally added to CFLAGS in case
of CONFIG_AS_HAS_EXPLICIT_RELOCS, because not having it (i.e. old GCC +
new binutils) would not work: modules will have R_LARCH_ABS_* relocs
inside, but given the rarity of such toolchain combo in the wild, it may
not be worthwhile to support it, so support for such relocs in modules
were not added back when explicit relocs support was upstreamed, and
-mexplicit-relocs is unconditionally added to fail the build early.
Now that Clang compatibility is desired, given Clang is behaving like
-mexplicit-relocs from day one but without support for the CLI flag, we
must ensure the flag is not passed in case of Clang. However, explicit
compiler flavor checks can be more brittle than feature detection: in
this case what actually matters is support for __attribute__((model))
when building modules. Given neither older GCC nor current Clang support
this attribute, probing for the attribute support and #error'ing out
would allow proper UX without checking for Clang, and also automatically
work when Clang support for the attribute is to be added in the future.
Why -mdirect-extern-access is now conditionally applied:
This is actually a nice-to-have optimization that can reduce GOT
accesses, but not having it is harmless either. Because Clang does not
support the option currently, but might do so in the future, conditional
application via cc-option ensures compatibility with both current and
future Clang versions.
Suggested-by: Xi Ruoyao <xry111@xry111.site> # cc-option changes
Signed-off-by: WANG Xuerui <git@xen0n.name>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
2023-06-29 05:58:43 -07:00
|
|
|
cflags-y += $(call cc-option,-mexplicit-relocs)
|
|
|
|
KBUILD_CFLAGS_KERNEL += $(call cc-option,-mdirect-extern-access)
|
2023-11-21 00:03:25 -07:00
|
|
|
KBUILD_CFLAGS_KERNEL += $(call cc-option,-fdirect-access-external-data)
|
2023-11-07 23:12:07 -07:00
|
|
|
KBUILD_AFLAGS_MODULE += $(call cc-option,-fno-direct-access-external-data)
|
|
|
|
KBUILD_CFLAGS_MODULE += $(call cc-option,-fno-direct-access-external-data)
|
2022-10-12 01:36:08 -07:00
|
|
|
else
|
|
|
|
cflags-y += $(call cc-option,-mno-explicit-relocs)
|
2022-05-31 03:04:11 -07:00
|
|
|
KBUILD_AFLAGS_KERNEL += -Wa,-mla-global-with-pcrel
|
|
|
|
KBUILD_CFLAGS_KERNEL += -Wa,-mla-global-with-pcrel
|
|
|
|
KBUILD_AFLAGS_MODULE += -Wa,-mla-global-with-abs
|
|
|
|
KBUILD_CFLAGS_MODULE += -fplt -Wa,-mla-global-with-abs,-mla-local-with-abs
|
2022-10-12 01:36:08 -07:00
|
|
|
endif
|
2022-05-31 03:04:11 -07:00
|
|
|
|
2024-03-11 07:23:47 -07:00
|
|
|
KBUILD_AFLAGS += $(call cc-option,-mno-relax) $(call cc-option,-Wa$(comma)-mno-relax)
|
|
|
|
KBUILD_CFLAGS += $(call cc-option,-mno-relax) $(call cc-option,-Wa$(comma)-mno-relax)
|
|
|
|
KBUILD_AFLAGS += $(call cc-option,-mthin-add-sub) $(call cc-option,-Wa$(comma)-mthin-add-sub)
|
|
|
|
KBUILD_CFLAGS += $(call cc-option,-mthin-add-sub) $(call cc-option,-Wa$(comma)-mthin-add-sub)
|
|
|
|
|
|
|
|
ifdef CONFIG_OBJTOOL
|
|
|
|
KBUILD_CFLAGS += -fno-jump-tables
|
|
|
|
endif
|
|
|
|
|
2024-05-13 21:24:18 -07:00
|
|
|
KBUILD_RUSTFLAGS += --target=loongarch64-unknown-none-softfloat
|
2024-07-20 07:41:07 -07:00
|
|
|
KBUILD_RUSTFLAGS_KERNEL += -Zdirect-access-external-data=yes
|
|
|
|
KBUILD_RUSTFLAGS_MODULE += -Zdirect-access-external-data=no
|
2024-01-16 21:43:00 -07:00
|
|
|
|
2023-02-25 00:52:56 -07:00
|
|
|
ifeq ($(CONFIG_RELOCATABLE),y)
|
|
|
|
KBUILD_CFLAGS_KERNEL += -fPIE
|
2024-01-16 21:43:00 -07:00
|
|
|
KBUILD_RUSTFLAGS_KERNEL += -Crelocation-model=pie
|
2023-12-09 00:49:15 -07:00
|
|
|
LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs)
|
2023-02-25 00:52:56 -07:00
|
|
|
endif
|
|
|
|
|
2022-05-31 03:04:11 -07:00
|
|
|
cflags-y += $(call cc-option, -mno-check-zero-division)
|
2023-09-06 07:54:16 -07:00
|
|
|
|
|
|
|
ifndef CONFIG_KASAN
|
2023-08-25 08:40:26 -07:00
|
|
|
cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset
|
2023-09-06 07:54:16 -07:00
|
|
|
endif
|
2022-05-31 03:04:11 -07:00
|
|
|
|
|
|
|
load-y = 0x9000000000200000
|
|
|
|
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y)
|
|
|
|
|
2022-08-06 00:19:33 -07:00
|
|
|
drivers-$(CONFIG_PCI) += arch/loongarch/pci/
|
|
|
|
|
2022-05-31 03:04:11 -07:00
|
|
|
KBUILD_AFLAGS += $(cflags-y)
|
|
|
|
KBUILD_CFLAGS += $(cflags-y)
|
|
|
|
KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y)
|
|
|
|
|
|
|
|
# This is required to get dwarf unwinding tables into .debug_frame
|
|
|
|
# instead of .eh_frame so we don't discard them.
|
|
|
|
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
|
|
|
|
|
2023-02-25 00:52:56 -07:00
|
|
|
ifdef CONFIG_ARCH_STRICT_ALIGN
|
2022-05-31 03:04:11 -07:00
|
|
|
# Don't emit unaligned accesses.
|
|
|
|
# Not all LoongArch cores support unaligned access, and as kernel we can't
|
|
|
|
# rely on others to provide emulation for these accesses.
|
|
|
|
KBUILD_CFLAGS += $(call cc-option,-mstrict-align)
|
2023-02-25 00:52:56 -07:00
|
|
|
else
|
|
|
|
# Optimise for performance on hardware supports unaligned access.
|
|
|
|
KBUILD_CFLAGS += $(call cc-option,-mno-strict-align)
|
|
|
|
endif
|
2022-05-31 03:04:11 -07:00
|
|
|
|
|
|
|
KBUILD_CFLAGS += -isystem $(shell $(CC) -print-file-name=include)
|
|
|
|
|
|
|
|
KBUILD_LDFLAGS += -m $(ld-emul)
|
|
|
|
|
2023-07-27 19:30:42 -07:00
|
|
|
ifdef need-compiler
|
2023-06-29 05:58:43 -07:00
|
|
|
CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
|
2022-11-21 04:02:57 -07:00
|
|
|
grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \
|
2022-05-31 03:04:11 -07:00
|
|
|
sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
|
|
|
|
endif
|
|
|
|
|
|
|
|
libs-y += arch/loongarch/lib/
|
efi/loongarch: Add efistub booting support
This patch adds efistub booting support, which is the standard UEFI boot
protocol for LoongArch to use.
We use generic efistub, which means we can pass boot information (i.e.,
system table, memory map, kernel command line, initrd) via a light FDT
and drop a lot of non-standard code.
We use a flat mapping to map the efi runtime in the kernel's address
space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result,
flat mapping is not identity mapping, SetVirtualAddressMap() is still
needed for the efi runtime.
Tested-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
[ardb: change fpic to fpie as suggested by Xi Ruoyao]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2022-08-19 03:20:37 -07:00
|
|
|
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
2022-05-31 03:04:11 -07:00
|
|
|
|
2023-05-01 02:19:43 -07:00
|
|
|
drivers-y += arch/loongarch/crypto/
|
|
|
|
|
2022-12-10 07:40:15 -07:00
|
|
|
# suspend and hibernation support
|
|
|
|
drivers-$(CONFIG_PM) += arch/loongarch/power/
|
|
|
|
|
2022-05-31 03:04:11 -07:00
|
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
|
|
prepare: vdso_prepare
|
|
|
|
vdso_prepare: prepare0
|
|
|
|
$(Q)$(MAKE) $(build)=arch/loongarch/vdso include/generated/vdso-offsets.h
|
|
|
|
endif
|
|
|
|
|
kbuild: unify vdso_install rules
Currently, there is no standard implementation for vdso_install,
leading to various issues:
1. Code duplication
Many architectures duplicate similar code just for copying files
to the install destination.
Some architectures (arm, sparc, x86) create build-id symlinks,
introducing more code duplication.
2. Unintended updates of in-tree build artifacts
The vdso_install rule depends on the vdso files to install.
It may update in-tree build artifacts. This can be problematic,
as explained in commit 19514fc665ff ("arm, kbuild: make
"make install" not depend on vmlinux").
3. Broken code in some architectures
Makefile code is often copied from one architecture to another
without proper adaptation.
'make vdso_install' for parisc does not work.
'make vdso_install' for s390 installs vdso64, but not vdso32.
To address these problems, this commit introduces a generic vdso_install
rule.
Architectures that support vdso_install need to define vdso-install-y
in arch/*/Makefile. vdso-install-y lists the files to install.
For example, arch/x86/Makefile looks like this:
vdso-install-$(CONFIG_X86_64) += arch/x86/entry/vdso/vdso64.so.dbg
vdso-install-$(CONFIG_X86_X32_ABI) += arch/x86/entry/vdso/vdsox32.so.dbg
vdso-install-$(CONFIG_X86_32) += arch/x86/entry/vdso/vdso32.so.dbg
vdso-install-$(CONFIG_IA32_EMULATION) += arch/x86/entry/vdso/vdso32.so.dbg
These files will be installed to $(MODLIB)/vdso/ with the .dbg suffix,
if exists, stripped away.
vdso-install-y can optionally take the second field after the colon
separator. This is needed because some architectures install a vdso
file as a different base name.
The following is a snippet from arch/arm64/Makefile.
vdso-install-$(CONFIG_COMPAT_VDSO) += arch/arm64/kernel/vdso32/vdso.so.dbg:vdso32.so
This will rename vdso.so.dbg to vdso32.so during installation. If such
architectures change their implementation so that the base names match,
this workaround will go away.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Acked-by: Sven Schnelle <svens@linux.ibm.com> # s390
Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
Reviewed-by: Guo Ren <guoren@kernel.org>
Acked-by: Helge Deller <deller@gmx.de> # parisc
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2023-10-14 03:54:35 -07:00
|
|
|
vdso-install-y += arch/loongarch/vdso/vdso.so.dbg
|
2022-05-31 03:04:11 -07:00
|
|
|
|
2024-01-16 21:43:00 -07:00
|
|
|
all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTBS)
|
2022-05-31 03:04:11 -07:00
|
|
|
|
2023-11-21 00:03:25 -07:00
|
|
|
vmlinuz.efi: vmlinux.efi
|
|
|
|
|
2022-08-22 05:39:49 -07:00
|
|
|
vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux
|
efi/loongarch: Add efistub booting support
This patch adds efistub booting support, which is the standard UEFI boot
protocol for LoongArch to use.
We use generic efistub, which means we can pass boot information (i.e.,
system table, memory map, kernel command line, initrd) via a light FDT
and drop a lot of non-standard code.
We use a flat mapping to map the efi runtime in the kernel's address
space. In efi, VA = PA; in kernel, VA = PA + PAGE_OFFSET. As a result,
flat mapping is not identity mapping, SetVirtualAddressMap() is still
needed for the efi runtime.
Tested-by: Xi Ruoyao <xry111@xry111.site>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
[ardb: change fpic to fpie as suggested by Xi Ruoyao]
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
2022-08-19 03:20:37 -07:00
|
|
|
$(Q)$(MAKE) $(build)=$(boot) $(bootvars-y) $(boot)/$@
|
2022-05-31 03:04:11 -07:00
|
|
|
|
|
|
|
install:
|
2022-08-22 05:39:49 -07:00
|
|
|
$(Q)install -D -m 755 $(KBUILD_IMAGE) $(INSTALL_PATH)/$(image-name-y)-$(KERNELRELEASE)
|
2022-05-31 03:04:11 -07:00
|
|
|
$(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
|
|
|
|
$(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE)
|
|
|
|
|
|
|
|
define archhelp
|
|
|
|
echo ' install - install kernel into $(INSTALL_PATH)'
|
|
|
|
echo
|
|
|
|
endef
|