2022-05-31 13:04:11 +03: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 13:04:12 +03:00
|
|
|
KBUILD_DEFCONFIG := loongson3_defconfig
|
|
|
|
|
2022-08-22 15:39:49 +03: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 13:20:37 +03:00
|
|
|
ifndef CONFIG_EFI_STUB
|
|
|
|
KBUILD_IMAGE := $(boot)/vmlinux.elf
|
|
|
|
else
|
2022-08-22 15:39:49 +03: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 13:20:37 +03:00
|
|
|
endif
|
2022-05-31 13:04:11 +03: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
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
cflags-y += -G0 -pipe -msoft-float
|
|
|
|
LDFLAGS_vmlinux += -G0 -static -n -nostdlib
|
|
|
|
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
|
|
|
|
|
|
|
|
cflags-y += -ffreestanding
|
|
|
|
cflags-y += $(call cc-option, -mno-check-zero-division)
|
|
|
|
|
|
|
|
load-y = 0x9000000000200000
|
|
|
|
bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y)
|
|
|
|
|
2022-08-06 10:19:33 +03:00
|
|
|
drivers-$(CONFIG_PCI) += arch/loongarch/pci/
|
|
|
|
|
2022-05-31 13:04:11 +03: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
|
|
|
|
|
|
|
|
# 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)
|
|
|
|
|
|
|
|
KBUILD_CFLAGS += -isystem $(shell $(CC) -print-file-name=include)
|
|
|
|
|
|
|
|
KBUILD_LDFLAGS += -m $(ld-emul)
|
|
|
|
|
|
|
|
ifdef CONFIG_LOONGARCH
|
|
|
|
CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
|
|
|
|
egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \
|
|
|
|
sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
|
|
|
|
endif
|
|
|
|
|
|
|
|
head-y := arch/loongarch/kernel/head.o
|
|
|
|
|
|
|
|
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 13:20:37 +03:00
|
|
|
libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
|
2022-05-31 13:04:11 +03:00
|
|
|
|
|
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
|
|
prepare: vdso_prepare
|
|
|
|
vdso_prepare: prepare0
|
|
|
|
$(Q)$(MAKE) $(build)=arch/loongarch/vdso include/generated/vdso-offsets.h
|
|
|
|
endif
|
|
|
|
|
|
|
|
PHONY += vdso_install
|
|
|
|
vdso_install:
|
|
|
|
$(Q)$(MAKE) $(build)=arch/loongarch/vdso $@
|
|
|
|
|
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 13:20:37 +03:00
|
|
|
all: $(notdir $(KBUILD_IMAGE))
|
2022-05-31 13:04:11 +03:00
|
|
|
|
2022-08-22 15:39:49 +03: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 13:20:37 +03:00
|
|
|
$(Q)$(MAKE) $(build)=$(boot) $(bootvars-y) $(boot)/$@
|
2022-05-31 13:04:11 +03:00
|
|
|
|
|
|
|
install:
|
2022-08-22 15:39:49 +03:00
|
|
|
$(Q)install -D -m 755 $(KBUILD_IMAGE) $(INSTALL_PATH)/$(image-name-y)-$(KERNELRELEASE)
|
2022-05-31 13:04:11 +03: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
|