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 22 # 14 # 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 << 44 ifdef CONFIG_DYNAMIC_FTRACE << 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI << 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= << 47 endif << 48 << 49 ifdef CONFIG_64BIT << 50 tool-archpref = $(64bit-tool-archpre << 51 UTS_MACHINE := loongarch64 << 52 endif << 53 15 >> 16 KBUILD_DEFCONFIG := multi_defconfig >> 17 >> 18 # override top level makefile >> 19 AS += -m68020 >> 20 LDFLAGS := -m m68kelf >> 21 LDFLAGS_MODULE += -T $(srctree)/arch/m68k/kernel/module.lds 54 ifneq ($(SUBARCH),$(ARCH)) 22 ifneq ($(SUBARCH),$(ARCH)) 55 ifeq ($(CROSS_COMPILE),) !! 23 ifeq ($(CROSS_COMPILE),) 56 CROSS_COMPILE := $(call cc-cross-prefix, $ !! 24 CROSS_COMPILE := $(call cc-cross-prefix, \ 57 endif !! 25 m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-) >> 26 endif 58 endif 27 endif 59 28 60 ifdef CONFIG_64BIT !! 29 ifdef CONFIG_SUN3 61 ld-emul = $(64bit-emul) !! 30 LDFLAGS_vmlinux = -N 62 cflags-y += -mabi=lp64s << 63 endif 31 endif 64 32 65 cflags-y += -pipe $(CC_ !! 33 CHECKFLAGS += -D__mc68000__ 66 LDFLAGS_vmlinux += -static -n << 67 34 68 # When the assembler supports explicit relocat !! 35 # without -fno-strength-reduce the 53c7xx.c driver fails ;-( 69 # GCC may have -mexplicit-relocs off by defaul !! 36 KBUILD_CFLAGS += -pipe -fno-strength-reduce -ffixed-a2 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 37 98 KBUILD_AFLAGS += $(call cc-o !! 38 # enable processor switch if compiled only for a single cpu 99 KBUILD_CFLAGS += $(call cc-o !! 39 ifndef CONFIG_M68020 100 KBUILD_AFLAGS += $(call cc-o !! 40 ifndef CONFIG_M68030 101 KBUILD_CFLAGS += $(call cc-o << 102 41 103 ifdef CONFIG_OBJTOOL !! 42 ifndef CONFIG_M68060 104 KBUILD_CFLAGS += -fno-jump-t !! 43 KBUILD_CFLAGS += -m68040 105 endif 44 endif 106 45 107 KBUILD_RUSTFLAGS += --target=lo !! 46 ifndef CONFIG_M68040 108 KBUILD_RUSTFLAGS_KERNEL += -Zdirect-ac !! 47 KBUILD_CFLAGS += -m68060 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 48 endif 116 49 117 cflags-y += $(call cc-option, -mno-check-zero- !! 50 endif 118 << 119 ifndef CONFIG_KASAN << 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m << 121 endif 51 endif 122 52 123 load-y = 0x9000000000200000 !! 53 ifdef CONFIG_KGDB 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- !! 54 # If configured for kgdb support, include debugging infos and keep the 125 !! 55 # frame pointer 126 drivers-$(CONFIG_PCI) += arch/loonga !! 56 KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g 127 !! 57 endif 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 58 136 ifdef CONFIG_ARCH_STRICT_ALIGN !! 59 ifndef CONFIG_SUN3 137 # Don't emit unaligned accesses. !! 60 head-y := arch/m68k/kernel/head.o 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 61 else 142 # Optimise for performance on hardware support !! 62 head-y := arch/m68k/kernel/sun3-head.o 143 KBUILD_CFLAGS += $(call cc-option,-mno-strict- << 144 endif 63 endif 145 64 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print !! 65 core-y += arch/m68k/kernel/ arch/m68k/mm/ >> 66 libs-y += arch/m68k/lib/ 147 67 148 KBUILD_LDFLAGS += -m $(ld-emul) !! 68 core-$(CONFIG_Q40) += arch/m68k/q40/ 149 !! 69 core-$(CONFIG_AMIGA) += arch/m68k/amiga/ 150 ifdef need-compiler !! 70 core-$(CONFIG_ATARI) += arch/m68k/atari/ 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) !! 71 core-$(CONFIG_MAC) += arch/m68k/mac/ 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL !! 72 core-$(CONFIG_HP300) += arch/m68k/hp300/ 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' !! 73 core-$(CONFIG_APOLLO) += arch/m68k/apollo/ >> 74 core-$(CONFIG_MVME147) += arch/m68k/mvme147/ >> 75 core-$(CONFIG_MVME16x) += arch/m68k/mvme16x/ >> 76 core-$(CONFIG_BVME6000) += arch/m68k/bvme6000/ >> 77 core-$(CONFIG_SUN3X) += arch/m68k/sun3x/ arch/m68k/sun3/ >> 78 core-$(CONFIG_SUN3) += arch/m68k/sun3/ arch/m68k/sun3/prom/ >> 79 core-$(CONFIG_M68040) += arch/m68k/fpsp040/ >> 80 core-$(CONFIG_M68060) += arch/m68k/ifpsp060/ >> 81 core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/ >> 82 >> 83 all: zImage >> 84 >> 85 lilo: vmlinux >> 86 if [ -f $(INSTALL_PATH)/vmlinux ]; then mv -f $(INSTALL_PATH)/vmlinux $(INSTALL_PATH)/vmlinux.old; fi >> 87 if [ -f $(INSTALL_PATH)/System.map ]; then mv -f $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi >> 88 cat vmlinux > $(INSTALL_PATH)/vmlinux >> 89 cp System.map $(INSTALL_PATH)/System.map >> 90 if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi >> 91 >> 92 zImage compressed: vmlinux.gz >> 93 >> 94 vmlinux.gz: vmlinux >> 95 >> 96 ifndef CONFIG_KGDB >> 97 cp vmlinux vmlinux.tmp >> 98 $(STRIP) vmlinux.tmp >> 99 gzip -9c vmlinux.tmp >vmlinux.gz >> 100 rm vmlinux.tmp >> 101 else >> 102 gzip -9c vmlinux >vmlinux.gz 154 endif 103 endif 155 104 156 libs-y += arch/loongarch/lib/ !! 105 bzImage: vmlinux.bz2 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ << 158 106 159 drivers-y += arch/loongarch/cryp !! 107 vmlinux.bz2: vmlinux 160 108 161 # suspend and hibernation support !! 109 ifndef CONFIG_KGDB 162 drivers-$(CONFIG_PM) += arch/loongarch/powe !! 110 cp vmlinux vmlinux.tmp 163 !! 111 $(STRIP) vmlinux.tmp 164 ifeq ($(KBUILD_EXTMOD),) !! 112 bzip2 -1c vmlinux.tmp >vmlinux.bz2 165 prepare: vdso_prepare !! 113 rm vmlinux.tmp 166 vdso_prepare: prepare0 !! 114 else 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd !! 115 bzip2 -1c vmlinux >vmlinux.bz2 168 endif 116 endif 169 117 170 vdso-install-y += arch/loongarch/vdso/vdso.so. !! 118 archclean: 171 !! 119 rm -f vmlinux.gz vmlinux.bz2 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 120 179 install: 121 install: 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) !! 122 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.