1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # Author: Huacai Chen <chenhuacai@loongson.cn> !! 2 # alpha/Makefile 4 # Copyright (C) 2020-2022 Loongson Technology !! 3 # >> 4 # This file is subject to the terms and conditions of the GNU General Public >> 5 # License. See the file "COPYING" in the main directory of this archive >> 6 # for more details. >> 7 # >> 8 # Copyright (C) 1994 by Linus Torvalds >> 9 # 5 10 6 boot := arch/loongarch/boot !! 11 NM := $(NM) -B 7 12 8 KBUILD_DEFCONFIG := loongson3_defconfig !! 13 LDFLAGS_vmlinux := -static -N #-relax 9 KBUILD_DTBS := dtbs !! 14 CHECKFLAGS += -D__alpha__ >> 15 cflags-y := -pipe -mno-fp-regs -ffixed-8 >> 16 cflags-y += $(call cc-option, -fno-jump-tables) 10 17 11 image-name-y := vmlinux !! 18 cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56 12 image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz !! 19 cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56 13 !! 20 cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56 14 ifndef CONFIG_EFI_STUB !! 21 cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6 15 KBUILD_IMAGE := $(boot)/vmlinux.elf !! 22 cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67 16 else !! 23 # If GENERIC, make sure to turn off any instruction set extensions that 17 KBUILD_IMAGE := $(boot)/$(image-name-y).efi !! 24 # the host compiler might have on by default. 18 endif !! 25 cpuflags-$(CONFIG_ALPHA_GENERIC) := -mcpu=ev56 -mtune=ev6 19 26 20 # !! 27 cflags-y += $(cpuflags-y) 21 # Select the object file format to substitute !! 28 22 # !! 29 23 64bit-tool-archpref = loongarch64 !! 30 # For TSUNAMI, we must have the assembler not emulate our instructions. 24 32bit-bfd = elf32-loongarch !! 31 # The same is true for IRONGATE, POLARIS, PYXIS. 25 64bit-bfd = elf64-loongarch !! 32 # BWX is most important, but we don't really want any emulation ever. 26 32bit-emul = elf32loongarch !! 33 KBUILD_CFLAGS += $(cflags-y) -Wa,-mev6 27 64bit-emul = elf64loongarch !! 34 28 !! 35 libs-y += arch/alpha/lib/ 29 CC_FLAGS_FPU := -mfpu=64 !! 36 30 CC_FLAGS_NO_FPU := -msoft-float !! 37 # export what is needed by arch/alpha/boot/Makefile 31 !! 38 LIBS_Y := $(patsubst %/, %/lib.a, $(libs-y)) 32 ifdef CONFIG_UNWINDER_ORC !! 39 export LIBS_Y 33 orc_hash_h := arch/$(SRCARCH)/include/generate !! 40 34 orc_hash_sh := $(srctree)/scripts/orc_hash.sh !! 41 boot := arch/alpha/boot 35 targets += $(orc_hash_h) !! 42 36 quiet_cmd_orc_hash = GEN $@ !! 43 #Default target when executing make with no arguments 37 cmd_orc_hash = mkdir -p $(dir $@); \ !! 44 all boot: $(boot)/vmlinux.gz 38 $(CONFIG_SHELL) $(orc_has !! 45 39 $(orc_hash_h): $(srctree)/arch/loongarch/inclu !! 46 $(boot)/vmlinux.gz: vmlinux 40 $(call if_changed,orc_hash) !! 47 $(Q)$(MAKE) $(build)=$(boot) $@ 41 archprepare: $(orc_hash_h) !! 48 42 endif !! 49 bootimage bootpfile bootpzfile: vmlinux 43 !! 50 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 44 ifdef CONFIG_DYNAMIC_FTRACE !! 51 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI !! 52 archheaders: 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= !! 53 $(Q)$(MAKE) $(build)=arch/alpha/kernel/syscalls all 47 endif << 48 << 49 ifdef CONFIG_64BIT << 50 tool-archpref = $(64bit-tool-archpre << 51 UTS_MACHINE := loongarch64 << 52 endif << 53 << 54 ifneq ($(SUBARCH),$(ARCH)) << 55 ifeq ($(CROSS_COMPILE),) << 56 CROSS_COMPILE := $(call cc-cross-prefix, $ << 57 endif << 58 endif << 59 << 60 ifdef CONFIG_64BIT << 61 ld-emul = $(64bit-emul) << 62 cflags-y += -mabi=lp64s << 63 endif << 64 << 65 cflags-y += -pipe $(CC_ << 66 LDFLAGS_vmlinux += -static -n << 67 << 68 # When the assembler supports explicit relocat << 69 # GCC may have -mexplicit-relocs off by defaul << 70 # assembler, so we force it via an option. << 71 # << 72 # When the assembler does not supports explici << 73 # it. Disable it if the compiler supports it. << 74 # << 75 # The combination of a "new" assembler and "ol << 76 # the rarity of this combo and the extra compl << 77 # Either upgrade the compiler or downgrade the << 78 # out if it is the case (by probing for the mo << 79 # compilers in this case would have support). << 80 # << 81 # Also, -mdirect-extern-access is useful in ca << 82 # relocs, for avoiding unnecessary GOT accesse << 83 # support though. << 84 ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS << 85 cflags-y += $(call cc-o << 86 KBUILD_CFLAGS_KERNEL += $(call cc-o << 87 KBUILD_CFLAGS_KERNEL += $(call cc-o << 88 KBUILD_AFLAGS_MODULE += $(call cc-o << 89 KBUILD_CFLAGS_MODULE += $(call cc-o << 90 else << 91 cflags-y += $(call cc-o << 92 KBUILD_AFLAGS_KERNEL += -Wa,-mla-gl << 93 KBUILD_CFLAGS_KERNEL += -Wa,-mla-gl << 94 KBUILD_AFLAGS_MODULE += -Wa,-mla-gl << 95 KBUILD_CFLAGS_MODULE += -fplt -Wa,- << 96 endif << 97 << 98 KBUILD_AFLAGS += $(call cc-o << 99 KBUILD_CFLAGS += $(call cc-o << 100 KBUILD_AFLAGS += $(call cc-o << 101 KBUILD_CFLAGS += $(call cc-o << 102 << 103 ifdef CONFIG_OBJTOOL << 104 KBUILD_CFLAGS += -fno-jump-t << 105 endif << 106 << 107 KBUILD_RUSTFLAGS += --target=lo << 108 KBUILD_RUSTFLAGS_KERNEL += -Zdirect-ac << 109 KBUILD_RUSTFLAGS_MODULE += -Zdirect-ac << 110 << 111 ifeq ($(CONFIG_RELOCATABLE),y) << 112 KBUILD_CFLAGS_KERNEL += -fPIE << 113 KBUILD_RUSTFLAGS_KERNEL += -Crelocatio << 114 LDFLAGS_vmlinux += -static -pi << 115 endif << 116 << 117 cflags-y += $(call cc-option, -mno-check-zero- << 118 << 119 ifndef CONFIG_KASAN << 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m << 121 endif << 122 << 123 load-y = 0x9000000000200000 << 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- << 125 << 126 drivers-$(CONFIG_PCI) += arch/loonga << 127 << 128 KBUILD_AFLAGS += $(cflags-y) << 129 KBUILD_CFLAGS += $(cflags-y) << 130 KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(lo << 131 << 132 # This is required to get dwarf unwinding tabl << 133 # instead of .eh_frame so we don't discard the << 134 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl << 135 << 136 ifdef CONFIG_ARCH_STRICT_ALIGN << 137 # Don't emit unaligned accesses. << 138 # Not all LoongArch cores support unaligned ac << 139 # rely on others to provide emulation for thes << 140 KBUILD_CFLAGS += $(call cc-option,-mstrict-ali << 141 else << 142 # Optimise for performance on hardware support << 143 KBUILD_CFLAGS += $(call cc-option,-mno-strict- << 144 endif << 145 << 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print << 147 << 148 KBUILD_LDFLAGS += -m $(ld-emul) << 149 << 150 ifdef need-compiler << 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) << 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL << 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' << 154 endif << 155 << 156 libs-y += arch/loongarch/lib/ << 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ << 158 << 159 drivers-y += arch/loongarch/cryp << 160 << 161 # suspend and hibernation support << 162 drivers-$(CONFIG_PM) += arch/loongarch/powe << 163 << 164 ifeq ($(KBUILD_EXTMOD),) << 165 prepare: vdso_prepare << 166 vdso_prepare: prepare0 << 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd << 168 endif << 169 << 170 vdso-install-y += arch/loongarch/vdso/vdso.so. << 171 << 172 all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTB << 173 << 174 vmlinuz.efi: vmlinux.efi << 175 << 176 vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux << 177 $(Q)$(MAKE) $(build)=$(boot) $(bootvar << 178 << 179 install: << 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) << 181 $(Q)install -D -m 644 .config $(INSTAL << 182 $(Q)install -D -m 644 System.map $(INS << 183 54 184 define archhelp 55 define archhelp 185 echo ' install - install !! 56 echo '* boot - Compressed kernel image (arch/alpha/boot/vmlinux.gz)' 186 echo !! 57 echo ' bootimage - SRM bootable image (arch/alpha/boot/bootimage)' >> 58 echo ' bootpfile - BOOTP bootable image (arch/alpha/boot/bootpfile)' >> 59 echo ' bootpzfile - compressed kernel BOOTP image (arch/alpha/boot/bootpzfile)' 187 endef 60 endef
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.