1 # SPDX-License-Identifier: GPL-2.0 << 2 # Unified Makefile for i386 and x86_64 << 3 << 4 # select defconfig based on actual architectur << 5 ifeq ($(ARCH),x86) << 6 ifeq ($(shell uname -m | sed -e 's/i.86/i386 << 7 KBUILD_DEFCONFIG := i386_defconfig << 8 else << 9 KBUILD_DEFCONFIG := x86_64_defconfig << 10 endif << 11 else << 12 KBUILD_DEFCONFIG := $(ARCH)_defconfig << 13 endif << 14 << 15 ifdef CONFIG_CC_IS_GCC << 16 RETPOLINE_CFLAGS := $(call cc-option,-m << 17 RETPOLINE_VDSO_CFLAGS := $(call cc-option,-m << 18 endif << 19 ifdef CONFIG_CC_IS_CLANG << 20 RETPOLINE_CFLAGS := -mretpoline-externa << 21 RETPOLINE_VDSO_CFLAGS := -mretpoline << 22 endif << 23 RETPOLINE_CFLAGS += $(call cc-option,-m << 24 << 25 ifdef CONFIG_MITIGATION_RETHUNK << 26 RETHUNK_CFLAGS := -mfunction-return=t << 27 RETHUNK_RUSTFLAGS := -Zfunction-return=t << 28 RETPOLINE_CFLAGS += $(RETHUNK_CFLAGS) << 29 RETPOLINE_RUSTFLAGS += $(RETHUNK_RUSTFLAGS << 30 endif << 31 << 32 export RETHUNK_CFLAGS << 33 export RETHUNK_RUSTFLAGS << 34 export RETPOLINE_CFLAGS << 35 export RETPOLINE_RUSTFLAGS << 36 export RETPOLINE_VDSO_CFLAGS << 37 << 38 # For gcc stack alignment is specified with -m << 39 # clang has the option -mstack-alignment for t << 40 ifneq ($(call cc-option, -mpreferred-stack-bou << 41 cc_stack_align4 := -mpreferred-stack-bou << 42 cc_stack_align8 := -mpreferred-stack-bou << 43 else ifneq ($(call cc-option, -mstack-alignmen << 44 cc_stack_align4 := -mstack-alignment=4 << 45 cc_stack_align8 := -mstack-alignment=8 << 46 endif << 47 << 48 # How to compile the 16-bit code. Note we alw << 49 # that way we can complain to the user if the << 50 REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDI << 51 -Wall -Wstrict-prototypes - << 52 -fno-strict-aliasing -fomit << 53 -mno-mmx -mno-sse $(call cc << 54 << 55 REALMODE_CFLAGS += -ffreestanding << 56 REALMODE_CFLAGS += -fno-stack-protector << 57 REALMODE_CFLAGS += -Wno-address-of-packed-memb << 58 REALMODE_CFLAGS += $(cc_stack_align4) << 59 REALMODE_CFLAGS += $(CLANG_FLAGS) << 60 ifdef CONFIG_CC_IS_CLANG << 61 REALMODE_CFLAGS += -Wno-gnu << 62 endif << 63 export REALMODE_CFLAGS << 64 << 65 # BITS is used as extension for files which ar << 66 # and a 64 bit version to simplify shared Make << 67 # e.g.: obj-y += foo_$(BITS).o << 68 export BITS << 69 << 70 # << 71 # Prevent GCC from generating any FP code by m << 72 # 1 # 73 # This must happen before we try the -mpreferr !! 2 # m68k/Makefile 74 # 3 # 75 # https://gcc.gnu.org/bugzilla/show_bug.cgi !! 4 # This file is included by the global makefile so that you can add your own 76 # !! 5 # architecture-specific flags and dependencies. Remember to do have actions 77 KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 - !! 6 # for "archclean" and "archdep" for cleaning up and making dependencies for 78 KBUILD_RUSTFLAGS += --target=$(objtree)/script !! 7 # this architecture 79 KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse !! 8 # 80 !! 9 # This file is subject to the terms and conditions of the GNU General Public 81 # !! 10 # License. See the file "COPYING" in the main directory of this archive 82 # CFLAGS for compiling floating point code ins !! 11 # for more details. 83 # !! 12 # 84 CC_FLAGS_FPU := -msse -msse2 !! 13 # Copyright (C) 1994 by Hamish Macdonald 85 ifdef CONFIG_CC_IS_GCC !! 14 # Copyright (C) 2002,2011 Greg Ungerer <gerg@snapgear.com> 86 # Stack alignment mismatch, proceed with cauti !! 15 # 87 # GCC < 7.1 cannot compile code using `double` !! 16 88 # (8B stack alignment). !! 17 KBUILD_DEFCONFIG := multi_defconfig 89 # See https://gcc.gnu.org/bugzilla/show_bug.cg !! 18 90 # !! 19 ifneq ($(SUBARCH),$(ARCH)) 91 # The "-msse" in the first argument is there s !! 20 ifeq ($(CROSS_COMPILE),) 92 # -mpreferred-stack-boundary=3 build error: !! 21 CROSS_COMPILE := $(call cc-cross-prefix, \ 93 # !! 22 m68k-linux-gnu- m68k-linux- m68k-unknown-linux-gnu-) 94 # -mpreferred-stack-boundary=3 is not between !! 23 endif 95 # !! 24 endif 96 # can be triggered. Otherwise gcc doesn't comp !! 25 97 CC_FLAGS_FPU += -mhard-float !! 26 # 98 CC_FLAGS_FPU += $(call cc-option,-msse -mprefe !! 27 # Enable processor type. Ordering of these is important - we want to 99 endif !! 28 # use the minimum processor type of the range we support. The logic 100 !! 29 # for 680x0 will only allow use of the -m68060 or -m68040 if no other 101 ifeq ($(CONFIG_X86_KERNEL_IBT),y) !! 30 # 680x0 type is specified - and no option is specified for 68030 or 102 # !! 31 # 68020. The other m68k/ColdFire types always specify some type of 103 # Kernel IBT has S_CET.NOTRACK_EN=0, as such t !! 32 # compiler cpu type flag. 104 # NOTRACK prefixes. Current generation compile !! 33 # 105 # for jump-tables, as such, disable jump-table !! 34 ifndef CONFIG_M68040 106 # !! 35 cpuflags-$(CONFIG_M68060) := -m68060 107 # (jump-tables are implicitly disabled by RETP !! 36 endif 108 # !! 37 ifndef CONFIG_M68060 109 # https://gcc.gnu.org/bugzilla/show_bug.cgi? !! 38 cpuflags-$(CONFIG_M68040) := -m68040 110 # !! 39 endif 111 KBUILD_CFLAGS += $(call cc-option,-fcf-protect !! 40 cpuflags-$(CONFIG_M68030) := 112 KBUILD_RUSTFLAGS += -Zcf-protection=branch -Zn !! 41 cpuflags-$(CONFIG_M68020) := 113 else !! 42 cpuflags-$(CONFIG_M68000) := -m68000 114 KBUILD_CFLAGS += $(call cc-option,-fcf-protect !! 43 cpuflags-$(CONFIG_M5441x) := $(call cc-option,-mcpu=54455,-mcfv4e) 115 endif !! 44 cpuflags-$(CONFIG_M54xx) := $(call cc-option,-mcpu=5475,-m5200) 116 !! 45 cpuflags-$(CONFIG_M5407) := $(call cc-option,-mcpu=5407,-m5200) 117 ifeq ($(CONFIG_X86_32),y) !! 46 cpuflags-$(CONFIG_M532x) := $(call cc-option,-mcpu=532x,-m5307) 118 BITS := 32 !! 47 cpuflags-$(CONFIG_M537x) := $(call cc-option,-mcpu=537x,-m5307) 119 UTS_MACHINE := i386 !! 48 cpuflags-$(CONFIG_M5307) := $(call cc-option,-mcpu=5307,-m5200) 120 CHECKFLAGS += -D__i386__ !! 49 cpuflags-$(CONFIG_M528x) := $(call cc-option,-mcpu=528x,-m5307) 121 !! 50 cpuflags-$(CONFIG_M5275) := $(call cc-option,-mcpu=5275,-m5307) 122 KBUILD_AFLAGS += -m32 !! 51 cpuflags-$(CONFIG_M5272) := $(call cc-option,-mcpu=5272,-m5307) 123 KBUILD_CFLAGS += -m32 !! 52 cpuflags-$(CONFIG_M5271) := $(call cc-option,-mcpu=5271,-m5307) 124 !! 53 cpuflags-$(CONFIG_M523x) := $(call cc-option,-mcpu=523x,-m5307) 125 KBUILD_CFLAGS += -msoft-float -mregpar !! 54 cpuflags-$(CONFIG_M525x) := $(call cc-option,-mcpu=5253,-m5200) 126 !! 55 cpuflags-$(CONFIG_M5249) := $(call cc-option,-mcpu=5249,-m5200) 127 # Never want PIC in a 32-bit kernel, p !! 56 cpuflags-$(CONFIG_M520x) := $(call cc-option,-mcpu=5208,-m5200) 128 # with nonstandard options !! 57 cpuflags-$(CONFIG_M5206e) := $(call cc-option,-mcpu=5206e,-m5200) 129 KBUILD_CFLAGS += -fno-pic !! 58 cpuflags-$(CONFIG_M5206) := $(call cc-option,-mcpu=5206,-m5200) 130 !! 59 131 # Align the stack to the register widt !! 60 KBUILD_AFLAGS += $(cpuflags-y) 132 # alignment of 16 bytes. This reduces !! 61 KBUILD_CFLAGS += $(cpuflags-y) 133 # alignment instructions. !! 62 134 KBUILD_CFLAGS += $(cc_stack_align4) !! 63 KBUILD_CFLAGS += -pipe -ffreestanding 135 !! 64 136 # CPU-specific tuning. Anything which !! 65 ifdef CONFIG_MMU 137 include $(srctree)/arch/x86/Makefile_3 !! 66 # without -fno-strength-reduce the 53c7xx.c driver fails ;-( 138 KBUILD_CFLAGS += $(cflags-y) !! 67 KBUILD_CFLAGS += -fno-strength-reduce -ffixed-a2 139 << 140 # temporary until string.h is fixed << 141 KBUILD_CFLAGS += -ffreestanding << 142 << 143 ifeq ($(CONFIG_STACKPROTECTOR),y) << 144 ifeq ($(CONFIG_SMP),y) << 145 KBUILD_CFLAGS += -msta << 146 else << 147 KBUILD_CFLAGS += -msta << 148 endif << 149 endif << 150 else 68 else 151 BITS := 64 !! 69 # we can use a m68k-linux-gcc toolchain with these in place 152 UTS_MACHINE := x86_64 !! 70 KBUILD_CFLAGS += -DUTS_SYSNAME=\"uClinux\" 153 CHECKFLAGS += -D__x86_64__ !! 71 KBUILD_CFLAGS += -D__uClinux__ 154 !! 72 KBUILD_AFLAGS += -D__uClinux__ 155 KBUILD_AFLAGS += -m64 << 156 KBUILD_CFLAGS += -m64 << 157 << 158 # Align jump targets to 1 byte, not th << 159 KBUILD_CFLAGS += $(call cc-option,-fal << 160 << 161 # Pack loops tightly as well: << 162 KBUILD_CFLAGS += $(call cc-option,-fal << 163 << 164 # Don't autogenerate traditional x87 i << 165 KBUILD_CFLAGS += -mno-80387 << 166 KBUILD_CFLAGS += $(call cc-option,-mno << 167 << 168 # By default gcc and clang use a stack << 169 # However the standard kernel entry on << 170 # 8-byte boundary. If the compiler isn << 171 # alignment it will generate extra ali << 172 # default alignment which keep the sta << 173 # Furthermore an alignment to the regi << 174 # and the number of alignment instruct << 175 KBUILD_CFLAGS += $(cc_stack_align8) << 176 << 177 # Use -mskip-rax-setup if supported. << 178 KBUILD_CFLAGS += $(call cc-option,-msk << 179 << 180 # FIXME - should be integrated in Make << 181 cflags-$(CONFIG_MK8) += -ma << 182 cflags-$(CONFIG_MPSC) += -ma << 183 cflags-$(CONFIG_MCORE2) += -ma << 184 cflags-$(CONFIG_MATOM) += -ma << 185 cflags-$(CONFIG_GENERIC_CPU) += -mt << 186 KBUILD_CFLAGS += $(cflags-y) << 187 << 188 rustflags-$(CONFIG_MK8) += -Ct << 189 rustflags-$(CONFIG_MPSC) += -Ct << 190 rustflags-$(CONFIG_MCORE2) += -Ct << 191 rustflags-$(CONFIG_MATOM) += -Ct << 192 rustflags-$(CONFIG_GENERIC_CPU) += -Zt << 193 KBUILD_RUSTFLAGS += $(rustflags-y) << 194 << 195 KBUILD_CFLAGS += -mno-red-zone << 196 KBUILD_CFLAGS += -mcmodel=kernel << 197 KBUILD_RUSTFLAGS += -Cno-redzone=y << 198 KBUILD_RUSTFLAGS += -Ccode-model=kerne << 199 endif 73 endif 200 74 201 # !! 75 KBUILD_LDFLAGS := -m m68kelf 202 # If the function graph tracer is used with mc !! 76 KBUILD_LDS_MODULE += $(srctree)/arch/m68k/kernel/module.lds 203 # '-maccumulate-outgoing-args' is needed to pr << 204 # (https://gcc.gnu.org/bugzilla/show_bug.cgi?i << 205 # << 206 ifdef CONFIG_FUNCTION_GRAPH_TRACER << 207 ifndef CONFIG_HAVE_FENTRY << 208 ACCUMULATE_OUTGOING_ARGS := 1 << 209 endif << 210 endif << 211 77 212 ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1) !! 78 ifdef CONFIG_SUN3 213 # This compiler flag is not supported !! 79 LDFLAGS_vmlinux = -N 214 KBUILD_CFLAGS += $(call cc-option,-mac << 215 endif 80 endif 216 81 217 # Workaround for a gcc prelease that unfortuna !! 82 CHECKFLAGS += -D__mc68000__ 218 KBUILD_CFLAGS += -Wno-sign-compare << 219 # << 220 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl << 221 << 222 # Avoid indirect branches in kernel to deal wi << 223 ifdef CONFIG_MITIGATION_RETPOLINE << 224 KBUILD_CFLAGS += $(RETPOLINE_CFLAGS) << 225 KBUILD_RUSTFLAGS += $(RETPOLINE_RUSTFLAGS) << 226 # Additionally, avoid generating expensive i << 227 # are subject to retpolines for small number << 228 # LLVM turns off jump table generation by de << 229 # retpoline builds, however, gcc does not fo << 230 # only been fixed starting from gcc stable v << 231 # onwards, but not for older ones. See gcc b << 232 ifndef CONFIG_CC_IS_CLANG << 233 KBUILD_CFLAGS += -fno-jump-tables << 234 endif << 235 endif << 236 83 237 ifdef CONFIG_MITIGATION_SLS << 238 KBUILD_CFLAGS += -mharden-sls=all << 239 endif << 240 84 241 ifdef CONFIG_CALL_PADDING !! 85 ifdef CONFIG_KGDB 242 PADDING_CFLAGS := -fpatchable-function-entry=$ !! 86 # If configured for kgdb support, include debugging infos and keep the 243 KBUILD_CFLAGS += $(PADDING_CFLAGS) !! 87 # frame pointer 244 export PADDING_CFLAGS !! 88 KBUILD_CFLAGS := $(subst -fomit-frame-pointer,,$(KBUILD_CFLAGS)) -g 245 << 246 PADDING_RUSTFLAGS := -Zpatchable-function-entr << 247 KBUILD_RUSTFLAGS += $(PADDING_RUSTFLAGS) << 248 export PADDING_RUSTFLAGS << 249 endif << 250 << 251 KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE) << 252 << 253 ifdef CONFIG_X86_NEED_RELOCS << 254 LDFLAGS_vmlinux := --emit-relocs --discard-non << 255 else << 256 LDFLAGS_vmlinux := << 257 endif 89 endif 258 90 259 # 91 # 260 # The 64-bit kernel must be aligned to 2MB. P !! 92 # Select the assembler head startup code. Order is important. The default 261 # the linker to force 2MB page size regardless !! 93 # head code is first, processor specific selections can override it after. 262 # by the linker. << 263 # 94 # 264 ifdef CONFIG_X86_64 !! 95 head-y := arch/m68k/kernel/head.o 265 LDFLAGS_vmlinux += -z max-page-size=0x200000 !! 96 head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o 266 endif !! 97 head-$(CONFIG_M68000) := arch/m68k/68000/head.o 267 !! 98 head-$(CONFIG_COLDFIRE) := arch/m68k/coldfire/head.o 268 << 269 archscripts: scripts_basic << 270 $(Q)$(MAKE) $(build)=arch/x86/tools re << 271 99 272 ### !! 100 core-y += arch/m68k/kernel/ arch/m68k/mm/ 273 # Syscall table generation !! 101 libs-y += arch/m68k/lib/ 274 102 275 archheaders: !! 103 core-$(CONFIG_Q40) += arch/m68k/q40/ 276 $(Q)$(MAKE) $(build)=arch/x86/entry/sy !! 104 core-$(CONFIG_AMIGA) += arch/m68k/amiga/ 277 !! 105 core-$(CONFIG_ATARI) += arch/m68k/atari/ 278 ### !! 106 core-$(CONFIG_MAC) += arch/m68k/mac/ 279 # Kernel objects !! 107 core-$(CONFIG_HP300) += arch/m68k/hp300/ 280 !! 108 core-$(CONFIG_APOLLO) += arch/m68k/apollo/ 281 libs-y += arch/x86/lib/ !! 109 core-$(CONFIG_MVME147) += arch/m68k/mvme147/ 282 !! 110 core-$(CONFIG_MVME16x) += arch/m68k/mvme16x/ 283 # drivers-y are linked after core-y !! 111 core-$(CONFIG_BVME6000) += arch/m68k/bvme6000/ 284 drivers-$(CONFIG_MATH_EMULATION) += arch/x86/m !! 112 core-$(CONFIG_SUN3X) += arch/m68k/sun3x/ arch/m68k/sun3/ 285 drivers-$(CONFIG_PCI) += arch/x86/p !! 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/ 286 120 287 # suspend and hibernation support << 288 drivers-$(CONFIG_PM) += arch/x86/power/ << 289 121 290 drivers-$(CONFIG_VIDEO) += arch/x86/video/ !! 122 all: zImage 291 123 292 #### !! 124 lilo: vmlinux 293 # boot loader support. Several targets are kep !! 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 294 130 295 boot := arch/x86/boot !! 131 zImage compressed: vmlinux.gz 296 132 297 BOOT_TARGETS = bzdisk fdimage fdimage144 fdima !! 133 vmlinux.gz: vmlinux 298 134 299 PHONY += bzImage $(BOOT_TARGETS) !! 135 ifndef CONFIG_KGDB 300 !! 136 cp vmlinux vmlinux.tmp 301 # Default kernel to build !! 137 $(STRIP) vmlinux.tmp 302 all: bzImage !! 138 $(KGZIP) -9c vmlinux.tmp >vmlinux.gz 303 !! 139 rm vmlinux.tmp 304 # KBUILD_IMAGE specify target image being buil !! 140 else 305 KBUILD_IMAGE := $(boot)/bzImage !! 141 $(KGZIP) -9c vmlinux >vmlinux.gz 306 << 307 bzImage: vmlinux << 308 ifeq ($(CONFIG_X86_DECODER_SELFTEST),y) << 309 $(Q)$(MAKE) $(build)=arch/x86/tools po << 310 endif 142 endif 311 $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_ << 312 $(Q)mkdir -p $(objtree)/arch/$(UTS_MAC << 313 $(Q)ln -fsn ../../x86/boot/bzImage $(o << 314 143 315 $(BOOT_TARGETS): vmlinux !! 144 bzImage: vmlinux.bz2 316 $(Q)$(MAKE) $(build)=$(boot) $@ << 317 145 318 PHONY += install !! 146 vmlinux.bz2: vmlinux 319 install: << 320 $(call cmd,install) << 321 << 322 vdso-install-$(CONFIG_X86_64) += arc << 323 vdso-install-$(CONFIG_X86_X32_ABI) += arc << 324 vdso-install-$(CONFIG_COMPAT_32) += arc << 325 << 326 archprepare: checkbin << 327 checkbin: << 328 ifdef CONFIG_MITIGATION_RETPOLINE << 329 ifeq ($(RETPOLINE_CFLAGS),) << 330 @echo "You are building kernel with no << 331 @echo "Please update your compiler." > << 332 @false << 333 endif << 334 endif << 335 147 336 ifdef CONFIG_UNWINDER_ORC !! 148 ifndef CONFIG_KGDB 337 orc_hash_h := arch/$(SRCARCH)/include/generate !! 149 cp vmlinux vmlinux.tmp 338 orc_hash_sh := $(srctree)/scripts/orc_hash.sh !! 150 $(STRIP) vmlinux.tmp 339 targets += $(orc_hash_h) !! 151 $(KBZIP2) -1c vmlinux.tmp >vmlinux.bz2 340 quiet_cmd_orc_hash = GEN $@ !! 152 rm vmlinux.tmp 341 cmd_orc_hash = mkdir -p $(dir $@); \ !! 153 else 342 $(CONFIG_SHELL) $(orc_has !! 154 $(KBZIP2) -1c vmlinux >vmlinux.bz2 343 $(orc_hash_h): $(srctree)/arch/x86/include/asm << 344 $(call if_changed,orc_hash) << 345 archprepare: $(orc_hash_h) << 346 endif 155 endif 347 156 348 archclean: 157 archclean: 349 $(Q)rm -rf $(objtree)/arch/i386 !! 158 rm -f vmlinux.gz vmlinux.bz2 350 $(Q)rm -rf $(objtree)/arch/x86_64 << 351 159 352 define archhelp !! 160 archheaders: 353 echo '* bzImage - Compressed k !! 161 $(Q)$(MAKE) $(build)=arch/m68k/kernel/syscalls all 354 echo ' install - Install kern << 355 echo ' (distributio << 356 echo ' $$(INSTALL_P << 357 echo '' << 358 echo ' fdimage - Create 1.4MB << 359 echo ' fdimage144 - Create 1.4MB << 360 echo ' fdimage288 - Create 2.8MB << 361 echo ' hdimage - Create a BIO << 362 echo ' isoimage - Create a boo << 363 echo ' bzdisk/fdima << 364 echo ' FDARGS="..." << 365 echo ' FDINITRD=fil << 366 162 367 endef !! 163 install: >> 164 sh $(srctree)/arch/m68k/install.sh $(KERNELRELEASE) vmlinux.gz System.map "$(INSTALL_PATH)"
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.