Makefile 19.6 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 16 17
archscripts: scripts_basic
	$(Q)$(MAKE) $(build)=arch/mips/boot/tools relocs

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

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

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

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

54 55 56 57 58 59 60
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
61
cflags-y += $(call cc-option, -mno-check-zero-division)
62

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

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

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

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

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

L
Linus Torvalds 已提交
83 84 85 86 87 88 89 90 91 92 93
#
# 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 已提交
94
cflags-y			+= -msoft-float
T
Thiemo Seufer 已提交
95
LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
96 97
KBUILD_AFLAGS_MODULE		+= -mlong-calls
KBUILD_CFLAGS_MODULE		+= -mlong-calls
L
Linus Torvalds 已提交
98

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

103 104 105 106 107 108 109 110 111
#
# 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

112 113
cflags-y += -ffreestanding

114 115 116 117 118 119
#
# 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 已提交
120
# Certain gcc versions up to gcc 4.1.1 (probably 4.2-subversion as of
121
# 2006-10-10 don't properly change the predefined symbols if -EB / -EL
122 123 124 125 126 127 128 129 130
# are used, so we kludge that here.  A bug has been filed at
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413.
#
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))
131

132 133
cflags-$(CONFIG_SB1XXX_CORELIS)	+= $(call cc-option,-mno-sched-prolog) \
				   -fno-omit-frame-pointer
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148

# 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 已提交
149 150 151
#
# CPU-dependent compiler/assembler options for optimization.
#
R
Ralf Baechle 已提交
152 153 154 155 156 157
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
158
cflags-$(CONFIG_CPU_MIPS32_R1)	+= $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
R
Ralf Baechle 已提交
159
			-Wa,-mips32 -Wa,--trap
160
cflags-$(CONFIG_CPU_MIPS32_R2)	+= $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
R
Ralf Baechle 已提交
161
			-Wa,-mips32r2 -Wa,--trap
162
cflags-$(CONFIG_CPU_MIPS32_R6)	+= -march=mips32r6 -Wa,--trap -modd-spreg
163
cflags-$(CONFIG_CPU_MIPS64_R1)	+= $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
R
Ralf Baechle 已提交
164
			-Wa,-mips64 -Wa,--trap
165
cflags-$(CONFIG_CPU_MIPS64_R2)	+= $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
R
Ralf Baechle 已提交
166
			-Wa,-mips64r2 -Wa,--trap
167
cflags-$(CONFIG_CPU_MIPS64_R6)	+= -march=mips64r6 -Wa,--trap
R
Ralf Baechle 已提交
168
cflags-$(CONFIG_CPU_R5000)	+= -march=r5000 -Wa,--trap
169
cflags-$(CONFIG_CPU_R5432)	+= $(call cc-option,-march=r5400,-march=r5000) \
L
Linus Torvalds 已提交
170
			-Wa,--trap
171 172
cflags-$(CONFIG_CPU_R5500)	+= $(call cc-option,-march=r5500,-march=r5000) \
			-Wa,--trap
173
cflags-$(CONFIG_CPU_NEVADA)	+= $(call cc-option,-march=rm5200,-march=r5000) \
L
Linus Torvalds 已提交
174
			-Wa,--trap
R
Ralf Baechle 已提交
175
cflags-$(CONFIG_CPU_RM7000)	+= $(call cc-option,-march=rm7000,-march=r5000) \
L
Linus Torvalds 已提交
176
			-Wa,--trap
177
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-march=sb1,-march=r5000) \
L
Linus Torvalds 已提交
178
			-Wa,--trap
179 180
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mdmx)
cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-mno-mips3d)
R
Ralf Baechle 已提交
181 182
cflags-$(CONFIG_CPU_R8000)	+= -march=r8000 -Wa,--trap
cflags-$(CONFIG_CPU_R10000)	+= $(call cc-option,-march=r10000,-march=r8000) \
L
Linus Torvalds 已提交
183
			-Wa,--trap
184 185 186 187
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
188
cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1
189
cflags-$(CONFIG_CPU_BMIPS)	+= -march=mips32 -Wa,-mips32 -Wa,--trap
L
Linus Torvalds 已提交
190

191 192 193 194
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,)

195 196 197 198 199 200 201 202 203
# 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.
204 205 206 207 208 209 210 211 212
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
213
ifeq ($(CONFIG_CPU_HAS_MSA),y)
214
toolchain-msa				:= $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa)
215 216
cflags-$(toolchain-msa)			+= -DTOOLCHAIN_SUPPORTS_MSA
endif
217 218
toolchain-virt				:= $(call cc-option-yn,$(mips-cflags) -mvirt)
cflags-$(toolchain-virt)		+= -DTOOLCHAIN_SUPPORTS_VIRT
219 220 221 222 223 224
# 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
225 226
toolchain-crc				:= $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mcrc)
cflags-$(toolchain-crc)			+= -DTOOLCHAIN_SUPPORTS_CRC
227

L
Linus Torvalds 已提交
228 229 230
#
# Firmware support
#
231 232 233
libs-$(CONFIG_FW_ARC)		+= arch/mips/fw/arc/
libs-$(CONFIG_FW_CFE)		+= arch/mips/fw/cfe/
libs-$(CONFIG_FW_SNIPROM)	+= arch/mips/fw/sni/
234
libs-y				+= arch/mips/fw/lib/
L
Linus Torvalds 已提交
235

236 237 238
#
# Kernel compression
#
239
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
240 241 242 243 244
COMPRESSION_FNAME		= vmlinuz
else
COMPRESSION_FNAME		= vmlinux
endif

L
Linus Torvalds 已提交
245 246 247
#
# Board-dependent options and extra files
#
248
include arch/mips/Kbuild.platforms
249

250
ifdef CONFIG_PHYSICAL_START
R
Ralf Baechle 已提交
251
load-y					= $(CONFIG_PHYSICAL_START)
252
endif
253

254 255 256 257 258 259
# Sign-extend the entry point to 64 bits if retrieved as a 32-bit number.
entry-y		= $(shell $(OBJDUMP) -f vmlinux 2>/dev/null \
			| sed -n '/^start address / { \
				s/^.* //; \
				s/0x\([0-7].......\)$$/0x00000000\1/; \
				s/0x\(........\)$$/0xffffffff\1/; p }')
260

261
cflags-y			+= -I$(srctree)/arch/mips/include/asm/mach-generic
L
Linus Torvalds 已提交
262 263
drivers-$(CONFIG_PCI)		+= arch/mips/pci/

264 265 266 267
#
# 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
268
# passing 'KBUILD_SYM32=no' option to the make's command line.
269 270
#
ifdef CONFIG_64BIT
271
  ifndef KBUILD_SYM32
272
    ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
273
      KBUILD_SYM32 = y
274 275 276
    endif
  endif

277 278 279 280 281
  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)
282
    endif
283 284 285
  endif
endif

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

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

302 303 304 305
# 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

L
Linus Torvalds 已提交
306 307
LDFLAGS			+= -m $(ld-emul)

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

L
Linus Torvalds 已提交
314 315
OBJCOPYFLAGS		+= --remove-section=.reginfo

T
Thomas Gleixner 已提交
316
head-y := arch/mips/kernel/head.o
L
Linus Torvalds 已提交
317 318

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

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

324
drivers-$(CONFIG_MIPS_CRC_SUPPORT) += arch/mips/crypto/
L
Linus Torvalds 已提交
325 326
drivers-$(CONFIG_OPROFILE)	+= arch/mips/oprofile/

W
Wu Zhangjin 已提交
327 328 329
# suspend and hibernation support
drivers-$(CONFIG_PM)	+= arch/mips/power/

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

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

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

L
Linus Torvalds 已提交
363 364 365 366 367
#
# 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.
#
368 369
quiet_cmd_32 = OBJCOPY $@
	cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
L
Linus Torvalds 已提交
370
vmlinux.32: vmlinux
371
	$(call cmd,32)
L
Linus Torvalds 已提交
372 373 374 375 376

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

382
all:	$(all-y)
L
Linus Torvalds 已提交
383

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

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


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

403 404 405 406 407 408
# device-trees
core-$(CONFIG_BUILTIN_DTB) += arch/mips/boot/dts/

%.dtb %.dtb.S %.dtb.o: | scripts
	$(Q)$(MAKE) $(build)=arch/mips/boot/dts arch/mips/boot/dts/$@

409 410
PHONY += dtbs
dtbs: scripts
411
	$(Q)$(MAKE) $(build)=arch/mips/boot/dts
412

413 414 415
PHONY += dtbs_install
dtbs_install:
	$(Q)$(MAKE) $(dtbinst)=arch/mips/boot/dts
416

417 418
archprepare:
ifdef CONFIG_MIPS32_N32
A
Arnd Bergmann 已提交
419
	@$(kecho) '  Checking missing-syscalls for N32'
420
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=n32"
421 422
endif
ifdef CONFIG_MIPS32_O32
A
Arnd Bergmann 已提交
423
	@$(kecho) '  Checking missing-syscalls for O32'
424
	$(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=32"
425 426
endif

427 428
install:
	$(Q)install -D -m 755 vmlinux $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE)
429
ifdef CONFIG_SYS_SUPPORTS_ZBOOT
430
	$(Q)install -D -m 755 vmlinuz $(INSTALL_PATH)/vmlinuz-$(KERNELRELEASE)
431
endif
432 433 434
	$(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 已提交
435
archclean:
S
Sam Ravnborg 已提交
436 437
	$(Q)$(MAKE) $(clean)=arch/mips/boot
	$(Q)$(MAKE) $(clean)=arch/mips/boot/compressed
M
Matt Redfearn 已提交
438
	$(Q)$(MAKE) $(clean)=arch/mips/boot/tools
S
Sam Ravnborg 已提交
439
	$(Q)$(MAKE) $(clean)=arch/mips/lasat
L
Linus Torvalds 已提交
440

R
Ralf Baechle 已提交
441
define archhelp
442
	echo '  install              - install kernel into $(INSTALL_PATH)'
R
Ralf Baechle 已提交
443 444 445
	echo '  vmlinux.ecoff        - ECOFF boot image'
	echo '  vmlinux.bin          - Raw binary boot image'
	echo '  vmlinux.srec         - SREC boot image'
446
	echo '  vmlinux.32           - 64-bit boot image wrapped in 32bits (IP22/IP32)'
447 448 449 450
	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 已提交
451
	echo '  uImage               - U-Boot image'
452 453
	echo '  uImage.bin           - U-Boot image (uncompressed)'
	echo '  uImage.bz2           - U-Boot image (bz2)'
J
James Hogan 已提交
454
	echo '  uImage.gz            - U-Boot image (gzip)'
455 456
	echo '  uImage.lzma          - U-Boot image (lzma)'
	echo '  uImage.lzo           - U-Boot image (lzo)'
457
	echo '  uzImage.bin          - U-Boot image (self-extracting)'
458
	echo '  dtbs                 - Device-tree blobs for enabled boards'
459
	echo '  dtbs_install         - Install dtbs to $(INSTALL_DTBS_PATH)'
R
Ralf Baechle 已提交
460
	echo
L
Lucas De Marchi 已提交
461
	echo '  These will be default as appropriate for a configured platform.'
462 463 464 465 466 467
	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
468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
	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
483
	echo '  Otherwise, the following default configurations are available:'
R
Ralf Baechle 已提交
484
endef
485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516

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))

517 518 519 520
define describe_generic_defconfig
$(subst 32r,MIPS32 r,$(subst 64r,MIPS64 r,$(subst el, little endian,$(patsubst %_defconfig,%,$(1)))))
endef

521 522 523
.PHONY: $(generic_defconfigs)
$(generic_defconfigs):
	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
524 525 526 527 528 529 530 531
		-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)
532
	$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
533 534 535 536 537

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

539 540 541 542 543 544 545 546 547 548 549 550 551
#
# 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

552 553 554 555 556
#
# 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.
#
557 558 559
legacy_defconfigs		+= ocelot_defconfig
ocelot_defconfig-y		:= 32r2el_defconfig BOARDS=ocelot

J
James Hogan 已提交
560 561
legacy_defconfigs		+= sead3_defconfig
sead3_defconfig-y		:= 32r2el_defconfig BOARDS=sead-3
562

J
James Hogan 已提交
563 564
legacy_defconfigs		+= sead3micro_defconfig
sead3micro_defconfig-y		:= micro32r2el_defconfig BOARDS=sead-3
565

J
James Hogan 已提交
566 567 568 569 570 571
legacy_defconfigs		+= xilfpga_defconfig
xilfpga_defconfig-y		:= 32r2el_defconfig BOARDS=xilfpga

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