1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # Author: Huacai Chen <chenhuacai@loongson.cn> !! 2 # This file is subject to the terms and conditions of the GNU General Public 4 # Copyright (C) 2020-2022 Loongson Technology !! 3 # License. See the file "COPYING" in the main directory of this archive >> 4 # for more details. >> 5 # >> 6 # Copyright (C) 1994, 1995, 1996 by Ralf Baechle >> 7 # DECStation modifications by Paul M. Antoine, 1996 >> 8 # Copyright (C) 2002, 2003, 2004 Maciej W. Rozycki >> 9 # >> 10 # This file is included by the global makefile so that you can add your own >> 11 # architecture-specific flags and dependencies. Remember to do have actions >> 12 # for "archclean" and "archdep" for cleaning up and making dependencies for >> 13 # this architecture >> 14 # 5 15 6 boot := arch/loongarch/boot !! 16 # >> 17 # Select the object file format to substitute into the linker script. >> 18 # >> 19 ifdef CONFIG_CPU_LITTLE_ENDIAN >> 20 tool-prefix = mipsel-linux- >> 21 ld-emul = elf32ltsmip >> 22 else >> 23 tool-prefix = mips-linux- >> 24 ld-emul = elf32btsmip >> 25 endif 7 26 8 KBUILD_DEFCONFIG := loongson3_defconfig !! 27 ifdef CONFIG_CROSSCOMPILE 9 KBUILD_DTBS := dtbs !! 28 CROSS_COMPILE = $(tool-prefix) >> 29 endif 10 30 11 image-name-y := vmlinux !! 31 MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot 12 image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz << 13 32 14 ifndef CONFIG_EFI_STUB !! 33 # 15 KBUILD_IMAGE := $(boot)/vmlinux.elf !! 34 # 16 else !! 35 # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel 17 KBUILD_IMAGE := $(boot)/$(image-name-y).efi !! 36 # code since it only slows down the whole thing. At some point we might make >> 37 # use of global pointer optimizations but their use of $28 conflicts with >> 38 # the current pointer optimization. >> 39 # >> 40 # The DECStation requires an ECOFF kernel for remote booting, other MIPS >> 41 # machines may also. Since BFD is incredibly buggy with respect to >> 42 # crossformat linking we rely on the elf2ecoff tool for format conversion. >> 43 # >> 44 GCCFLAGS := -I $(TOPDIR)/include/asm/gcc >> 45 GCCFLAGS += -G 0 -mno-abicalls -fno-pic -pipe >> 46 GCCFLAGS += $(call check_gcc, -finline-limit=100000,) >> 47 LINKFLAGS += -G 0 -static -n >> 48 MODFLAGS += -mlong-calls >> 49 >> 50 ifdef CONFIG_DEBUG_INFO >> 51 GCCFLAGS += -g >> 52 ifdef CONFIG_SB1XXX_CORELIS >> 53 GCCFLAGS += -mno-sched-prolog -fno-omit-frame-pointer >> 54 endif 18 endif 55 endif 19 56 20 # 57 # 21 # Select the object file format to substitute !! 58 # Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>) 22 # 59 # 23 64bit-tool-archpref = loongarch64 !! 60 # <cpu0>,<isa0> -- preferred CPU and ISA designations (may require 24 32bit-bfd = elf32-loongarch !! 61 # recent tools) 25 64bit-bfd = elf64-loongarch !! 62 # <cpu1>,<isa1> -- fallback CPU and ISA designations (have to work 26 32bit-emul = elf32loongarch !! 63 # with up to the oldest supported tools) 27 64bit-emul = elf64loongarch !! 64 # <isa2> -- an ISA designation used as an ABI selector for 28 !! 65 # gcc versions that do not support "-mabi=32" 29 CC_FLAGS_FPU := -mfpu=64 !! 66 # (depending on the CPU type, either "mips1" or 30 CC_FLAGS_NO_FPU := -msoft-float !! 67 # "mips2") 31 !! 68 # 32 ifdef CONFIG_UNWINDER_ORC !! 69 set_gccflags = $(shell \ 33 orc_hash_h := arch/$(SRCARCH)/include/generate !! 70 while :; do \ 34 orc_hash_sh := $(srctree)/scripts/orc_hash.sh !! 71 cpu=$(1); isa=-$(2); \ 35 targets += $(orc_hash_h) !! 72 for gcc_opt in -march= -mcpu=; do \ 36 quiet_cmd_orc_hash = GEN $@ !! 73 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \ 37 cmd_orc_hash = mkdir -p $(dir $@); \ !! 74 -xc /dev/null > /dev/null 2>&1 && \ 38 $(CONFIG_SHELL) $(orc_has !! 75 break 2; \ 39 $(orc_hash_h): $(srctree)/arch/loongarch/inclu !! 76 done; \ 40 $(call if_changed,orc_hash) !! 77 cpu=$(3); isa=-$(4); \ 41 archprepare: $(orc_hash_h) !! 78 for gcc_opt in -march= -mcpu=; do \ 42 endif !! 79 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \ 43 !! 80 -xc /dev/null > /dev/null 2>&1 && \ 44 ifdef CONFIG_DYNAMIC_FTRACE !! 81 break 2; \ 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI !! 82 done; \ 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= !! 83 break; \ 47 endif !! 84 done; \ 48 !! 85 gcc_abi=-mabi=32; gcc_cpu=$$cpu; \ 49 ifdef CONFIG_64BIT !! 86 if $(CC) $$gcc_abi -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then \ 50 tool-archpref = $(64bit-tool-archpre !! 87 gcc_isa=$$isa; \ 51 UTS_MACHINE := loongarch64 !! 88 else \ 52 endif !! 89 gcc_abi=; gcc_isa=-$(5); \ 53 !! 90 fi; \ 54 ifneq ($(SUBARCH),$(ARCH)) !! 91 gas_abi=-Wa,-32; gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \ 55 ifeq ($(CROSS_COMPILE),) !! 92 while :; do \ 56 CROSS_COMPILE := $(call cc-cross-prefix, $ !! 93 for gas_opt in -Wa,-march= -Wa,-mcpu=; do \ 57 endif !! 94 $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \ 58 endif !! 95 -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \ 59 !! 96 break 2; \ 60 ifdef CONFIG_64BIT !! 97 done; \ 61 ld-emul = $(64bit-emul) !! 98 gas_abi=; gas_opt=; gas_cpu=; gas_isa=; \ 62 cflags-y += -mabi=lp64s !! 99 break; \ 63 endif !! 100 done; \ 64 !! 101 if test "$$gcc_opt" = -march= && test -n "$$gcc_abi"; then \ 65 cflags-y += -pipe $(CC_ !! 102 $(CC) $$gcc_abi $$gcc_opt$$gcc_cpu -S -o /dev/null \ 66 LDFLAGS_vmlinux += -static -n !! 103 -xc /dev/null > /dev/null 2>&1 && \ 67 !! 104 gcc_isa=; \ 68 # When the assembler supports explicit relocat !! 105 fi; \ 69 # GCC may have -mexplicit-relocs off by defaul !! 106 echo $$gcc_abi $$gcc_opt$$gcc_cpu $$gcc_isa $$gas_abi $$gas_opt$$gas_cpu $$gas_isa) 70 # assembler, so we force it via an option. !! 107 71 # !! 108 # 72 # When the assembler does not supports explici !! 109 # CPU-dependent compiler/assembler options for optimization. 73 # it. Disable it if the compiler supports it. !! 110 # 74 # !! 111 ifdef CONFIG_CPU_R3000 75 # The combination of a "new" assembler and "ol !! 112 GCCFLAGS += $(call set_gccflags,r3000,mips1,r3000,mips1,mips1) 76 # the rarity of this combo and the extra compl !! 113 endif 77 # Either upgrade the compiler or downgrade the !! 114 ifdef CONFIG_CPU_TX39XX 78 # out if it is the case (by probing for the mo !! 115 GCCFLAGS += $(call set_gccflags,r3900,mips1,r3000,mips1,mips1) 79 # compilers in this case would have support). !! 116 endif 80 # !! 117 ifdef CONFIG_CPU_R6000 81 # Also, -mdirect-extern-access is useful in ca !! 118 GCCFLAGS += $(call set_gccflags,r6000,mips2,r6000,mips2,mips2) \ 82 # relocs, for avoiding unnecessary GOT accesse !! 119 -Wa,--trap 83 # support though. !! 120 endif 84 ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS !! 121 ifdef CONFIG_CPU_R4300 85 cflags-y += $(call cc-o !! 122 GCCFLAGS += $(call set_gccflags,r4300,mips3,r4300,mips3,mips2) \ 86 KBUILD_CFLAGS_KERNEL += $(call cc-o !! 123 -Wa,--trap 87 KBUILD_CFLAGS_KERNEL += $(call cc-o !! 124 endif 88 KBUILD_AFLAGS_MODULE += $(call cc-o !! 125 ifdef CONFIG_CPU_VR41XX 89 KBUILD_CFLAGS_MODULE += $(call cc-o !! 126 GCCFLAGS += $(call set_gccflags,r4100,mips3,r4600,mips3,mips2) \ 90 else !! 127 -Wa,--trap 91 cflags-y += $(call cc-o !! 128 endif 92 KBUILD_AFLAGS_KERNEL += -Wa,-mla-gl !! 129 ifdef CONFIG_CPU_R4X00 93 KBUILD_CFLAGS_KERNEL += -Wa,-mla-gl !! 130 GCCFLAGS += $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \ 94 KBUILD_AFLAGS_MODULE += -Wa,-mla-gl !! 131 -Wa,--trap 95 KBUILD_CFLAGS_MODULE += -fplt -Wa,- !! 132 endif >> 133 ifdef CONFIG_CPU_TX49XX >> 134 GCCFLAGS += $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \ >> 135 -Wa,--trap >> 136 endif >> 137 ifdef CONFIG_CPU_MIPS32 >> 138 GCCFLAGS += $(call set_gccflags,mips32,mips32,r4600,mips3,mips2) \ >> 139 -Wa,--trap >> 140 endif >> 141 ifdef CONFIG_CPU_MIPS64 >> 142 GCCFLAGS += $(call set_gccflags,mips64,mips64,r4600,mips3,mips2) \ >> 143 -Wa,--trap >> 144 endif >> 145 ifdef CONFIG_CPU_R5000 >> 146 GCCFLAGS += $(call set_gccflags,r5000,mips4,r5000,mips4,mips2) \ >> 147 -Wa,--trap >> 148 endif >> 149 ifdef CONFIG_CPU_R5432 >> 150 GCCFLAGS += $(call set_gccflags,r5400,mips4,r5000,mips4,mips2) \ >> 151 -Wa,--trap >> 152 endif >> 153 ifdef CONFIG_CPU_NEVADA >> 154 GCCFLAGS += $(call set_gccflags,rm5200,mips4,r5000,mips4,mips2) \ >> 155 -Wa,--trap >> 156 #GCCFLAGS += $(call check_gcc,-mmad,) >> 157 endif >> 158 ifdef CONFIG_CPU_RM7000 >> 159 GCCFLAGS += $(call set_gccflags,rm7000,mips4,r5000,mips4,mips2) \ >> 160 -Wa,--trap >> 161 endif >> 162 ifdef CONFIG_CPU_RM9000 >> 163 GCCFLAGS += $(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \ >> 164 -Wa,--trap >> 165 endif >> 166 ifdef CONFIG_CPU_SB1 >> 167 GCCFLAGS += $(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \ >> 168 -Wa,--trap >> 169 ifdef CONFIG_SB1_PASS_1_WORKAROUNDS >> 170 MODFLAGS += -msb1-pass1-workarounds >> 171 endif >> 172 endif >> 173 >> 174 AFLAGS += $(GCCFLAGS) >> 175 CFLAGS += $(GCCFLAGS) >> 176 >> 177 LD += -m $(ld-emul) >> 178 >> 179 >> 180 # >> 181 # We unconditionally build the math emulator >> 182 # >> 183 CORE_FILES += arch/mips/math-emu/fpu_emulator.o >> 184 SUBDIRS += arch/mips/math-emu >> 185 >> 186 # >> 187 # ramdisk/initrd support >> 188 # You need a compressed ramdisk image, named ramdisk.gz in >> 189 # arch/mips/ramdisk >> 190 # >> 191 ifdef CONFIG_EMBEDDED_RAMDISK >> 192 CORE_FILES += arch/mips/ramdisk/ramdisk.o >> 193 SUBDIRS += arch/mips/ramdisk >> 194 endif >> 195 >> 196 >> 197 # >> 198 # Board-dependent options and extra files >> 199 # >> 200 >> 201 # >> 202 # Acer PICA 61, Mips Magnum 4000 and Olivetti M700. >> 203 # >> 204 ifdef CONFIG_MIPS_JAZZ >> 205 CORE_FILES += arch/mips/jazz/jazz.o >> 206 SUBDIRS += arch/mips/jazz arch/mips/arc >> 207 LIBS += arch/mips/arc/arclib.a >> 208 LOADADDR := 0x80080000 >> 209 endif >> 210 >> 211 # >> 212 # Au1000 (Alchemy Semi PB1000) eval board >> 213 # >> 214 ifdef CONFIG_MIPS_PB1000 >> 215 LIBS += arch/mips/au1000/pb1000/pb1000.o \ >> 216 arch/mips/au1000/common/au1000.o >> 217 SUBDIRS += arch/mips/au1000/pb1000 arch/mips/au1000/common >> 218 LOADADDR := 0x80100000 >> 219 endif >> 220 >> 221 # >> 222 # Au1100 (Alchemy Semi PB1100) eval board >> 223 # >> 224 ifdef CONFIG_MIPS_PB1100 >> 225 LIBS += arch/mips/au1000/pb1100/pb1100.o \ >> 226 arch/mips/au1000/common/au1000.o >> 227 SUBDIRS += arch/mips/au1000/pb1100 arch/mips/au1000/common >> 228 LOADADDR += 0x80100000 >> 229 endif >> 230 >> 231 # >> 232 # Au1500 (Alchemy Semi PB1500) eval board >> 233 # >> 234 ifdef CONFIG_MIPS_PB1500 >> 235 LIBS += arch/mips/au1000/pb1500/pb1500.o \ >> 236 arch/mips/au1000/common/au1000.o >> 237 SUBDIRS += arch/mips/au1000/pb1500 arch/mips/au1000/common >> 238 LOADADDR := 0x80100000 >> 239 endif >> 240 >> 241 # >> 242 # Au1x00 (AMD/Alchemy) eval boards >> 243 # >> 244 ifdef CONFIG_MIPS_DB1000 >> 245 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 246 arch/mips/au1000/common/au1000.o >> 247 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 248 LOADADDR += 0x80100000 >> 249 endif >> 250 >> 251 ifdef CONFIG_MIPS_DB1500 >> 252 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 253 arch/mips/au1000/common/au1000.o >> 254 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 255 LOADADDR += 0x80100000 >> 256 endif >> 257 >> 258 ifdef CONFIG_MIPS_DB1550 >> 259 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 260 arch/mips/au1000/common/au1000.o >> 261 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 262 LOADADDR += 0x80100000 >> 263 endif >> 264 >> 265 ifdef CONFIG_MIPS_DB1100 >> 266 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 267 arch/mips/au1000/common/au1000.o >> 268 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 269 LOADADDR += 0x80100000 >> 270 endif >> 271 >> 272 ifdef CONFIG_MIPS_HYDROGEN3 >> 273 LIBS += arch/mips/au1000/hydrogen3/hydrogen3.o \ >> 274 arch/mips/au1000/common/au1000.o >> 275 SUBDIRS += arch/mips/au1000/hydrogen3 arch/mips/au1000/common >> 276 LOADADDR += 0x80100000 >> 277 endif >> 278 >> 279 ifdef CONFIG_MIPS_BOSPORUS >> 280 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 281 arch/mips/au1000/common/au1000.o >> 282 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 283 LOADADDR += 0x80100000 >> 284 endif >> 285 >> 286 ifdef CONFIG_MIPS_MIRAGE >> 287 LIBS += arch/mips/au1000/db1x00/db1x00.o \ >> 288 arch/mips/au1000/common/au1000.o >> 289 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 290 LOADADDR += 0x80100000 >> 291 endif >> 292 >> 293 ifdef CONFIG_MIPS_XXS1500 >> 294 LIBS += arch/mips/au1000/xxs1500/xxs1500.o \ >> 295 arch/mips/au1000/common/au1000.o >> 296 SUBDIRS += arch/mips/au1000/xxs1500 arch/mips/au1000/common >> 297 LOADADDR += 0x80100000 >> 298 endif >> 299 >> 300 ifdef CONFIG_MIPS_MTX1 >> 301 LIBS += arch/mips/au1000/mtx-1/mtx-1.o \ >> 302 arch/mips/au1000/common/au1000.o >> 303 SUBDIRS += arch/mips/au1000/mtx-1 arch/mips/au1000/common >> 304 LOADADDR += 0x80100000 96 endif 305 endif 97 306 98 KBUILD_AFLAGS += $(call cc-o !! 307 ifdef CONFIG_MIPS_PB1550 99 KBUILD_CFLAGS += $(call cc-o !! 308 LIBS += arch/mips/au1000/pb1550/pb1550.o \ 100 KBUILD_AFLAGS += $(call cc-o !! 309 arch/mips/au1000/common/au1000.o 101 KBUILD_CFLAGS += $(call cc-o !! 310 SUBDIRS += arch/mips/au1000/pb1550 arch/mips/au1000/common >> 311 LOADADDR += 0x80100000 >> 312 endif >> 313 >> 314 >> 315 # >> 316 # Cogent CSB250 >> 317 # >> 318 ifdef CONFIG_COGENT_CSB250 >> 319 LIBS += arch/mips/au1000/csb250/csb250.o \ >> 320 arch/mips/au1000/common/au1000.o >> 321 SUBDIRS += arch/mips/au1000/csb250 arch/mips/au1000/common >> 322 LOADADDR := 0x80100000 >> 323 endif >> 324 >> 325 ifdef CONFIG_PCI >> 326 CORE_FILES += arch/mips/pci/pci-core.o >> 327 SUBDIRS += arch/mips/pci >> 328 endif >> 329 >> 330 # >> 331 # Algorithmics P4032 >> 332 # >> 333 ifdef CONFIG_ALGOR_P4032 >> 334 CORE_FILES += arch/mips/algor/algor.o >> 335 SUBDIRS += arch/mips/algor >> 336 LOADADDR := 0x80000000 >> 337 endif >> 338 >> 339 # >> 340 # Baget/MIPS >> 341 # >> 342 ifdef CONFIG_BAGET_MIPS >> 343 SUBDIRS += arch/mips/baget arch/mips/baget/prom >> 344 LIBS += arch/mips/baget/baget.a arch/mips/baget/prom/bagetlib.a >> 345 LOADADDR := 0x80001000 >> 346 endif >> 347 >> 348 # >> 349 # Cobalt Server >> 350 # >> 351 ifdef CONFIG_MIPS_COBALT >> 352 SUBDIRS += arch/mips/cobalt >> 353 CORE_FILES += arch/mips/cobalt/cobalt.o >> 354 LOADADDR := 0x80080000 >> 355 endif >> 356 >> 357 # >> 358 # DECstation family >> 359 # >> 360 ifdef CONFIG_DECSTATION >> 361 CORE_FILES += arch/mips/dec/dec.o >> 362 SUBDIRS += arch/mips/dec arch/mips/dec/prom >> 363 LIBS += arch/mips/dec/prom/rexlib.a >> 364 LOADADDR := 0x80040000 >> 365 endif >> 366 >> 367 # >> 368 # Galileo EV64120 Board >> 369 # >> 370 ifdef CONFIG_MIPS_EV64120 >> 371 LIBS += arch/mips/gt64120/common/gt64120.o \ >> 372 arch/mips/gt64120/ev64120/ev64120.o >> 373 SUBDIRS += arch/mips/gt64120/common arch/mips/gt64120/ev64120 >> 374 LOADADDR := 0x80100000 >> 375 endif 102 376 103 ifdef CONFIG_OBJTOOL !! 377 # 104 KBUILD_CFLAGS += -fno-jump-t !! 378 # Galileo EV96100 Board >> 379 # >> 380 ifdef CONFIG_MIPS_EV96100 >> 381 LIBS += arch/mips/galileo-boards/ev96100/ev96100.o >> 382 SUBDIRS += arch/mips/galileo-boards/ev96100 >> 383 LOADADDR := 0x80100000 105 endif 384 endif 106 385 107 KBUILD_RUSTFLAGS += --target=lo !! 386 # 108 KBUILD_RUSTFLAGS_KERNEL += -Zdirect-ac !! 387 # Globespan IVR eval board with QED 5231 CPU 109 KBUILD_RUSTFLAGS_MODULE += -Zdirect-ac !! 388 # >> 389 ifdef CONFIG_MIPS_IVR >> 390 LIBS += arch/mips/ite-boards/ivr/ivr.o \ >> 391 arch/mips/ite-boards/generic/it8172.o >> 392 SUBDIRS += arch/mips/ite-boards/generic arch/mips/ite-boards/ivr >> 393 LOADADDR := 0x80100000 >> 394 endif 110 395 111 ifeq ($(CONFIG_RELOCATABLE),y) !! 396 # 112 KBUILD_CFLAGS_KERNEL += -fPIE !! 397 # HP LaserJet 113 KBUILD_RUSTFLAGS_KERNEL += -Crelocatio !! 398 # 114 LDFLAGS_vmlinux += -static -pi !! 399 ifdef CONFIG_HP_LASERJET >> 400 SUBDIRS += arch/mips/hp-lj >> 401 LIBS += arch/mips/hp-lj/hp-lj.o >> 402 LOADADDR := 0x80030000 115 endif 403 endif 116 404 117 cflags-y += $(call cc-option, -mno-check-zero- !! 405 # >> 406 # ITE 8172 eval board with QED 5231 CPU >> 407 # >> 408 ifdef CONFIG_MIPS_ITE8172 >> 409 LIBS += arch/mips/ite-boards/qed-4n-s01b/ite.o \ >> 410 arch/mips/ite-boards/generic/it8172.o >> 411 SUBDIRS += arch/mips/ite-boards/generic arch/mips/ite-boards/qed-4n-s01b >> 412 LOADADDR := 0x80100000 >> 413 endif 118 414 119 ifndef CONFIG_KASAN !! 415 # 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m !! 416 # MIPS Atlas board >> 417 # >> 418 ifdef CONFIG_MIPS_ATLAS >> 419 LIBS += arch/mips/mips-boards/atlas/atlas.o \ >> 420 arch/mips/mips-boards/generic/mipsboards.o >> 421 SUBDIRS += arch/mips/mips-boards/generic arch/mips/mips-boards/atlas >> 422 LOADADDR := 0x80100000 121 endif 423 endif 122 424 123 load-y = 0x9000000000200000 !! 425 # 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- !! 426 # MIPS Malta board >> 427 # >> 428 ifdef CONFIG_MIPS_MALTA >> 429 LIBS += arch/mips/mips-boards/malta/malta.o \ >> 430 arch/mips/mips-boards/generic/mipsboards.o >> 431 SUBDIRS += arch/mips/mips-boards/malta arch/mips/mips-boards/generic >> 432 LOADADDR := 0x80100000 >> 433 endif 125 434 126 drivers-$(CONFIG_PCI) += arch/loonga !! 435 # >> 436 # MIPS SEAD board >> 437 # >> 438 ifdef CONFIG_MIPS_SEAD >> 439 LIBS += arch/mips/mips-boards/sead/sead.o \ >> 440 arch/mips/mips-boards/generic/mipsboards.o >> 441 SUBDIRS += arch/mips/mips-boards/generic arch/mips/mips-boards/sead >> 442 LOADADDR := 0x80100000 >> 443 endif 127 444 128 KBUILD_AFLAGS += $(cflags-y) !! 445 # 129 KBUILD_CFLAGS += $(cflags-y) !! 446 # Momentum Ocelot board 130 KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(lo !! 447 # >> 448 ifdef CONFIG_MOMENCO_OCELOT >> 449 # The Ocelot setup.o must be linked early - it does the ioremap() for the >> 450 # mips_io_port_base. >> 451 CORE_FILES += arch/mips/gt64120/common/gt64120.o \ >> 452 arch/mips/gt64120/momenco_ocelot/momenco_ocelot.o >> 453 SUBDIRS += arch/mips/gt64120/common arch/mips/gt64120/momenco_ocelot >> 454 LOADADDR := 0x80100000 >> 455 endif 131 456 132 # This is required to get dwarf unwinding tabl !! 457 # 133 # instead of .eh_frame so we don't discard the !! 458 # Momentum Ocelot-G board 134 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl !! 459 # >> 460 ifdef CONFIG_MOMENCO_OCELOT_G >> 461 # The Ocelot-G setup.o must be linked early - it does the ioremap() for the >> 462 # mips_io_port_base. >> 463 CORE_FILES += arch/mips/momentum/ocelot_g/ocelot_g.o >> 464 SUBDIRS += arch/mips/momentum/ocelot_g >> 465 LOADADDR := 0x80100000 >> 466 endif 135 467 136 ifdef CONFIG_ARCH_STRICT_ALIGN !! 468 # 137 # Don't emit unaligned accesses. !! 469 # Momentum Ocelot-C and -CS boards 138 # Not all LoongArch cores support unaligned ac !! 470 # 139 # rely on others to provide emulation for thes !! 471 ifdef CONFIG_MOMENCO_OCELOT_C 140 KBUILD_CFLAGS += $(call cc-option,-mstrict-ali !! 472 # The Ocelot-C[S] setup.o must be linked early - it does the ioremap() for the >> 473 # mips_io_port_base. >> 474 CORE_FILES += arch/mips/momentum/ocelot_c/ocelot_c.o >> 475 SUBDIRS += arch/mips/momentum/ocelot_c >> 476 LOADADDR := 0x80100000 >> 477 endif >> 478 >> 479 ifdef CONFIG_PMC_BIG_SUR >> 480 CORE_FILES += arch/mips/pmc-sierra/big_sur/big_sur.o >> 481 SUBDIRS += arch/mips/pmc-sierra/big_sur >> 482 LOADADDR := 0x80100000 >> 483 endif >> 484 >> 485 ifdef CONFIG_PMC_STRETCH >> 486 CORE_FILES += arch/mips/pmc-sierra/stretch/stretch.o >> 487 SUBDIRS += arch/mips/pmc-sierra/stretch >> 488 LOADADDR := 0x80200000 >> 489 endif >> 490 >> 491 ifdef CONFIG_MOMENCO_JAGUAR_ATX >> 492 LIBS += arch/mips/momentum/jaguar_atx/jaguar_atx.o >> 493 SUBDIRS += arch/mips/momentum/jaguar_atx >> 494 ifdef CONFIG_JAGUAR_DMALOW >> 495 LOADADDR := 0x88000000 141 else 496 else 142 # Optimise for performance on hardware support !! 497 LOADADDR := 0x80100000 143 KBUILD_CFLAGS += $(call cc-option,-mno-strict- !! 498 endif >> 499 endif >> 500 >> 501 # >> 502 # NEC DDB Vrc-5074 >> 503 # >> 504 ifdef CONFIG_DDB5074 >> 505 SUBDIRS += arch/mips/ddb5xxx/common arch/mips/ddb5xxx/ddb5074 >> 506 LIBS += arch/mips/ddb5xxx/common/ddb5xxx.o arch/mips/ddb5xxx/ddb5074/ddb5074.o >> 507 LOADADDR := 0x80080000 >> 508 endif >> 509 >> 510 # >> 511 # NEC DDB Vrc-5476 >> 512 # >> 513 ifdef CONFIG_DDB5476 >> 514 SUBDIRS += arch/mips/ddb5xxx/common arch/mips/ddb5xxx/ddb5476 >> 515 LIBS += arch/mips/ddb5xxx/common/ddb5xxx.o \ >> 516 arch/mips/ddb5xxx/ddb5476/ddb5476.o >> 517 LOADADDR := 0x80080000 >> 518 endif >> 519 >> 520 # >> 521 # NEC DDB Vrc-5477 >> 522 # >> 523 ifdef CONFIG_DDB5477 >> 524 SUBDIRS += arch/mips/ddb5xxx/common arch/mips/ddb5xxx/ddb5477 >> 525 LIBS += arch/mips/ddb5xxx/common/ddb5xxx.o \ >> 526 arch/mips/ddb5xxx/ddb5477/ddb5477.o >> 527 LOADADDR := 0x80100000 >> 528 endif >> 529 >> 530 ifdef CONFIG_LASAT >> 531 LIBS += arch/mips/lasat/lasatkern.o >> 532 SUBDIRS += arch/mips/lasat >> 533 LOADADDR += 0x80000000 >> 534 endif >> 535 # >> 536 # NEC Osprey (vr4181) board >> 537 # >> 538 ifdef CONFIG_NEC_OSPREY >> 539 SUBDIRS += arch/mips/vr4181/common arch/mips/vr4181/osprey >> 540 LIBS += arch/mips/vr4181/common/vr4181.o \ >> 541 arch/mips/vr4181/osprey/osprey.o >> 542 LOADADDR := 0x80002000 >> 543 endif >> 544 >> 545 # >> 546 # NEC Eagle/Hawk (VR4122/VR4131) board >> 547 # >> 548 ifdef CONFIG_NEC_EAGLE >> 549 SUBDIRS += arch/mips/vr41xx/common \ >> 550 arch/mips/vr41xx/nec-eagle >> 551 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 552 arch/mips/vr41xx/nec-eagle/eagle.o >> 553 LOADADDR := 0x80000000 >> 554 endif >> 555 >> 556 # >> 557 # ZAO Networks Capcella (VR4131) >> 558 # >> 559 ifdef CONFIG_ZAO_CAPCELLA >> 560 SUBDIRS += arch/mips/vr41xx/common \ >> 561 arch/mips/vr41xx/zao-capcella >> 562 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 563 arch/mips/vr41xx/zao-capcella/capcella.o >> 564 LOADADDR := 0x80000000 >> 565 endif >> 566 >> 567 # >> 568 # Victor MP-C303/304 (VR4122) >> 569 # >> 570 ifdef CONFIG_VICTOR_MPC30X >> 571 SUBDIRS += arch/mips/vr41xx/common \ >> 572 arch/mips/vr41xx/victor-mpc30x >> 573 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 574 arch/mips/vr41xx/victor-mpc30x/mpc30x.o >> 575 LOADADDR := 0x80001000 >> 576 endif >> 577 >> 578 # >> 579 # IBM WorkPad z50 (VR4121) >> 580 # >> 581 ifdef CONFIG_IBM_WORKPAD >> 582 SUBDIRS += arch/mips/vr41xx/common \ >> 583 arch/mips/vr41xx/ibm-workpad >> 584 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 585 arch/mips/vr41xx/ibm-workpad/workpad.o >> 586 LOADADDR += 0x80004000 144 endif 587 endif 145 588 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print !! 589 # >> 590 # CASIO CASSIPEIA E-55/65 (VR4111) >> 591 # >> 592 ifdef CONFIG_CASIO_E55 >> 593 SUBDIRS += arch/mips/vr41xx/common \ >> 594 arch/mips/vr41xx/casio-e55 >> 595 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 596 arch/mips/vr41xx/casio-e55/e55.o >> 597 LOADADDR += 0x80004000 >> 598 endif 147 599 148 KBUILD_LDFLAGS += -m $(ld-emul) !! 600 # >> 601 # TANBAC TB0226 Mbase (VR4131) >> 602 # >> 603 ifdef CONFIG_TANBAC_TB0226 >> 604 SUBDIRS += arch/mips/vr41xx/common \ >> 605 arch/mips/vr41xx/tanbac-tb0226 >> 606 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 607 arch/mips/vr41xx/tanbac-tb0226/tb0226.o >> 608 LOADADDR := 0x80000000 >> 609 endif 149 610 150 ifdef need-compiler !! 611 # 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) !! 612 # TANBAC TB0229 (VR4131DIMM) 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL !! 613 # 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' !! 614 ifdef CONFIG_TANBAC_TB0229 >> 615 SUBDIRS += arch/mips/vr41xx/common \ >> 616 arch/mips/vr41xx/tanbac-tb0229 >> 617 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ >> 618 arch/mips/vr41xx/tanbac-tb0229/tb0229.o >> 619 LOADADDR := 0x80000000 154 endif 620 endif 155 621 156 libs-y += arch/loongarch/lib/ !! 622 # 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ !! 623 # Philips Nino >> 624 # >> 625 ifdef CONFIG_NINO >> 626 CORE_FILES += arch/mips/philips/nino/nino.o >> 627 SUBDIRS += arch/mips/philips/nino >> 628 LOADADDR := 0x80000000 >> 629 endif 158 630 159 drivers-y += arch/loongarch/cryp !! 631 # >> 632 # SGI IP22 (Indy/Indigo2) >> 633 # >> 634 ifdef CONFIG_SGI_IP22 >> 635 CORE_FILES += arch/mips/sgi-ip22/ip22-kern.o >> 636 LIBS += arch/mips/arc/arclib.a >> 637 SUBDIRS += arch/mips/sgi-ip22 arch/mips/arc >> 638 # >> 639 # Set LOADADDR to >= 0x88069000 if you want to leave space for symmon, >> 640 # 0x88002000 for production kernels. Note that the value must be >> 641 # 8kb aligned or the handling of the current variable will break. >> 642 # >> 643 LOADADDR := 0x88002000 >> 644 endif >> 645 >> 646 # >> 647 # Sibyte SB1250 SOC and Broadcom (SiByte) BCM112x SOCs >> 648 # >> 649 ifneq ($(CONFIG_SIBYTE_SB1250)$(CONFIG_SIBYTE_BCM112X),) >> 650 # This is a LIB so that it links at the end, and initcalls are later >> 651 # the sequence; but it is built as an object so that modules don't get >> 652 # removed (as happens, even if they have __initcall/module_init) >> 653 LIBS += arch/mips/sibyte/sb1250/sb1250.o >> 654 SUBDIRS += arch/mips/sibyte/sb1250 >> 655 LOADADDR := 0x80100000 >> 656 endif 160 657 161 # suspend and hibernation support !! 658 # 162 drivers-$(CONFIG_PM) += arch/loongarch/powe !! 659 # Sibyte boards: >> 660 # >> 661 # BCM91250A (SWARM), >> 662 # BCM91250E (Sentosa), >> 663 # BCM91120C (CRhine), >> 664 # BCM91120x (Carmel), >> 665 # BCM91125C (CRhone), >> 666 # BCM91125E (Rhone). >> 667 # >> 668 ifdef CONFIG_SIBYTE_BOARD >> 669 LIBS += arch/mips/sibyte/swarm/sbswarm.a >> 670 SUBDIRS += arch/mips/sibyte/swarm >> 671 endif 163 672 164 ifeq ($(KBUILD_EXTMOD),) !! 673 # 165 prepare: vdso_prepare !! 674 # Sibyte CFE firmware 166 vdso_prepare: prepare0 !! 675 # 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd !! 676 ifdef CONFIG_SIBYTE_CFE >> 677 LIBS += arch/mips/sibyte/cfe/cfe.a >> 678 SUBDIRS += arch/mips/sibyte/cfe 168 endif 679 endif 169 680 170 vdso-install-y += arch/loongarch/vdso/vdso.so. !! 681 # >> 682 # SNI RM200 PCI >> 683 # >> 684 ifdef CONFIG_SNI_RM200_PCI >> 685 CORE_FILES += arch/mips/sni/sni.o >> 686 SUBDIRS += arch/mips/sni arch/mips/arc >> 687 LIBS += arch/mips/arc/arclib.a >> 688 LOADADDR := 0x80080000 >> 689 endif >> 690 >> 691 # >> 692 # Toshiba JMR-TX3927 board >> 693 # >> 694 ifdef CONFIG_TOSHIBA_JMR3927 >> 695 CORE_FILES += arch/mips/jmr3927/rbhma3100/jmr3927.o \ >> 696 arch/mips/jmr3927/common/tx3927.o >> 697 SUBDIRS += arch/mips/jmr3927/rbhma3100 arch/mips/jmr3927/common >> 698 LOADADDR := 0x80050000 >> 699 endif >> 700 >> 701 # >> 702 # Toshiba RBTX4927 board or >> 703 # Toshiba RBTX4937 board >> 704 # >> 705 ifdef CONFIG_TOSHIBA_RBTX4927 >> 706 MIPS = arch/mips >> 707 CEC = tx4927 >> 708 COMMON = $(MIPS)/$(CEC)/common >> 709 BOARD = $(MIPS)/$(CEC)/toshiba_rbtx4927 >> 710 LIBS += $(BOARD)/toshiba_rbtx4927.o $(COMMON)/tx4927.o >> 711 SUBDIRS += $(BOARD) $(COMMON) >> 712 LOADADDR += 0x80020000 >> 713 endif >> 714 >> 715 # >> 716 # Choosing incompatible machines durings configuration will result in >> 717 # error messages during linking. Select a default linkscript if >> 718 # none has been choosen above. >> 719 # >> 720 vmlinux: arch/$(ARCH)/ld.script >> 721 >> 722 arch/$(ARCH)/ld.script: arch/$(ARCH)/ld.script.in arch/$(ARCH)/Makefile >> 723 sed -e 's/@@LOADADDR@@/$(LOADADDR)/' <$< >$@ >> 724 LINKFLAGS += -T arch/$(ARCH)/ld.script >> 725 >> 726 HEAD := arch/mips/kernel/head.o arch/mips/kernel/init_task.o >> 727 >> 728 SUBDIRS := $(addprefix arch/mips/, tools) $(SUBDIRS) $(addprefix arch/mips/, kernel mm lib) >> 729 CORE_FILES := arch/mips/kernel/kernel.o arch/mips/mm/mm.o $(CORE_FILES) >> 730 LIBS := arch/mips/lib/lib.a $(LIBS) >> 731 >> 732 ifdef CONFIG_BAGET_MIPS >> 733 >> 734 BAGETBOOT = $(MAKE) -C arch/$(ARCH)/baget >> 735 >> 736 balo: vmlinux >> 737 $(BAGETBOOT) balo >> 738 >> 739 endif >> 740 >> 741 ifdef CONFIG_MIPS_EV64120 >> 742 gboot: vmlinux >> 743 $(MAKE) -C arch/$(ARCH)/galileo-boards/ev64120/compressed >> 744 endif >> 745 >> 746 ifdef CONFIG_LASAT >> 747 rom.bin rom.sw: vmlinux >> 748 $(MAKE) -C arch/$(ARCH)/lasat/image $@ >> 749 endif >> 750 >> 751 boot: mips-boot >> 752 >> 753 mips-boot: vmlinux >> 754 @$(MAKEBOOT) boot 171 755 172 all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTB !! 756 vmlinux.ecoff: vmlinux >> 757 @$(MAKEBOOT) $@ 173 758 174 vmlinuz.efi: vmlinux.efi !! 759 vmlinux.srec: vmlinux >> 760 @$(MAKEBOOT) $@ 175 761 176 vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux !! 762 archclean: 177 $(Q)$(MAKE) $(build)=$(boot) $(bootvar !! 763 @$(MAKEBOOT) clean >> 764 rm -f arch/$(ARCH)/ld.script >> 765 $(MAKE) -C arch/$(ARCH)/tools clean >> 766 $(MAKE) -C arch/mips/baget clean >> 767 $(MAKE) -C arch/mips/lasat clean 178 768 179 install: !! 769 archmrproper: 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) !! 770 @$(MAKEBOOT) mrproper 181 $(Q)install -D -m 644 .config $(INSTAL !! 771 $(RM) $(TOPDIR)/include/asm-$(ARCH)/offset.h 182 $(Q)install -D -m 644 System.map $(INS !! 772 $(MAKE) -C arch/$(ARCH)/tools mrproper 183 773 184 define archhelp !! 774 archdep: 185 echo ' install - install !! 775 if [ ! -f $(TOPDIR)/include/asm-$(ARCH)/offset.h ]; then \ 186 echo !! 776 touch $(TOPDIR)/include/asm-$(ARCH)/offset.h; \ 187 endef !! 777 fi; >> 778 @$(MAKEBOOT) dep
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.