1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # Author: Huacai Chen <chenhuacai@loongson.cn> !! 2 # m68k/Makefile 4 # Copyright (C) 2020-2022 Loongson Technology << 5 << 6 boot := arch/loongarch/boot << 7 << 8 KBUILD_DEFCONFIG := loongson3_defconfig << 9 KBUILD_DTBS := dtbs << 10 << 11 image-name-y := vmlinux << 12 image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz << 13 << 14 ifndef CONFIG_EFI_STUB << 15 KBUILD_IMAGE := $(boot)/vmlinux.elf << 16 else << 17 KBUILD_IMAGE := $(boot)/$(image-name-y).efi << 18 endif << 19 << 20 # 3 # 21 # Select the object file format to substitute !! 4 # This file is included by the global makefile so that you can add your own >> 5 # architecture-specific flags and dependencies. Remember to do have actions >> 6 # for "archclean" and "archdep" for cleaning up and making dependencies for >> 7 # this architecture >> 8 # >> 9 # This file is subject to the terms and conditions of the GNU General Public >> 10 # License. See the file "COPYING" in the main directory of this archive >> 11 # for more details. >> 12 # >> 13 # Copyright (C) 1994 by Hamish Macdonald >> 14 # Copyright (C) 2002,2011 Greg Ungerer <gerg@snapgear.com> 22 # 15 # 23 64bit-tool-archpref = loongarch64 << 24 32bit-bfd = elf32-loongarch << 25 64bit-bfd = elf64-loongarch << 26 32bit-emul = elf32loongarch << 27 64bit-emul = elf64loongarch << 28 << 29 CC_FLAGS_FPU := -mfpu=64 << 30 CC_FLAGS_NO_FPU := -msoft-float << 31 << 32 ifdef CONFIG_UNWINDER_ORC << 33 orc_hash_h := arch/$(SRCARCH)/include/generate << 34 orc_hash_sh := $(srctree)/scripts/orc_hash.sh << 35 targets += $(orc_hash_h) << 36 quiet_cmd_orc_hash = GEN $@ << 37 cmd_orc_hash = mkdir -p $(dir $@); \ << 38 $(CONFIG_SHELL) $(orc_has << 39 $(orc_hash_h): $(srctree)/arch/loongarch/inclu << 40 $(call if_changed,orc_hash) << 41 archprepare: $(orc_hash_h) << 42 endif << 43 16 44 ifdef CONFIG_DYNAMIC_FTRACE !! 17 KBUILD_DEFCONFIG := multi_defconfig 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI << 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= << 47 endif << 48 18 49 ifdef CONFIG_64BIT !! 19 ifneq ($(SUBARCH),$(ARCH)) 50 tool-archpref = $(64bit-tool-archpre !! 20 ifeq ($(CROSS_COMPILE),) 51 UTS_MACHINE := loongarch64 !! 21 CROSS_COMPILE := $(call cc-cross-prefix, \ >> 22 m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-) >> 23 endif 52 endif 24 endif 53 25 54 ifneq ($(SUBARCH),$(ARCH)) !! 26 # 55 ifeq ($(CROSS_COMPILE),) !! 27 # Enable processor type. Ordering of these is important - we want to 56 CROSS_COMPILE := $(call cc-cross-prefix, $ !! 28 # use the minimum processor type of the range we support. The logic 57 endif !! 29 # for 680x0 will only allow use of the -m68060 or -m68040 if no other 58 endif !! 30 # 680x0 type is specified - and no option is specified for 68030 or 59 !! 31 # 68020. The other m68k/ColdFire types always specify some type of 60 ifdef CONFIG_64BIT !! 32 # compiler cpu type flag. 61 ld-emul = $(64bit-emul) !! 33 # 62 cflags-y += -mabi=lp64s !! 34 ifndef CONFIG_M68040 63 endif !! 35 cpuflags-$(CONFIG_M68060) := -m68060 64 !! 36 endif 65 cflags-y += -pipe $(CC_ !! 37 ifndef CONFIG_M68060 66 LDFLAGS_vmlinux += -static -n !! 38 cpuflags-$(CONFIG_M68040) := -m68040 67 !! 39 endif 68 # When the assembler supports explicit relocat !! 40 cpuflags-$(CONFIG_M68030) := 69 # GCC may have -mexplicit-relocs off by defaul !! 41 cpuflags-$(CONFIG_M68020) := 70 # assembler, so we force it via an option. !! 42 cpuflags-$(CONFIG_M68000) := -m68000 71 # !! 43 cpuflags-$(CONFIG_M5441x) := $(call cc-option,-mcpu=54455,-mcfv4e) 72 # When the assembler does not supports explici !! 44 cpuflags-$(CONFIG_M54xx) := $(call cc-option,-mcpu=5475,-m5200) 73 # it. Disable it if the compiler supports it. !! 45 cpuflags-$(CONFIG_M5407) := $(call cc-option,-mcpu=5407,-m5200) 74 # !! 46 cpuflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307) 75 # The combination of a "new" assembler and "ol !! 47 cpuflags-$(CONFIG_M537x) := $(call cc-option,-mcpu=537x,-m5307) 76 # the rarity of this combo and the extra compl !! 48 cpuflags-$(CONFIG_M5307) := $(call cc-option,-mcpu=5307,-m5200) 77 # Either upgrade the compiler or downgrade the !! 49 cpuflags-$(CONFIG_M528x) := $(call cc-option,-mcpu=528x,-m5307) 78 # out if it is the case (by probing for the mo !! 50 cpuflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307) 79 # compilers in this case would have support). !! 51 cpuflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5272,-m5307) 80 # !! 52 cpuflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307) 81 # Also, -mdirect-extern-access is useful in ca !! 53 cpuflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307) 82 # relocs, for avoiding unnecessary GOT accesse !! 54 cpuflags-$(CONFIG_M525x) := $(call cc-option,-mcpu=5253,-m5200) 83 # support though. !! 55 cpuflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200) 84 ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS !! 56 cpuflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200) 85 cflags-y += $(call cc-o !! 57 cpuflags-$(CONFIG_M5206e) := $(call cc-option,-mcpu=5206e,-m5200) 86 KBUILD_CFLAGS_KERNEL += $(call cc-o !! 58 cpuflags-$(CONFIG_M5206) := $(call cc-option,-mcpu=5206,-m5200) 87 KBUILD_CFLAGS_KERNEL += $(call cc-o !! 59 88 KBUILD_AFLAGS_MODULE += $(call cc-o !! 60 KBUILD_AFLAGS += $(cpuflags-y) 89 KBUILD_CFLAGS_MODULE += $(call cc-o !! 61 KBUILD_CFLAGS += $(cpuflags-y) >> 62 >> 63 KBUILD_CFLAGS += -pipe -ffreestanding >> 64 >> 65 ifdef CONFIG_MMU >> 66 # without -fno-strength-reduce the 53c7xx.c driver fails ;-( >> 67 KBUILD_CFLAGS += -fno-strength-reduce -ffixed-a2 90 else 68 else 91 cflags-y += $(call cc-o !! 69 # we can use a m68k-linux-gcc toolchain with these in place 92 KBUILD_AFLAGS_KERNEL += -Wa,-mla-gl !! 70 KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\" 93 KBUILD_CFLAGS_KERNEL += -Wa,-mla-gl !! 71 KBUILD_CFLAGS += -D__uClinux__ 94 KBUILD_AFLAGS_MODULE += -Wa,-mla-gl !! 72 KBUILD_AFLAGS += -D__uClinux__ 95 KBUILD_CFLAGS_MODULE += -fplt -Wa,- << 96 endif 73 endif 97 74 98 KBUILD_AFLAGS += $(call cc-o !! 75 KBUILD_LDFLAGS := -m m68kelf 99 KBUILD_CFLAGS += $(call cc-o !! 76 KBUILD_LDS_MODULE += $(srctree)/arch/m68k/kernel/module.lds 100 KBUILD_AFLAGS += $(call cc-o << 101 KBUILD_CFLAGS += $(call cc-o << 102 77 103 ifdef CONFIG_OBJTOOL !! 78 ifdef CONFIG_SUN3 104 KBUILD_CFLAGS += -fno-jump-t !! 79 LDFLAGS_vmlinux = -N 105 endif 80 endif 106 81 107 KBUILD_RUSTFLAGS += --target=lo !! 82 CHECKFLAGS += -D__mc68000__ 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 83 117 cflags-y += $(call cc-option, -mno-check-zero- << 118 84 119 ifndef CONFIG_KASAN !! 85 ifdef CONFIG_KGDB 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m !! 86 # If configured for kgdb support, include debugging infos and keep the >> 87 # frame pointer >> 88 KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g 121 endif 89 endif 122 90 123 load-y = 0x9000000000200000 !! 91 # 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- !! 92 # Select the assembler head startup code. Order is important. The default >> 93 # head code is first, processor specific selections can override it after. >> 94 # >> 95 head-y := arch/m68k/kernel/head.o >> 96 head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o >> 97 head-$(CONFIG_M68000) := arch/m68k/68000/head.o >> 98 head-$(CONFIG_COLDFIRE) := arch/m68k/coldfire/head.o 125 99 126 drivers-$(CONFIG_PCI) += arch/loonga !! 100 core-y += arch/m68k/kernel/ arch/m68k/mm/ >> 101 libs-y += arch/m68k/lib/ 127 102 128 KBUILD_AFLAGS += $(cflags-y) !! 103 core-$(CONFIG_Q40) += arch/m68k/q40/ 129 KBUILD_CFLAGS += $(cflags-y) !! 104 core-$(CONFIG_AMIGA) += arch/m68k/amiga/ 130 KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(lo !! 105 core-$(CONFIG_ATARI) += arch/m68k/atari/ >> 106 core-$(CONFIG_MAC) += arch/m68k/mac/ >> 107 core-$(CONFIG_HP300) += arch/m68k/hp300/ >> 108 core-$(CONFIG_APOLLO) += arch/m68k/apollo/ >> 109 core-$(CONFIG_MVME147) += arch/m68k/mvme147/ >> 110 core-$(CONFIG_MVME16x) += arch/m68k/mvme16x/ >> 111 core-$(CONFIG_BVME6000) += arch/m68k/bvme6000/ >> 112 core-$(CONFIG_SUN3X) += arch/m68k/sun3x/ arch/m68k/sun3/ >> 113 core-$(CONFIG_SUN3) += arch/m68k/sun3/ arch/m68k/sun3/prom/ >> 114 core-$(CONFIG_NATFEAT) += arch/m68k/emu/ >> 115 core-$(CONFIG_M68040) += arch/m68k/fpsp040/ >> 116 core-$(CONFIG_M68060) += arch/m68k/ifpsp060/ >> 117 core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/ >> 118 core-$(CONFIG_M68000) += arch/m68k/68000/ >> 119 core-$(CONFIG_COLDFIRE) += arch/m68k/coldfire/ 131 120 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 121 136 ifdef CONFIG_ARCH_STRICT_ALIGN !! 122 all: zImage 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 123 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print !! 124 lilo: vmlinux >> 125 if [ -f $(INSTALL_PATH)/vmlinux ]; then mv -f $(INSTALL_PATH)/vmlinux $(INSTALL_PATH)/vmlinux.old; fi >> 126 if [ -f $(INSTALL_PATH)/System.map ]; then mv -f $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi >> 127 cat vmlinux > $(INSTALL_PATH)/vmlinux >> 128 cp System.map $(INSTALL_PATH)/System.map >> 129 if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi 147 130 148 KBUILD_LDFLAGS += -m $(ld-emul) !! 131 zImage compressed: vmlinux.gz 149 132 150 ifdef need-compiler !! 133 vmlinux.gz: vmlinux 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) << 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL << 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' << 154 endif << 155 134 156 libs-y += arch/loongarch/lib/ !! 135 ifndef CONFIG_KGDB 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ !! 136 cp vmlinux vmlinux.tmp >> 137 $(STRIP) vmlinux.tmp >> 138 $(KGZIP) -9c vmlinux.tmp >vmlinux.gz >> 139 rm vmlinux.tmp >> 140 else >> 141 $(KGZIP) -9c vmlinux >vmlinux.gz >> 142 endif 158 143 159 drivers-y += arch/loongarch/cryp !! 144 bzImage: vmlinux.bz2 160 145 161 # suspend and hibernation support !! 146 vmlinux.bz2: vmlinux 162 drivers-$(CONFIG_PM) += arch/loongarch/powe << 163 147 164 ifeq ($(KBUILD_EXTMOD),) !! 148 ifndef CONFIG_KGDB 165 prepare: vdso_prepare !! 149 cp vmlinux vmlinux.tmp 166 vdso_prepare: prepare0 !! 150 $(STRIP) vmlinux.tmp 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd !! 151 $(KBZIP2) -1c vmlinux.tmp >vmlinux.bz2 >> 152 rm vmlinux.tmp >> 153 else >> 154 $(KBZIP2) -1c vmlinux >vmlinux.bz2 168 endif 155 endif 169 156 170 vdso-install-y += arch/loongarch/vdso/vdso.so. !! 157 archclean: 171 !! 158 rm -f vmlinux.gz vmlinux.bz2 172 all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTB << 173 << 174 vmlinuz.efi: vmlinux.efi << 175 159 176 vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux !! 160 archheaders: 177 $(Q)$(MAKE) $(build)=$(boot) $(bootvar !! 161 $(Q)$(MAKE) $(build)=arch/m68k/kernel/syscalls all 178 162 179 install: 163 install: 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) !! 164 sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz System.map "$(INSTALL_PATH)" 181 $(Q)install -D -m 644 .config $(INSTAL << 182 $(Q)install -D -m 644 System.map $(INS << 183 << 184 define archhelp << 185 echo ' install - install << 186 echo << 187 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.