1 # 1 # 2 # arch/arm64/Makefile << 3 # << 4 # This file is included by the global makefile << 5 # architecture-specific flags and dependencies << 6 # << 7 # This file is subject to the terms and condit 2 # This file is subject to the terms and conditions of the GNU General Public 8 # License. See the file "COPYING" in the main 3 # License. See the file "COPYING" in the main directory of this archive 9 # for more details. 4 # for more details. 10 # 5 # 11 # Copyright (C) 1995-2001 by Russell King !! 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 # 12 15 13 LDFLAGS_vmlinux :=--no-undefined -X --pic-vene !! 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 14 26 15 ifeq ($(CONFIG_RELOCATABLE), y) !! 27 ifdef CONFIG_CROSSCOMPILE 16 # Pass --no-apply-dynamic-relocs to restore pr !! 28 CROSS_COMPILE = $(tool-prefix) 17 # for relative relocs, since this leads to bet << 18 # with the relocation offsets always being zer << 19 LDFLAGS_vmlinux += -shared -Bsymbolic << 20 $(call ld-option, --no << 21 endif 29 endif 22 30 23 ifeq ($(CONFIG_ARM64_ERRATUM_843419),y) !! 31 MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot 24 ifeq ($(CONFIG_ARM64_LD_HAS_FIX_ERRATUM_8434 !! 32 25 LDFLAGS_vmlinux += --fix-cortex-a53-843419 !! 33 # 26 endif !! 34 # >> 35 # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel >> 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 27 endif 55 endif 28 56 29 cc_has_k_constraint := $(call try-run,echo !! 57 # 30 'int main(void) { !! 58 # Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>) 31 asm volatile("and w0, w0, %w0" !! 59 # 32 return 0; !! 60 # <cpu0>,<isa0> -- preferred CPU and ISA designations (may require 33 }' | $(CC) -S -x c -o "$$TMP" -,,-DCON !! 61 # recent tools) >> 62 # <cpu1>,<isa1> -- fallback CPU and ISA designations (have to work >> 63 # with up to the oldest supported tools) >> 64 # <isa2> -- an ISA designation used as an ABI selector for >> 65 # gcc versions that do not support "-mabi=32" >> 66 # (depending on the CPU type, either "mips1" or >> 67 # "mips2") >> 68 # >> 69 set_gccflags = $(shell \ >> 70 while :; do \ >> 71 cpu=$(1); isa=-$(2); \ >> 72 for gcc_opt in -march= -mcpu=; do \ >> 73 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \ >> 74 -xc /dev/null > /dev/null 2>&1 && \ >> 75 break 2; \ >> 76 done; \ >> 77 cpu=$(3); isa=-$(4); \ >> 78 for gcc_opt in -march= -mcpu=; do \ >> 79 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \ >> 80 -xc /dev/null > /dev/null 2>&1 && \ >> 81 break 2; \ >> 82 done; \ >> 83 break; \ >> 84 done; \ >> 85 gcc_abi=-mabi=32; gcc_cpu=$$cpu; \ >> 86 if $(CC) $$gcc_abi -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then \ >> 87 gcc_isa=$$isa; \ >> 88 else \ >> 89 gcc_abi=; gcc_isa=-$(5); \ >> 90 fi; \ >> 91 gas_abi=-Wa,-32; gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \ >> 92 while :; do \ >> 93 for gas_opt in -Wa,-march= -Wa,-mcpu=; do \ >> 94 $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \ >> 95 -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \ >> 96 break 2; \ >> 97 done; \ >> 98 gas_abi=; gas_opt=; gas_cpu=; gas_isa=; \ >> 99 break; \ >> 100 done; \ >> 101 if test "$$gcc_opt" = -march= && test -n "$$gcc_abi"; then \ >> 102 $(CC) $$gcc_abi $$gcc_opt$$gcc_cpu -S -o /dev/null \ >> 103 -xc /dev/null > /dev/null 2>&1 && \ >> 104 gcc_isa=; \ >> 105 fi; \ >> 106 echo $$gcc_abi $$gcc_opt$$gcc_cpu $$gcc_isa $$gas_abi $$gas_opt$$gas_cpu $$gas_isa) 34 107 35 ifeq ($(CONFIG_BROKEN_GAS_INST),y) !! 108 # 36 $(warning Detected assembler with broken .inst !! 109 # CPU-dependent compiler/assembler options for optimization. >> 110 # >> 111 ifdef CONFIG_CPU_R3000 >> 112 GCCFLAGS += $(call set_gccflags,r3000,mips1,r3000,mips1,mips1) >> 113 endif >> 114 ifdef CONFIG_CPU_TX39XX >> 115 GCCFLAGS += $(call set_gccflags,r3900,mips1,r3000,mips1,mips1) >> 116 endif >> 117 ifdef CONFIG_CPU_R6000 >> 118 GCCFLAGS += $(call set_gccflags,r6000,mips2,r6000,mips2,mips2) \ >> 119 -Wa,--trap >> 120 endif >> 121 ifdef CONFIG_CPU_R4300 >> 122 GCCFLAGS += $(call set_gccflags,r4300,mips3,r4300,mips3,mips2) \ >> 123 -Wa,--trap >> 124 endif >> 125 ifdef CONFIG_CPU_VR41XX >> 126 GCCFLAGS += $(call set_gccflags,r4100,mips3,r4600,mips3,mips2) \ >> 127 -Wa,--trap >> 128 endif >> 129 ifdef CONFIG_CPU_R4X00 >> 130 GCCFLAGS += $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \ >> 131 -Wa,--trap >> 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 37 endif 172 endif 38 173 39 # The GCC option -ffreestanding is required in !! 174 AFLAGS += $(GCCFLAGS) 40 # ARM/NEON intrinsics in a non C99-compliant e !! 175 CFLAGS += $(GCCFLAGS) 41 CC_FLAGS_FPU := -ffreestanding << 42 # Enable <arm_neon.h> << 43 CC_FLAGS_FPU += -isystem $(shell $(CC) -pri << 44 CC_FLAGS_NO_FPU := -mgeneral-regs-only << 45 176 46 KBUILD_CFLAGS += $(CC_FLAGS_NO_FPU) \ !! 177 LD += -m $(ld-emul) 47 $(compat_vdso) $(cc_has_k_c << 48 KBUILD_CFLAGS += $(call cc-disable-warning, << 49 KBUILD_AFLAGS += $(compat_vdso) << 50 178 51 KBUILD_RUSTFLAGS += --target=aarch64-unknown-n << 52 179 53 KBUILD_CFLAGS += $(call cc-option,-mabi=lp64 !! 180 # 54 KBUILD_AFLAGS += $(call cc-option,-mabi=lp64 !! 181 # We unconditionally build the math emulator >> 182 # >> 183 CORE_FILES += arch/mips/math-emu/fpu_emulator.o >> 184 SUBDIRS += arch/mips/math-emu 55 185 56 # Avoid generating .eh_frame* sections. !! 186 # 57 ifneq ($(CONFIG_UNWIND_TABLES),y) !! 187 # ramdisk/initrd support 58 KBUILD_CFLAGS += -fno-asynchronous-unwind-ta !! 188 # You need a compressed ramdisk image, named ramdisk.gz in 59 KBUILD_AFLAGS += -fno-asynchronous-unwind-ta !! 189 # arch/mips/ramdisk 60 KBUILD_RUSTFLAGS += -Cforce-unwind-tables=n !! 190 # 61 else !! 191 ifdef CONFIG_EMBEDDED_RAMDISK 62 KBUILD_CFLAGS += -fasynchronous-unwind-table !! 192 CORE_FILES += arch/mips/ramdisk/ramdisk.o 63 KBUILD_AFLAGS += -fasynchronous-unwind-table !! 193 SUBDIRS += arch/mips/ramdisk 64 KBUILD_RUSTFLAGS += -Cforce-unwind-tables=y -Z << 65 endif << 66 << 67 ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y) << 68 prepare: stack_protector_prepare << 69 stack_protector_prepare: prepare0 << 70 $(eval KBUILD_CFLAGS += -mstack-protec << 71 -mstack-protec << 72 -mstack-protec << 73 awk '{if ($$2 == "TSK_ << 74 includ << 75 endif << 76 << 77 ifeq ($(CONFIG_ARM64_BTI_KERNEL),y) << 78 KBUILD_CFLAGS += -mbranch-protection=pac-ret << 79 KBUILD_RUSTFLAGS += -Zbranch-protection=bti, << 80 else ifeq ($(CONFIG_ARM64_PTR_AUTH_KERNEL),y) << 81 KBUILD_RUSTFLAGS += -Zbranch-protection=pac- << 82 ifeq ($(CONFIG_CC_HAS_BRANCH_PROT_PAC_RET),y << 83 KBUILD_CFLAGS += -mbranch-protection=pac-r << 84 else << 85 KBUILD_CFLAGS += -msign-return-address=non << 86 endif << 87 else << 88 KBUILD_CFLAGS += $(call cc-option,-mbranch-p << 89 endif 194 endif 90 195 91 # Tell the assembler to support instructions f !! 196 92 # architecture. << 93 # 197 # 94 # For non-integrated assemblers we'll pass thi !! 198 # Board-dependent options and extra files 95 # integrated assemblers we'll define ARM64_ASM !! 199 # 96 # inline usage. !! 200 97 # !! 201 # 98 # We cannot pass the same arch flag to the com !! 202 # Acer PICA 61, Mips Magnum 4000 and Olivetti M700. 99 # freely generate instructions which are not s !! 203 # 100 # versions, which would prevent a single kerne !! 204 ifdef CONFIG_MIPS_JAZZ 101 # hardware. !! 205 CORE_FILES += arch/mips/jazz/jazz.o 102 ifeq ($(CONFIG_AS_HAS_ARMV8_5), y) !! 206 SUBDIRS += arch/mips/jazz arch/mips/arc 103 asm-arch := armv8.5-a !! 207 LIBS += arch/mips/arc/arclib.a 104 else ifeq ($(CONFIG_AS_HAS_ARMV8_4), y) !! 208 LOADADDR := 0x80080000 105 asm-arch := armv8.4-a << 106 else ifeq ($(CONFIG_AS_HAS_ARMV8_3), y) << 107 asm-arch := armv8.3-a << 108 else ifeq ($(CONFIG_AS_HAS_ARMV8_2), y) << 109 asm-arch := armv8.2-a << 110 endif << 111 << 112 ifdef asm-arch << 113 KBUILD_CFLAGS += -Wa,-march=$(asm-arch) \ << 114 -DARM64_ASM_ARCH='"$(asm-ar << 115 endif << 116 << 117 ifeq ($(CONFIG_SHADOW_CALL_STACK), y) << 118 KBUILD_CFLAGS += -ffixed-x18 << 119 KBUILD_RUSTFLAGS += -Zfixed-x18 << 120 endif << 121 << 122 ifeq ($(CONFIG_CPU_BIG_ENDIAN), y) << 123 KBUILD_CPPFLAGS += -mbig-endian << 124 CHECKFLAGS += -D__AARCH64EB__ << 125 # Prefer the baremetal ELF build target, but n << 126 # it so fall back to the standard linux versio << 127 KBUILD_LDFLAGS += -EB $(call ld-option, -maar << 128 UTS_MACHINE := aarch64_be << 129 else << 130 KBUILD_CPPFLAGS += -mlittle-endian << 131 CHECKFLAGS += -D__AARCH64EL__ << 132 # Same as above, prefer ELF but fall back to l << 133 KBUILD_LDFLAGS += -EL $(call ld-option, -maar << 134 UTS_MACHINE := aarch64 << 135 endif 209 endif 136 210 137 ifeq ($(CONFIG_LD_IS_LLD), y) !! 211 # 138 KBUILD_LDFLAGS += -z norelro !! 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 139 endif 219 endif 140 220 141 CHECKFLAGS += -D__aarch64__ !! 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 142 230 143 ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_CALL_OPS),y !! 231 # 144 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNC !! 232 # Au1500 (Alchemy Semi PB1500) eval board 145 CC_FLAGS_FTRACE := -fpatchable-function-entr !! 233 # 146 else ifeq ($(CONFIG_DYNAMIC_FTRACE_WITH_ARGS), !! 234 ifdef CONFIG_MIPS_PB1500 147 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNC !! 235 LIBS += arch/mips/au1000/pb1500/pb1500.o \ 148 CC_FLAGS_FTRACE := -fpatchable-function-entr !! 236 arch/mips/au1000/common/au1000.o >> 237 SUBDIRS += arch/mips/au1000/pb1500 arch/mips/au1000/common >> 238 LOADADDR := 0x80100000 149 endif 239 endif 150 240 151 ifeq ($(CONFIG_KASAN_SW_TAGS), y) !! 241 # 152 KASAN_SHADOW_SCALE_SHIFT := 4 !! 242 # Au1x00 (AMD/Alchemy) eval boards 153 else ifeq ($(CONFIG_KASAN_GENERIC), y) !! 243 # 154 KASAN_SHADOW_SCALE_SHIFT := 3 !! 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 155 endif 249 endif 156 250 157 KBUILD_CFLAGS += -DKASAN_SHADOW_SCALE_SHIFT=$( !! 251 ifdef CONFIG_MIPS_DB1500 158 KBUILD_CPPFLAGS += -DKASAN_SHADOW_SCALE_SHIFT= !! 252 LIBS += arch/mips/au1000/db1x00/db1x00.o \ 159 KBUILD_AFLAGS += -DKASAN_SHADOW_SCALE_SHIFT=$( !! 253 arch/mips/au1000/common/au1000.o >> 254 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 255 LOADADDR += 0x80100000 >> 256 endif 160 257 161 libs-y := arch/arm64/lib/ $(libs-y) !! 258 ifdef CONFIG_MIPS_DB1550 162 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ !! 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 163 264 164 # Default target when executing plain make !! 265 ifdef CONFIG_MIPS_DB1100 165 boot := arch/arm64/boot !! 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 166 271 167 BOOT_TARGETS := Image vmlinuz.efi image.fit !! 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 168 278 169 PHONY += $(BOOT_TARGETS) !! 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 170 285 171 ifeq ($(CONFIG_EFI_ZBOOT),) !! 286 ifdef CONFIG_MIPS_MIRAGE 172 KBUILD_IMAGE := $(boot)/Image.gz !! 287 LIBS += arch/mips/au1000/db1x00/db1x00.o \ 173 else !! 288 arch/mips/au1000/common/au1000.o 174 KBUILD_IMAGE := $(boot)/vmlinuz.efi !! 289 SUBDIRS += arch/mips/au1000/db1x00 arch/mips/au1000/common >> 290 LOADADDR += 0x80100000 175 endif 291 endif 176 292 177 all: $(notdir $(KBUILD_IMAGE)) !! 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 178 299 179 image.fit: dtbs !! 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 >> 305 endif 180 306 181 vmlinuz.efi image.fit: Image !! 307 ifdef CONFIG_MIPS_PB1550 182 $(BOOT_TARGETS): vmlinux !! 308 LIBS += arch/mips/au1000/pb1550/pb1550.o \ 183 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$ !! 309 arch/mips/au1000/common/au1000.o >> 310 SUBDIRS += arch/mips/au1000/pb1550 arch/mips/au1000/common >> 311 LOADADDR += 0x80100000 >> 312 endif 184 313 185 Image.%: Image << 186 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$ << 187 314 188 ifeq ($(CONFIG_COMPRESSED_INSTALL),y) !! 315 # 189 DEFAULT_KBUILD_IMAGE = $(KBUILD_IMAGE) !! 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 >> 376 >> 377 # >> 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 >> 384 endif >> 385 >> 386 # >> 387 # Globespan IVR eval board with QED 5231 CPU >> 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 >> 395 >> 396 # >> 397 # HP LaserJet >> 398 # >> 399 ifdef CONFIG_HP_LASERJET >> 400 SUBDIRS += arch/mips/hp-lj >> 401 LIBS += arch/mips/hp-lj/hp-lj.o >> 402 LOADADDR := 0x80030000 >> 403 endif >> 404 >> 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 >> 414 >> 415 # >> 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 >> 423 endif >> 424 >> 425 # >> 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 >> 434 >> 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 >> 444 >> 445 # >> 446 # Momentum Ocelot board >> 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 >> 456 >> 457 # >> 458 # Momentum Ocelot-G board >> 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 >> 467 >> 468 # >> 469 # Momentum Ocelot-C and -CS boards >> 470 # >> 471 ifdef CONFIG_MOMENCO_OCELOT_C >> 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 190 else 496 else 191 DEFAULT_KBUILD_IMAGE = $(boot)/Image !! 497 LOADADDR := 0x80100000 >> 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 >> 587 endif >> 588 >> 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 >> 599 >> 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 192 endif 609 endif 193 610 194 install: KBUILD_IMAGE := $(DEFAULT_KBUILD_IMAG !! 611 # 195 install zinstall: !! 612 # TANBAC TB0229 (VR4131DIMM) 196 $(call cmd,install) !! 613 # 197 !! 614 ifdef CONFIG_TANBAC_TB0229 198 archprepare: !! 615 SUBDIRS += arch/mips/vr41xx/common \ 199 $(Q)$(MAKE) $(build)=arch/arm64/tools !! 616 arch/mips/vr41xx/tanbac-tb0229 200 ifeq ($(CONFIG_ARM64_ERRATUM_843419),y) !! 617 CORE_FILES += arch/mips/vr41xx/common/vr41xx.o \ 201 ifneq ($(CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843 !! 618 arch/mips/vr41xx/tanbac-tb0229/tb0229.o 202 @echo "warning: ld does not support -- !! 619 LOADADDR := 0x80000000 203 endif !! 620 endif 204 endif !! 621 205 ifeq ($(CONFIG_ARM64_USE_LSE_ATOMICS),y) !! 622 # 206 ifneq ($(CONFIG_ARM64_LSE_ATOMICS),y) !! 623 # Philips Nino 207 @echo "warning: LSE atomics not suppor !! 624 # 208 endif !! 625 ifdef CONFIG_NINO 209 endif !! 626 CORE_FILES += arch/mips/philips/nino/nino.o 210 !! 627 SUBDIRS += arch/mips/philips/nino 211 ifeq ($(KBUILD_EXTMOD),) !! 628 LOADADDR := 0x80000000 212 # We need to generate vdso-offsets.h before co << 213 # In order to do that, we should use the archp << 214 # asm-offsets.h is included in some files used << 215 # asm-offsets.h is built in prepare0, for whic << 216 # Therefore we need to generate the header aft << 217 # this hack. << 218 prepare: vdso_prepare << 219 vdso_prepare: prepare0 << 220 $(Q)$(MAKE) $(build)=arch/arm64/kernel << 221 include/generated/vdso-offsets.h arch/ << 222 ifdef CONFIG_COMPAT_VDSO << 223 $(Q)$(MAKE) $(build)=arch/arm64/kernel << 224 arch/arm64/kernel/vdso32/vdso.so << 225 endif 629 endif >> 630 >> 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 226 endif 656 endif 227 657 228 vdso-install-y += arc !! 658 # 229 vdso-install-$(CONFIG_COMPAT_VDSO) += arc !! 659 # Sibyte boards: 230 !! 660 # 231 include $(srctree)/scripts/Makefile.defconf !! 661 # BCM91250A (SWARM), 232 !! 662 # BCM91250E (Sentosa), 233 PHONY += virtconfig !! 663 # BCM91120C (CRhine), 234 virtconfig: !! 664 # BCM91120x (Carmel), 235 $(call merge_into_defconfig_override,d !! 665 # BCM91125C (CRhone), 236 !! 666 # BCM91125E (Rhone). 237 define archhelp !! 667 # 238 echo '* Image.gz - Compressed kernel i !! 668 ifdef CONFIG_SIBYTE_BOARD 239 echo ' Image - Uncompressed kernel !! 669 LIBS += arch/mips/sibyte/swarm/sbswarm.a 240 echo ' image.fit - Flat Image Tree (ar !! 670 SUBDIRS += arch/mips/sibyte/swarm 241 echo ' install - Install kernel (com !! 671 endif 242 echo ' zinstall - Install compressed !! 672 243 echo ' Install using (your !! 673 # 244 echo ' (distribution) /sbi !! 674 # Sibyte CFE firmware 245 echo ' install to $$(INSTA !! 675 # 246 endef !! 676 ifdef CONFIG_SIBYTE_CFE >> 677 LIBS += arch/mips/sibyte/cfe/cfe.a >> 678 SUBDIRS += arch/mips/sibyte/cfe >> 679 endif >> 680 >> 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 >> 755 >> 756 vmlinux.ecoff: vmlinux >> 757 @$(MAKEBOOT) $@ >> 758 >> 759 vmlinux.srec: vmlinux >> 760 @$(MAKEBOOT) $@ >> 761 >> 762 archclean: >> 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 >> 768 >> 769 archmrproper: >> 770 @$(MAKEBOOT) mrproper >> 771 $(RM) $(TOPDIR)/include/asm-$(ARCH)/offset.h >> 772 $(MAKE) -C arch/$(ARCH)/tools mrproper >> 773 >> 774 archdep: >> 775 if [ ! -f $(TOPDIR)/include/asm-$(ARCH)/offset.h ]; then \ >> 776 touch $(TOPDIR)/include/asm-$(ARCH)/offset.h; \ >> 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.