Makefile 19.2 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle
# DECStation modifications by Paul M. Antoine, 1996
# Copyright (C) 2002, 2003, 2004  Maciej W. Rozycki
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
# for "archclean" cleaning up for this architecture.
#

M
Matt Redfearn 已提交
15
archscripts: scripts_basic
16
	$(Q)$(MAKE) $(build)=arch/mips/tools elf-entry
M
Matt Redfearn 已提交
17 18
	$(Q)$(MAKE) $(build)=arch/mips/boot/tools relocs

19
KBUILD_DEFCONFIG := 32r2el_defconfig
A
Adrian Bunk 已提交
20

L
Linus Torvalds 已提交
21 22 23 24
#
# Select the object file format to substitute into the linker script.
#
ifdef CONFIG_CPU_LITTLE_ENDIAN
25 26
32bit-tool-archpref	= mipsel
64bit-tool-archpref	= mips64el
L
Linus Torvalds 已提交
27 28 29 30 31
32bit-bfd		= elf32-tradlittlemips
64bit-bfd		= elf64-tradlittlemips
32bit-emul		= elf32ltsmip
64bit-emul		= elf64ltsmip
else
32 33
32bit-tool-archpref	= mips
64bit-tool-archpref	= mips64
L
Linus Torvalds 已提交
34 35 36 37 38 39
32bit-bfd		= elf32-tradbigmips
64bit-bfd		= elf64-tradbigmips
32bit-emul		= elf32btsmip
64bit-emul		= elf64btsmip
endif

40
ifdef CONFIG_32BIT
41
tool-archpref		= $(32bit-tool-archpref)
L
Linus Torvalds 已提交
42 43
UTS_MACHINE		:= mips
endif
44
ifdef CONFIG_64BIT
45
tool-archpref		= $(64bit-tool-archpref)
L
Linus Torvalds 已提交
46 47 48
UTS_MACHINE		:= mips64
endif

49 50
ifneq ($(SUBARCH),$(ARCH))
  ifeq ($(CROSS_COMPILE),)
51
    CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux-  $(tool-archpref)-linux-gnu-  $(tool-archpref)-unknown-linux-gnu-)
52
  endif
L
Linus Torvalds 已提交
53 54
endif

55 56 57 58 59 60 61
ifdef CONFIG_FUNCTION_GRAPH_TRACER
  ifndef KBUILD_MCOUNT_RA_ADDRESS
    ifeq ($(call cc-option-yn,-mmcount-ra-address), y)
      cflags-y += -mmcount-ra-address -DKBUILD_MCOUNT_RA_ADDRESS
    endif
  endif
endif
62
cflags-y += $(call cc-option, -mno-check-zero-division)
63

R
Ralf Baechle 已提交
64
ifdef CONFIG_32BIT
L
Linus Torvalds 已提交
65 66 67
ld-emul			= $(32bit-emul)
vmlinux-32		= vmlinux
vmlinux-64		= vmlinux.64
R
Ralf Baechle 已提交
68 69

cflags-y		+= -mabi=32
R
Ralf Baechle 已提交
70
endif
L
Linus Torvalds 已提交
71

R
Ralf Baechle 已提交
72 73 74 75 76
ifdef CONFIG_64BIT
ld-emul			= $(64bit-emul)
vmlinux-32		= vmlinux.32
vmlinux-64		= vmlinux

R
Ralf Baechle 已提交
77
cflags-y		+= -mabi=64
L
Linus Torvalds 已提交
78 79
endif

80 81
all-$(CONFIG_BOOT_ELF32)	:= $(vmlinux-32)
all-$(CONFIG_BOOT_ELF64)	:= $(vmlinux-64)
82
all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz
R
Ralf Baechle 已提交
83

L
Linus Torvalds 已提交
84 85 86 87 88 89 90 91 92 93 94
#
# GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
# code since it only slows down the whole thing.  At some point we might make
# use of global pointer optimizations but their use of $28 conflicts with
# the current pointer optimization.
#
# The DECStation requires an ECOFF kernel for remote booting, other MIPS
# machines may also.  Since BFD is incredibly buggy with respect to
# crossformat linking we rely on the elf2ecoff tool for format conversion.
#
cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
R
Ralf Baechle 已提交
95
cflags-y			+= -msoft-float
T
Thiemo Seufer 已提交
96
LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
97 98
KBUILD_AFLAGS_MODULE		+= -mlong-calls
KBUILD_CFLAGS_MODULE		+= -mlong-calls
L
Linus Torvalds 已提交
99

100 101 102 103
ifeq ($(CONFIG_RELOCATABLE),y)
LDFLAGS_vmlinux			+= --emit-relocs
endif

104 105 106 107 108 109 110 111 112
#
# pass -msoft-float to GAS if it supports it.  However on newer binutils
# (specifically newer than 2.24.51.20140728) we then also need to explicitly
# set ".set hardfloat" in all files which manipulate floating point registers.
#
ifneq ($(call as-option,-Wa$(comma)-msoft-float,),)
	cflags-y		+= -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float
endif

113 114
cflags-y += -ffreestanding

115 116 117 118 119 120
#
# We explicitly add the endianness specifier if needed, this allows
# to compile kernels with a toolchain for the other endianness. We
# carefully avoid to add it redundantly because gcc 3.3/3.4 complains
# when fed the toolchain default!
#
L
Lucas De Marchi 已提交
121
# Certain gcc versions up to gcc 4.1.1 (probably 4.2-subversion as of
122
# 2006-10-10 don't properly change the predefined symbols if -EB / -EL
123 124 125
# are used, so we kludge that here.  A bug has been filed at
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413.
#
126 127 128 129 130
# clang doesn't suffer from these issues and our checks against -dumpmachine
# don't work so well when cross compiling, since without providing --target
# clang's output will be based upon the build machine. So for clang we simply
# unconditionally specify -EB or -EL as appropriate.
#
131
ifdef CONFIG_CC_IS_CLANG
132 133 134
cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= -EB
cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -EL
else
135 136 137 138 139 140
undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__
undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__
predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__
predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__
cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be))
cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le))
141
endif
142

143 144
cflags-$(CONFIG_SB1XXX_CORELIS)	+= $(call cc-option,-mno-sched-prolog) \
				   -fno-omit-frame-pointer
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159

# Some distribution-specific toolchains might pass the -fstack-check
# option during the build, which adds a simple stack-probe at the beginning
# of every function.  This stack probe is to ensure that there is enough
# stack space, else a SEGV is generated.  This is not desirable for MIPS
# as kernel stacks are small, placed in unmapped virtual memory, and do not
# grow when overflowed.  Especially on SGI IP27 platforms, this check will
# lead to a NULL pointer dereference in _raw_spin_lock_irq.
#
# In disassembly, this stack probe appears at the top of a function as:
#    sd		zero,<offset>(sp)
# Where <offset> is a negative value.
#
cflags-y += -fno-stack-check

L
Linus Torvalds 已提交
160 161 162
#
# CPU-dependent compiler/assembler options for optimization.
#
R
Ralf Baechle 已提交
163 164 165 166 167 168
cflags-$(CONFIG_CPU_R3000)	+= -march=r3000
cflags-$(CONFIG_CPU_TX39XX)	+= -march=r3900
cflags-$(CONFIG_CPU_R4300)	+= -march=r4300 -Wa,--trap
cflags-$(CONFIG_CPU_VR41XX)	+= -march=r4100 -Wa,--trap
cflags-$(CONFIG_CPU_R4X00)	+= -march=r4600 -Wa,--trap
cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
169 170
cflags-$(CONFIG_CPU_MIPS32_R1)	+= -march=mips32 -Wa,--trap
cflags-$(CONFIG_CPU_MIPS32_R2)	+= -march=mips32r2 -Wa,--trap
171
cflags-$(CONFIG_CPU_MIPS32_R6)	+= -march=mips32r6 -Wa,--trap -modd-spreg
172 173
cflags-$(CONFIG_CPU_MIPS64_R1)	+= -march=mips64 -Wa,--trap
cflags-$(CONFIG_CPU_MIPS64_R2)	+= -march=mips64r2 -Wa,--trap
174
cflags-$(CONFIG_CPU_MIPS64_R6)	+= -march=mips64r6 -Wa,--trap
R
Ralf Baechle 已提交
175
cflags-$(CONFIG_CPU_R5000)	+= -march=r5000 -Wa,--trap
176
cflags-$(CONFIG_CPU_R5432)	+= $(call cc-option,-march=r5400,-march=r5000) \
L
Linus Torvalds 已提交
177
			-Wa,--trap
178 179
cflags-$(CONFIG_CPU_R5500)	+= $(call cc-option,-march=r5500,-march=r5000) \
			-Wa,--trap
180
cflags-$(CONFIG_CPU_NEVADA)	+= $(call cc-option,-march=rm5200,-march=r5000) \
L
Linus Torvalds 已提交
181
			-Wa,--trap
R
Ralf Baechle 已提交
182
cflags-$(CONFIG_CPU_RM7000)	+= $(call cc-option,-march=rm7000,-march=r5000) \
L
Linus Torvalds 已提交
183
			-Wa,--trap
184
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-march=sb1,-march=r5000) \
L
Linus Torvalds 已提交
185
			-Wa,--trap
186 187
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mdmx)
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mips3d)
R
Ralf Baechle 已提交
188 189
cflags-$(CONFIG_CPU_R8000)	+= -march=r8000 -Wa,--trap
cflags-$(CONFIG_CPU_R10000)	+= $(call cc-option,-march=r10000,-march=r8000) \
L
Linus Torvalds 已提交
190
			-Wa,--trap
191 192 193 194
cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap
ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON))))
cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon
endif
195
cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1
196
cflags-$(CONFIG_CPU_BMIPS)	+= -march=mips32 -Wa,-mips32 -Wa,--trap
L
Linus Torvalds 已提交
197

198 199 200 201
cflags-$(CONFIG_CPU_R4000_WORKAROUNDS)	+= $(call cc-option,-mfix-r4000,)
cflags-$(CONFIG_CPU_R4400_WORKAROUNDS)	+= $(call cc-option,-mfix-r4400,)
cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS)	+= $(call cc-option,-mno-daddi,)

202 203 204 205 206 207 208 209 210
# For smartmips configurations, there are hundreds of warnings due to ISA overrides
# in assembly and header files. smartmips is only supported for MIPS32r1 onwards
# and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or
# similar directives in the kernel will spam the build logs with the following warnings:
# Warning: the `smartmips' extension requires MIPS32 revision 1 or greater
# or
# Warning: the 64-bit MIPS architecture does not support the `smartmips' extension
# Pass -Wa,--no-warn to disable all assembler warnings until the kernel code has
# been fixed properly.
211 212 213 214 215 216 217 218 219
mips-cflags				:= $(cflags-y)
ifeq ($(CONFIG_CPU_HAS_SMARTMIPS),y)
smartmips-ase				:= $(call cc-option-yn,$(mips-cflags) -msmartmips)
cflags-$(smartmips-ase)			+= -msmartmips -Wa,--no-warn
endif
ifeq ($(CONFIG_CPU_MICROMIPS),y)
micromips-ase				:= $(call cc-option-yn,$(mips-cflags) -mmicromips)
cflags-$(micromips-ase)			+= -mmicromips
endif
220
ifeq ($(CONFIG_CPU_HAS_MSA),y)
221
toolchain-msa				:= $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa)
222 223
cflags-$(toolchain-msa)			+= -DTOOLCHAIN_SUPPORTS_MSA
endif
224 225
toolchain-virt				:= $(call cc-option-yn,$(mips-cflags) -mvirt)
cflags-$(toolchain-virt)		+= -DTOOLCHAIN_SUPPORTS_VIRT
226 227 228 229 230 231
# For -mmicromips, use -Wa,-fatal-warnings to catch unsupported -mxpa which
# only warns
xpa-cflags-y				:= $(mips-cflags)
xpa-cflags-$(micromips-ase)		+= -mmicromips -Wa$(comma)-fatal-warnings
toolchain-xpa				:= $(call cc-option-yn,$(xpa-cflags-y) -mxpa)
cflags-$(toolchain-xpa)			+= -DTOOLCHAIN_SUPPORTS_XPA
232 233
toolchain-crc				:= $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mcrc)
cflags-$(toolchain-crc)			+= -DTOOLCHAIN_SUPPORTS_CRC
P
Paul Burton 已提交
234 235
toolchain-dsp				:= $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mdsp)
cflags-$(toolchain-dsp)			+= -DTOOLCHAIN_SUPPORTS_DSP
236

L
Linus Torvalds 已提交
237 238 239
#
# Firmware support
#
240 241 242
libs-$(CONFIG_FW_ARC)		+= arch/mips/fw/arc/
libs-$(CONFIG_FW_CFE)		+= arch/mips/fw/cfe/
libs-$(CONFIG_FW_SNIPROM)	+= arch/mips/fw/sni/
243
libs-y				+= arch/mips/fw/lib/
L
Linus Torvalds 已提交
244

245 246 247
#
# Kernel compression
#
248
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
249 250 251 252 253
COMPRESSION_FNAME		= vmlinuz
else
COMPRESSION_FNAME		= vmlinux
endif

L
Linus Torvalds 已提交
254 255 256
#
# Board-dependent options and extra files
#
257
include arch/mips/Kbuild.platforms
258

259
ifdef CONFIG_PHYSICAL_START
R
Ralf Baechle 已提交
260
load-y					= $(CONFIG_PHYSICAL_START)
261
endif
262

263
entry-y				= $(shell $(objtree)/arch/mips/tools/elf-entry vmlinux)
264
cflags-y			+= -I$(srctree)/arch/mips/include/asm/mach-generic
L
Linus Torvalds 已提交
265 266
drivers-$(CONFIG_PCI)		+= arch/mips/pci/

267 268 269 270
#
# Automatically detect the build format. By default we choose
# the elf format according to the load address.
# We can always force a build with a 64-bits symbol format by
271
# passing 'KBUILD_SYM32=no' option to the make's command line.
272 273
#
ifdef CONFIG_64BIT
274
  ifndef KBUILD_SYM32
275
    ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
276
      KBUILD_SYM32 = y
277 278 279
    endif
  endif

280 281 282 283 284
  ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy)
    cflags-y += -msym32 -DKBUILD_64BIT_SYM32
  else
    ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y)
      $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32)
285
    endif
286 287 288
  endif
endif

289
KBUILD_AFLAGS	+= $(cflags-y)
290
KBUILD_CFLAGS	+= $(cflags-y)
291 292
KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y)
KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)
L
Linus Torvalds 已提交
293

294
bootvars-y	= VMLINUX_LOAD_ADDRESS=$(load-y) \
295
		  VMLINUX_ENTRY_ADDRESS=$(entry-y) \
296 297
		  PLATFORM="$(platform-y)" \
		  ITS_INPUTS="$(its-y)"
298 299 300 301 302 303
ifdef CONFIG_32BIT
bootvars-y	+= ADDR_BITS=32
endif
ifdef CONFIG_64BIT
bootvars-y	+= ADDR_BITS=64
endif
304

305 306 307 308
# This is required to get dwarf unwinding tables into .debug_frame
# instead of .eh_frame so we don't discard them.
KBUILD_CFLAGS += -fno-asynchronous-unwind-tables

309
KBUILD_LDFLAGS		+= -m $(ld-emul)
L
Linus Torvalds 已提交
310

R
Ralf Baechle 已提交
311
ifdef CONFIG_MIPS
J
Jean Delvare 已提交
312
CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \
313
	egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
314
	sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g')
R
Ralf Baechle 已提交
315 316
endif

L
Linus Torvalds 已提交
317 318
OBJCOPYFLAGS		+= --remove-section=.reginfo

T
Thomas Gleixner 已提交
319
head-y := arch/mips/kernel/head.o
L
Linus Torvalds 已提交
320 321

libs-y			+= arch/mips/lib/
322
libs-y			+= arch/mips/math-emu/
L
Linus Torvalds 已提交
323

S
Sam Ravnborg 已提交
324 325
# See arch/mips/Kbuild for content of core part of the kernel
core-y += arch/mips/
L
Linus Torvalds 已提交
326

327
drivers-$(CONFIG_MIPS_CRC_SUPPORT) += arch/mips/crypto/
L
Linus Torvalds 已提交
328 329
drivers-$(CONFIG_OPROFILE)	+= arch/mips/oprofile/

W
Wu Zhangjin 已提交
330 331 332
# suspend and hibernation support
drivers-$(CONFIG_PM)	+= arch/mips/power/

333 334 335 336
# boot image targets (arch/mips/boot/)
boot-y			:= vmlinux.bin
boot-y			+= vmlinux.ecoff
boot-y			+= vmlinux.srec
J
James Hogan 已提交
337 338
ifeq ($(shell expr $(load-y) \< 0xffffffff80000000 2> /dev/null), 0)
boot-y			+= uImage
339 340
boot-y			+= uImage.bin
boot-y			+= uImage.bz2
J
James Hogan 已提交
341
boot-y			+= uImage.gz
342 343
boot-y			+= uImage.lzma
boot-y			+= uImage.lzo
J
James Hogan 已提交
344
endif
345 346 347 348 349
boot-y			+= vmlinux.itb
boot-y			+= vmlinux.gz.itb
boot-y			+= vmlinux.bz2.itb
boot-y			+= vmlinux.lzma.itb
boot-y			+= vmlinux.lzo.itb
350 351 352 353 354 355

# compressed boot image targets (arch/mips/boot/compressed/)
bootz-y			:= vmlinuz
bootz-y			+= vmlinuz.bin
bootz-y			+= vmlinuz.ecoff
bootz-y			+= vmlinuz.srec
356 357 358
ifeq ($(shell expr $(zload-y) \< 0xffffffff80000000 2> /dev/null), 0)
bootz-y			+= uzImage.bin
endif
359

360 361
ifdef CONFIG_LASAT
rom.bin rom.sw: vmlinux
362 363
	$(Q)$(MAKE) $(build)=arch/mips/lasat/image \
		$(bootvars-y) $@
364 365
endif

L
Linus Torvalds 已提交
366 367 368 369 370
#
# Some machines like the Indy need 32-bit ELF binaries for booting purposes.
# Other need ECOFF, so we build a 32-bit ELF binary for them which we then
# convert to ECOFF using elf2ecoff.
#
371 372
quiet_cmd_32 = OBJCOPY $@
	cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
L
Linus Torvalds 已提交
373
vmlinux.32: vmlinux
374
	$(call cmd,32)
L
Linus Torvalds 已提交
375 376 377 378 379

#
# The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
# ELF files from 32-bit files by conversion.
#
380 381
quiet_cmd_64 = OBJCOPY $@
	cmd_64 = $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
L
Linus Torvalds 已提交
382
vmlinux.64: vmlinux
383
	$(call cmd,64)
L
Linus Torvalds 已提交
384

385
all:	$(all-y)
L
Linus Torvalds 已提交
386

387
# boot
388
$(boot-y): $(vmlinux-32) FORCE
389 390
	$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) \
		$(bootvars-y) arch/mips/boot/$@
L
Linus Torvalds 已提交
391

392
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
393
# boot/compressed
394
$(bootz-y): $(vmlinux-32) FORCE
395
	$(Q)$(MAKE) $(build)=arch/mips/boot/compressed \
396
		$(bootvars-y) 32bit-bfd=$(32bit-bfd) $@
397 398 399 400 401
else
vmlinuz: FORCE
	@echo '   CONFIG_SYS_SUPPORTS_ZBOOT is not enabled'
	/bin/false
endif
402 403


S
Sam Ravnborg 已提交
404
CLEAN_FILES += vmlinux.32 vmlinux.64
L
Linus Torvalds 已提交
405

406
# device-trees
407
core-y += arch/mips/boot/dts/
408

409 410
archprepare:
ifdef CONFIG_MIPS32_N32
A
Arnd Bergmann 已提交
411
	@$(kecho) '  Checking missing-syscalls for N32'
412
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=n32"
413 414
endif
ifdef CONFIG_MIPS32_O32
A
Arnd Bergmann 已提交
415
	@$(kecho) '  Checking missing-syscalls for O32'
416
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=32"
417 418
endif

419 420
install:
	$(Q)install -D -m 755 vmlinux $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE)
421
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
422
	$(Q)install -D -m 755 vmlinuz $(INSTALL_PATH)/vmlinuz-$(KERNELRELEASE)
423
endif
424 425 426
	$(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
	$(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE)

L
Linus Torvalds 已提交
427
archclean:
S
Sam Ravnborg 已提交
428 429
	$(Q)$(MAKE) $(clean)=arch/mips/boot
	$(Q)$(MAKE) $(clean)=arch/mips/boot/compressed
M
Matt Redfearn 已提交
430
	$(Q)$(MAKE) $(clean)=arch/mips/boot/tools
S
Sam Ravnborg 已提交
431
	$(Q)$(MAKE) $(clean)=arch/mips/lasat
L
Linus Torvalds 已提交
432

R
Ralf Baechle 已提交
433
define archhelp
434
	echo '  install              - install kernel into $(INSTALL_PATH)'
R
Ralf Baechle 已提交
435 436 437
	echo '  vmlinux.ecoff        - ECOFF boot image'
	echo '  vmlinux.bin          - Raw binary boot image'
	echo '  vmlinux.srec         - SREC boot image'
438
	echo '  vmlinux.32           - 64-bit boot image wrapped in 32bits (IP22/IP32)'
439 440 441 442
	echo '  vmlinuz              - Compressed boot(zboot) image'
	echo '  vmlinuz.ecoff        - ECOFF zboot image'
	echo '  vmlinuz.bin          - Raw binary zboot image'
	echo '  vmlinuz.srec         - SREC zboot image'
J
James Hogan 已提交
443
	echo '  uImage               - U-Boot image'
444 445
	echo '  uImage.bin           - U-Boot image (uncompressed)'
	echo '  uImage.bz2           - U-Boot image (bz2)'
J
James Hogan 已提交
446
	echo '  uImage.gz            - U-Boot image (gzip)'
447 448
	echo '  uImage.lzma          - U-Boot image (lzma)'
	echo '  uImage.lzo           - U-Boot image (lzo)'
449
	echo '  uzImage.bin          - U-Boot image (self-extracting)'
R
Ralf Baechle 已提交
450
	echo
L
Lucas De Marchi 已提交
451
	echo '  These will be default as appropriate for a configured platform.'
452 453 454 455 456 457
	echo
	echo '  If you are targeting a system supported by generic kernels you may'
	echo '  configure the kernel for a given architecture target like so:'
	echo
	echo '  {micro32,32,64}{r1,r2,r6}{el,}_defconfig <BOARDS="list of boards">'
	echo
458 459 460 461 462 463 464 465 466 467 468 469 470 471 472
	echo '  Where BOARDS is some subset of the following:'
	for board in $(sort $(BOARDS)); do echo "    $${board}"; done
	echo
	echo '  Specifically the following generic default configurations are'
	echo '  supported:'
	echo
	$(foreach cfg,$(generic_defconfigs),
	  printf "  %-24s - Build generic kernel for $(call describe_generic_defconfig,$(cfg))\n" $(cfg);)
	echo
	echo '  The following legacy default configurations have been converted to'
	echo '  generic and can still be used:'
	echo
	$(foreach cfg,$(sort $(legacy_defconfigs)),
	  printf "  %-24s - Build $($(cfg)-y)\n" $(cfg);)
	echo
473
	echo '  Otherwise, the following default configurations are available:'
R
Ralf Baechle 已提交
474
endef
475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506

generic_config_dir = $(srctree)/arch/$(ARCH)/configs/generic
generic_defconfigs :=

#
# If the user generates a generic kernel configuration without specifying a
# list of boards to include the config fragments for, default to including all
# available board config fragments.
#
ifeq ($(BOARDS),)
BOARDS = $(patsubst board-%.config,%,$(notdir $(wildcard $(generic_config_dir)/board-*.config)))
endif

#
# Generic kernel configurations which merge generic_defconfig with the
# appropriate config fragments from arch/mips/configs/generic/, resulting in
# the ability to easily configure the kernel for a given architecture,
# endianness & set of boards without duplicating the needed configuration in
# hundreds of defconfig files.
#
define gen_generic_defconfigs
$(foreach bits,$(1),$(foreach rev,$(2),$(foreach endian,$(3),
target := $(bits)$(rev)$(filter el,$(endian))_defconfig
generic_defconfigs += $$(target)
$$(target): $(generic_config_dir)/$(bits)$(rev).config
$$(target): $(generic_config_dir)/$(endian).config
)))
endef

$(eval $(call gen_generic_defconfigs,32 64,r1 r2 r6,eb el))
$(eval $(call gen_generic_defconfigs,micro32,r2,eb el))

507 508 509 510
define describe_generic_defconfig
$(subst 32r,MIPS32 r,$(subst 64r,MIPS64 r,$(subst el, little endian,$(patsubst %_defconfig,%,$(1)))))
endef

511 512 513
.PHONY: $(generic_defconfigs)
$(generic_defconfigs):
	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
514 515 516 517 518 519 520 521
		-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ | \
		grep -Ev '^#'
	$(Q)cp $(KCONFIG_CONFIG) $(objtree)/.config.$@
	$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig \
		KCONFIG_CONFIG=$(objtree)/.config.$@ >/dev/null
	$(Q)$(CONFIG_SHELL) $(srctree)/arch/$(ARCH)/tools/generic-board-config.sh \
		$(srctree) $(objtree) $(objtree)/.config.$@ $(KCONFIG_CONFIG) \
		"$(origin BOARDS)" $(BOARDS)
522
	$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
523 524 525 526 527

#
# Prevent generic merge_config rules attempting to merge single fragments
#
$(generic_config_dir)/%.config: ;
528

529 530 531 532 533 534 535 536 537 538 539 540 541
#
# Prevent direct use of generic_defconfig, which is intended to be used as the
# basis of the various ISA-specific targets generated above.
#
.PHONY: generic_defconfig
generic_defconfig:
	$(Q)echo "generic_defconfig is not intended for direct use, but should instead be"
	$(Q)echo "used via an ISA-specific target from the following list:"
	$(Q)echo
	$(Q)for cfg in $(generic_defconfigs); do echo "  $${cfg}"; done
	$(Q)echo
	$(Q)false

542 543 544 545 546
#
# Legacy defconfig compatibility - these targets used to be real defconfigs but
# now that the boards have been converted to use the generic kernel they are
# wrappers around the generic rules above.
#
547 548 549
legacy_defconfigs		+= ocelot_defconfig
ocelot_defconfig-y		:= 32r2el_defconfig BOARDS=ocelot

J
James Hogan 已提交
550 551
legacy_defconfigs		+= sead3_defconfig
sead3_defconfig-y		:= 32r2el_defconfig BOARDS=sead-3
552

J
James Hogan 已提交
553 554
legacy_defconfigs		+= sead3micro_defconfig
sead3micro_defconfig-y		:= micro32r2el_defconfig BOARDS=sead-3
555

J
James Hogan 已提交
556 557 558 559 560 561
legacy_defconfigs		+= xilfpga_defconfig
xilfpga_defconfig-y		:= 32r2el_defconfig BOARDS=xilfpga

.PHONY: $(legacy_defconfigs)
$(legacy_defconfigs):
	$(Q)$(MAKE) -f $(srctree)/Makefile $($@-y)