diff options
author | 2025-03-08 22:04:20 +0800 | |
---|---|---|
committer | 2025-03-08 22:04:20 +0800 | |
commit | a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a (patch) | |
tree | 84f21bd0bf7071bc5fc7dd989e77d7ceb5476682 /arch/mips/Makefile | |
download | ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.tar.gz ohosKernel-a07bb8fd1299070229f0e8f3dcb57ffd5ef9870a.zip |
Initial commit: OpenHarmony-v4.0-ReleaseOpenHarmony-v4.0-Release
Diffstat (limited to 'arch/mips/Makefile')
-rw-r--r-- | arch/mips/Makefile | 567 |
1 files changed, 567 insertions, 0 deletions
diff --git a/arch/mips/Makefile b/arch/mips/Makefile new file mode 100644 index 000000000..acab8018a --- /dev/null +++ b/arch/mips/Makefile | |||
@@ -0,0 +1,567 @@ | |||
1 | # | ||
2 | # This file is subject to the terms and conditions of the GNU General Public | ||
3 | # License. See the file "COPYING" in the main directory of this archive | ||
4 | # for more details. | ||
5 | # | ||
6 | # Copyright (C) 1994, 95, 96, 2003 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" cleaning up for this architecture. | ||
13 | # | ||
14 | |||
15 | archscripts: scripts_basic | ||
16 | $(Q)$(MAKE) $(build)=arch/mips/tools elf-entry | ||
17 | ifeq ($(CONFIG_CPU_LOONGSON3_WORKAROUNDS),y) | ||
18 | $(Q)$(MAKE) $(build)=arch/mips/tools loongson3-llsc-check | ||
19 | endif | ||
20 | $(Q)$(MAKE) $(build)=arch/mips/boot/tools relocs | ||
21 | |||
22 | KBUILD_DEFCONFIG := 32r2el_defconfig | ||
23 | KBUILD_DTBS := dtbs | ||
24 | |||
25 | # | ||
26 | # Select the object file format to substitute into the linker script. | ||
27 | # | ||
28 | ifdef CONFIG_CPU_LITTLE_ENDIAN | ||
29 | 32bit-tool-archpref = mipsel | ||
30 | 64bit-tool-archpref = mips64el | ||
31 | 32bit-bfd = elf32-tradlittlemips | ||
32 | 64bit-bfd = elf64-tradlittlemips | ||
33 | 32bit-emul = elf32ltsmip | ||
34 | 64bit-emul = elf64ltsmip | ||
35 | else | ||
36 | 32bit-tool-archpref = mips | ||
37 | 64bit-tool-archpref = mips64 | ||
38 | 32bit-bfd = elf32-tradbigmips | ||
39 | 64bit-bfd = elf64-tradbigmips | ||
40 | 32bit-emul = elf32btsmip | ||
41 | 64bit-emul = elf64btsmip | ||
42 | endif | ||
43 | |||
44 | ifdef CONFIG_32BIT | ||
45 | tool-archpref = $(32bit-tool-archpref) | ||
46 | UTS_MACHINE := mips | ||
47 | endif | ||
48 | ifdef CONFIG_64BIT | ||
49 | tool-archpref = $(64bit-tool-archpref) | ||
50 | UTS_MACHINE := mips64 | ||
51 | endif | ||
52 | |||
53 | ifneq ($(SUBARCH),$(ARCH)) | ||
54 | ifeq ($(CROSS_COMPILE),) | ||
55 | CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-) | ||
56 | endif | ||
57 | endif | ||
58 | |||
59 | ifdef CONFIG_FUNCTION_GRAPH_TRACER | ||
60 | ifndef KBUILD_MCOUNT_RA_ADDRESS | ||
61 | ifeq ($(call cc-option-yn,-mmcount-ra-address), y) | ||
62 | cflags-y += -mmcount-ra-address -DKBUILD_MCOUNT_RA_ADDRESS | ||
63 | endif | ||
64 | endif | ||
65 | endif | ||
66 | cflags-y += $(call cc-option, -mno-check-zero-division) | ||
67 | |||
68 | ifdef CONFIG_32BIT | ||
69 | ld-emul = $(32bit-emul) | ||
70 | vmlinux-32 = vmlinux | ||
71 | vmlinux-64 = vmlinux.64 | ||
72 | |||
73 | cflags-y += -mabi=32 | ||
74 | endif | ||
75 | |||
76 | ifdef CONFIG_64BIT | ||
77 | ld-emul = $(64bit-emul) | ||
78 | vmlinux-32 = vmlinux.32 | ||
79 | vmlinux-64 = vmlinux | ||
80 | |||
81 | cflags-y += -mabi=64 | ||
82 | endif | ||
83 | |||
84 | all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) | ||
85 | all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) | ||
86 | all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz | ||
87 | |||
88 | # | ||
89 | # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel | ||
90 | # code since it only slows down the whole thing. At some point we might make | ||
91 | # use of global pointer optimizations but their use of $28 conflicts with | ||
92 | # the current pointer optimization. | ||
93 | # | ||
94 | # The DECStation requires an ECOFF kernel for remote booting, other MIPS | ||
95 | # machines may also. Since BFD is incredibly buggy with respect to | ||
96 | # crossformat linking we rely on the elf2ecoff tool for format conversion. | ||
97 | # | ||
98 | cflags-y += -G 0 -mno-abicalls -fno-pic -pipe | ||
99 | cflags-y += -msoft-float | ||
100 | LDFLAGS_vmlinux += -G 0 -static -n -nostdlib | ||
101 | KBUILD_AFLAGS_MODULE += -mlong-calls | ||
102 | KBUILD_CFLAGS_MODULE += -mlong-calls | ||
103 | |||
104 | ifeq ($(CONFIG_RELOCATABLE),y) | ||
105 | LDFLAGS_vmlinux += --emit-relocs | ||
106 | endif | ||
107 | |||
108 | # | ||
109 | # pass -msoft-float to GAS if it supports it. However on newer binutils | ||
110 | # (specifically newer than 2.24.51.20140728) we then also need to explicitly | ||
111 | # set ".set hardfloat" in all files which manipulate floating point registers. | ||
112 | # | ||
113 | ifneq ($(call as-option,-Wa$(comma)-msoft-float,),) | ||
114 | cflags-y += -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float | ||
115 | endif | ||
116 | |||
117 | cflags-y += -ffreestanding | ||
118 | |||
119 | cflags-$(CONFIG_CPU_BIG_ENDIAN) += -EB | ||
120 | cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -EL | ||
121 | |||
122 | cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \ | ||
123 | -fno-omit-frame-pointer | ||
124 | |||
125 | # Some distribution-specific toolchains might pass the -fstack-check | ||
126 | # option during the build, which adds a simple stack-probe at the beginning | ||
127 | # of every function. This stack probe is to ensure that there is enough | ||
128 | # stack space, else a SEGV is generated. This is not desirable for MIPS | ||
129 | # as kernel stacks are small, placed in unmapped virtual memory, and do not | ||
130 | # grow when overflowed. Especially on SGI IP27 platforms, this check will | ||
131 | # lead to a NULL pointer dereference in _raw_spin_lock_irq. | ||
132 | # | ||
133 | # In disassembly, this stack probe appears at the top of a function as: | ||
134 | # sd zero,<offset>(sp) | ||
135 | # Where <offset> is a negative value. | ||
136 | # | ||
137 | cflags-y += -fno-stack-check | ||
138 | |||
139 | # binutils from v2.35 when built with --enable-mips-fix-loongson3-llsc=yes, | ||
140 | # supports an -mfix-loongson3-llsc flag which emits a sync prior to each ll | ||
141 | # instruction to work around a CPU bug (see __SYNC_loongson3_war in asm/sync.h | ||
142 | # for a description). | ||
143 | # | ||
144 | # We disable this in order to prevent the assembler meddling with the | ||
145 | # instruction that labels refer to, ie. if we label an ll instruction: | ||
146 | # | ||
147 | # 1: ll v0, 0(a0) | ||
148 | # | ||
149 | # ...then with the assembler fix applied the label may actually point at a sync | ||
150 | # instruction inserted by the assembler, and if we were using the label in an | ||
151 | # exception table the table would no longer contain the address of the ll | ||
152 | # instruction. | ||
153 | # | ||
154 | # Avoid this by explicitly disabling that assembler behaviour. | ||
155 | # | ||
156 | cflags-y += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,) | ||
157 | |||
158 | # | ||
159 | # CPU-dependent compiler/assembler options for optimization. | ||
160 | # | ||
161 | cflags-$(CONFIG_CPU_R3000) += -march=r3000 | ||
162 | cflags-$(CONFIG_CPU_TX39XX) += -march=r3900 | ||
163 | cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap | ||
164 | cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap | ||
165 | cflags-$(CONFIG_CPU_TX49XX) += -march=r4600 -Wa,--trap | ||
166 | cflags-$(CONFIG_CPU_MIPS32_R1) += -march=mips32 -Wa,--trap | ||
167 | cflags-$(CONFIG_CPU_MIPS32_R2) += -march=mips32r2 -Wa,--trap | ||
168 | cflags-$(CONFIG_CPU_MIPS32_R5) += -march=mips32r5 -Wa,--trap -modd-spreg | ||
169 | cflags-$(CONFIG_CPU_MIPS32_R6) += -march=mips32r6 -Wa,--trap -modd-spreg | ||
170 | cflags-$(CONFIG_CPU_MIPS64_R1) += -march=mips64 -Wa,--trap | ||
171 | cflags-$(CONFIG_CPU_MIPS64_R2) += -march=mips64r2 -Wa,--trap | ||
172 | cflags-$(CONFIG_CPU_MIPS64_R5) += -march=mips64r5 -Wa,--trap | ||
173 | cflags-$(CONFIG_CPU_MIPS64_R6) += -march=mips64r6 -Wa,--trap | ||
174 | cflags-$(CONFIG_CPU_P5600) += -march=p5600 -Wa,--trap -modd-spreg | ||
175 | cflags-$(CONFIG_CPU_R5000) += -march=r5000 -Wa,--trap | ||
176 | cflags-$(CONFIG_CPU_R5500) += $(call cc-option,-march=r5500,-march=r5000) \ | ||
177 | -Wa,--trap | ||
178 | cflags-$(CONFIG_CPU_NEVADA) += $(call cc-option,-march=rm5200,-march=r5000) \ | ||
179 | -Wa,--trap | ||
180 | cflags-$(CONFIG_CPU_RM7000) += $(call cc-option,-march=rm7000,-march=r5000) \ | ||
181 | -Wa,--trap | ||
182 | cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-march=sb1,-march=r5000) \ | ||
183 | -Wa,--trap | ||
184 | cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-mno-mdmx) | ||
185 | cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-mno-mips3d) | ||
186 | cflags-$(CONFIG_CPU_R10000) += $(call cc-option,-march=r10000,-march=r8000) \ | ||
187 | -Wa,--trap | ||
188 | cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap | ||
189 | ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON)))) | ||
190 | cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon | ||
191 | endif | ||
192 | cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1 | ||
193 | cflags-$(CONFIG_CPU_BMIPS) += -march=mips32 -Wa,-mips32 -Wa,--trap | ||
194 | |||
195 | cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,) | ||
196 | cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,) | ||
197 | cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS) += $(call cc-option,-mno-daddi,) | ||
198 | |||
199 | # For smartmips configurations, there are hundreds of warnings due to ISA overrides | ||
200 | # in assembly and header files. smartmips is only supported for MIPS32r1 onwards | ||
201 | # and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or | ||
202 | # similar directives in the kernel will spam the build logs with the following warnings: | ||
203 | # Warning: the `smartmips' extension requires MIPS32 revision 1 or greater | ||
204 | # or | ||
205 | # Warning: the 64-bit MIPS architecture does not support the `smartmips' extension | ||
206 | # Pass -Wa,--no-warn to disable all assembler warnings until the kernel code has | ||
207 | # been fixed properly. | ||
208 | mips-cflags := $(cflags-y) | ||
209 | ifeq ($(CONFIG_CPU_HAS_SMARTMIPS),y) | ||
210 | smartmips-ase := $(call cc-option-yn,$(mips-cflags) -msmartmips) | ||
211 | cflags-$(smartmips-ase) += -msmartmips -Wa,--no-warn | ||
212 | endif | ||
213 | ifeq ($(CONFIG_CPU_MICROMIPS),y) | ||
214 | micromips-ase := $(call cc-option-yn,$(mips-cflags) -mmicromips) | ||
215 | cflags-$(micromips-ase) += -mmicromips | ||
216 | endif | ||
217 | ifeq ($(CONFIG_CPU_HAS_MSA),y) | ||
218 | toolchain-msa := $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa) | ||
219 | cflags-$(toolchain-msa) += -DTOOLCHAIN_SUPPORTS_MSA | ||
220 | endif | ||
221 | toolchain-virt := $(call cc-option-yn,$(mips-cflags) -mvirt) | ||
222 | cflags-$(toolchain-virt) += -DTOOLCHAIN_SUPPORTS_VIRT | ||
223 | # For -mmicromips, use -Wa,-fatal-warnings to catch unsupported -mxpa which | ||
224 | # only warns | ||
225 | xpa-cflags-y := $(mips-cflags) | ||
226 | xpa-cflags-$(micromips-ase) += -mmicromips -Wa$(comma)-fatal-warnings | ||
227 | toolchain-xpa := $(call cc-option-yn,$(xpa-cflags-y) -mxpa) | ||
228 | cflags-$(toolchain-xpa) += -DTOOLCHAIN_SUPPORTS_XPA | ||
229 | toolchain-crc := $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mcrc) | ||
230 | cflags-$(toolchain-crc) += -DTOOLCHAIN_SUPPORTS_CRC | ||
231 | toolchain-dsp := $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mdsp) | ||
232 | cflags-$(toolchain-dsp) += -DTOOLCHAIN_SUPPORTS_DSP | ||
233 | toolchain-ginv := $(call cc-option-yn,$(mips-cflags) -Wa$(comma)-mginv) | ||
234 | cflags-$(toolchain-ginv) += -DTOOLCHAIN_SUPPORTS_GINV | ||
235 | |||
236 | # | ||
237 | # Firmware support | ||
238 | # | ||
239 | libs-$(CONFIG_FW_ARC) += arch/mips/fw/arc/ | ||
240 | libs-$(CONFIG_FW_CFE) += arch/mips/fw/cfe/ | ||
241 | libs-$(CONFIG_FW_SNIPROM) += arch/mips/fw/sni/ | ||
242 | libs-y += arch/mips/fw/lib/ | ||
243 | |||
244 | # | ||
245 | # Kernel compression | ||
246 | # | ||
247 | ifdef CONFIG_SYS_SUPPORTS_ZBOOT | ||
248 | COMPRESSION_FNAME = vmlinuz | ||
249 | else | ||
250 | COMPRESSION_FNAME = vmlinux | ||
251 | endif | ||
252 | |||
253 | # | ||
254 | # Board-dependent options and extra files | ||
255 | # | ||
256 | include arch/mips/Kbuild.platforms | ||
257 | |||
258 | ifdef CONFIG_PHYSICAL_START | ||
259 | load-y = $(CONFIG_PHYSICAL_START) | ||
260 | endif | ||
261 | |||
262 | entry-y = $(shell $(objtree)/arch/mips/tools/elf-entry vmlinux) | ||
263 | cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic | ||
264 | drivers-$(CONFIG_PCI) += arch/mips/pci/ | ||
265 | |||
266 | # | ||
267 | # Automatically detect the build format. By default we choose | ||
268 | # the elf format according to the load address. | ||
269 | # We can always force a build with a 64-bits symbol format by | ||
270 | # passing 'KBUILD_SYM32=no' option to the make's command line. | ||
271 | # | ||
272 | ifdef CONFIG_64BIT | ||
273 | ifndef KBUILD_SYM32 | ||
274 | ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0) | ||
275 | KBUILD_SYM32 = y | ||
276 | endif | ||
277 | endif | ||
278 | |||
279 | ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy) | ||
280 | cflags-y += -msym32 -DKBUILD_64BIT_SYM32 | ||
281 | else | ||
282 | ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y) | ||
283 | $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32) | ||
284 | endif | ||
285 | endif | ||
286 | endif | ||
287 | |||
288 | # When linking a 32-bit executable the LLVM linker cannot cope with a | ||
289 | # 32-bit load address that has been sign-extended to 64 bits. Simply | ||
290 | # remove the upper 32 bits then, as it is safe to do so with other | ||
291 | # linkers. | ||
292 | ifdef CONFIG_64BIT | ||
293 | load-ld = $(load-y) | ||
294 | else | ||
295 | load-ld = $(subst 0xffffffff,0x,$(load-y)) | ||
296 | endif | ||
297 | |||
298 | KBUILD_AFLAGS += $(cflags-y) | ||
299 | KBUILD_CFLAGS += $(cflags-y) | ||
300 | KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y) -DLINKER_LOAD_ADDRESS=$(load-ld) | ||
301 | KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0) | ||
302 | |||
303 | bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) \ | ||
304 | LINKER_LOAD_ADDRESS=$(load-ld) \ | ||
305 | VMLINUX_ENTRY_ADDRESS=$(entry-y) \ | ||
306 | PLATFORM="$(platform-y)" \ | ||
307 | ITS_INPUTS="$(its-y)" | ||
308 | ifdef CONFIG_32BIT | ||
309 | bootvars-y += ADDR_BITS=32 | ||
310 | endif | ||
311 | ifdef CONFIG_64BIT | ||
312 | bootvars-y += ADDR_BITS=64 | ||
313 | endif | ||
314 | |||
315 | # This is required to get dwarf unwinding tables into .debug_frame | ||
316 | # instead of .eh_frame so we don't discard them. | ||
317 | KBUILD_CFLAGS += -fno-asynchronous-unwind-tables | ||
318 | |||
319 | KBUILD_LDFLAGS += -m $(ld-emul) | ||
320 | |||
321 | ifdef CONFIG_MIPS | ||
322 | CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ | ||
323 | egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ | ||
324 | sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') | ||
325 | endif | ||
326 | |||
327 | OBJCOPYFLAGS += --remove-section=.reginfo | ||
328 | |||
329 | head-y := arch/mips/kernel/head.o | ||
330 | |||
331 | libs-y += arch/mips/lib/ | ||
332 | libs-$(CONFIG_MIPS_FP_SUPPORT) += arch/mips/math-emu/ | ||
333 | |||
334 | # See arch/mips/Kbuild for content of core part of the kernel | ||
335 | core-y += arch/mips/ | ||
336 | |||
337 | drivers-y += arch/mips/crypto/ | ||
338 | drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/ | ||
339 | |||
340 | # suspend and hibernation support | ||
341 | drivers-$(CONFIG_PM) += arch/mips/power/ | ||
342 | |||
343 | # boot image targets (arch/mips/boot/) | ||
344 | boot-y := vmlinux.bin | ||
345 | boot-y += vmlinux.ecoff | ||
346 | boot-y += vmlinux.srec | ||
347 | ifeq ($(shell expr $(load-y) \< 0xffffffff80000000 2> /dev/null), 0) | ||
348 | boot-y += uImage | ||
349 | boot-y += uImage.bin | ||
350 | boot-y += uImage.bz2 | ||
351 | boot-y += uImage.gz | ||
352 | boot-y += uImage.lzma | ||
353 | boot-y += uImage.lzo | ||
354 | endif | ||
355 | boot-y += vmlinux.itb | ||
356 | boot-y += vmlinux.gz.itb | ||
357 | boot-y += vmlinux.bz2.itb | ||
358 | boot-y += vmlinux.lzma.itb | ||
359 | boot-y += vmlinux.lzo.itb | ||
360 | |||
361 | # compressed boot image targets (arch/mips/boot/compressed/) | ||
362 | bootz-y := vmlinuz | ||
363 | bootz-y += vmlinuz.bin | ||
364 | bootz-y += vmlinuz.ecoff | ||
365 | bootz-y += vmlinuz.srec | ||
366 | ifeq ($(shell expr $(zload-y) \< 0xffffffff80000000 2> /dev/null), 0) | ||
367 | bootz-y += uzImage.bin | ||
368 | endif | ||
369 | |||
370 | # | ||
371 | # Some machines like the Indy need 32-bit ELF binaries for booting purposes. | ||
372 | # Other need ECOFF, so we build a 32-bit ELF binary for them which we then | ||
373 | # convert to ECOFF using elf2ecoff. | ||
374 | # | ||
375 | quiet_cmd_32 = OBJCOPY $@ | ||
376 | cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@ | ||
377 | vmlinux.32: vmlinux | ||
378 | $(call cmd,32) | ||
379 | |||
380 | # | ||
381 | # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit | ||
382 | # ELF files from 32-bit files by conversion. | ||
383 | # | ||
384 | quiet_cmd_64 = OBJCOPY $@ | ||
385 | cmd_64 = $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@ | ||
386 | vmlinux.64: vmlinux | ||
387 | $(call cmd,64) | ||
388 | |||
389 | all: $(all-y) $(KBUILD_DTBS) | ||
390 | |||
391 | # boot | ||
392 | $(boot-y): $(vmlinux-32) FORCE | ||
393 | $(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) \ | ||
394 | $(bootvars-y) arch/mips/boot/$@ | ||
395 | |||
396 | ifdef CONFIG_SYS_SUPPORTS_ZBOOT | ||
397 | # boot/compressed | ||
398 | $(bootz-y): $(vmlinux-32) FORCE | ||
399 | $(Q)$(MAKE) $(build)=arch/mips/boot/compressed \ | ||
400 | $(bootvars-y) 32bit-bfd=$(32bit-bfd) $@ | ||
401 | else | ||
402 | vmlinuz: FORCE | ||
403 | @echo ' CONFIG_SYS_SUPPORTS_ZBOOT is not enabled' | ||
404 | /bin/false | ||
405 | endif | ||
406 | |||
407 | |||
408 | CLEAN_FILES += vmlinux.32 vmlinux.64 | ||
409 | |||
410 | # device-trees | ||
411 | core-y += arch/mips/boot/dts/ | ||
412 | |||
413 | archprepare: | ||
414 | ifdef CONFIG_MIPS32_N32 | ||
415 | @$(kecho) ' Checking missing-syscalls for N32' | ||
416 | $(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=n32" | ||
417 | endif | ||
418 | ifdef CONFIG_MIPS32_O32 | ||
419 | @$(kecho) ' Checking missing-syscalls for O32' | ||
420 | $(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=32" | ||
421 | endif | ||
422 | |||
423 | install: | ||
424 | $(Q)install -D -m 755 vmlinux $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE) | ||
425 | ifdef CONFIG_SYS_SUPPORTS_ZBOOT | ||
426 | $(Q)install -D -m 755 vmlinuz $(INSTALL_PATH)/vmlinuz-$(KERNELRELEASE) | ||
427 | endif | ||
428 | $(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE) | ||
429 | $(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE) | ||
430 | |||
431 | archclean: | ||
432 | $(Q)$(MAKE) $(clean)=arch/mips/boot | ||
433 | $(Q)$(MAKE) $(clean)=arch/mips/boot/compressed | ||
434 | $(Q)$(MAKE) $(clean)=arch/mips/boot/tools | ||
435 | |||
436 | archheaders: | ||
437 | $(Q)$(MAKE) $(build)=arch/mips/kernel/syscalls all | ||
438 | |||
439 | define archhelp | ||
440 | echo ' install - install kernel into $(INSTALL_PATH)' | ||
441 | echo ' vmlinux.ecoff - ECOFF boot image' | ||
442 | echo ' vmlinux.bin - Raw binary boot image' | ||
443 | echo ' vmlinux.srec - SREC boot image' | ||
444 | echo ' vmlinux.32 - 64-bit boot image wrapped in 32bits (IP22/IP32)' | ||
445 | echo ' vmlinuz - Compressed boot(zboot) image' | ||
446 | echo ' vmlinuz.ecoff - ECOFF zboot image' | ||
447 | echo ' vmlinuz.bin - Raw binary zboot image' | ||
448 | echo ' vmlinuz.srec - SREC zboot image' | ||
449 | echo ' uImage - U-Boot image' | ||
450 | echo ' uImage.bin - U-Boot image (uncompressed)' | ||
451 | echo ' uImage.bz2 - U-Boot image (bz2)' | ||
452 | echo ' uImage.gz - U-Boot image (gzip)' | ||
453 | echo ' uImage.lzma - U-Boot image (lzma)' | ||
454 | echo ' uImage.lzo - U-Boot image (lzo)' | ||
455 | echo ' uzImage.bin - U-Boot image (self-extracting)' | ||
456 | echo | ||
457 | echo ' These will be default as appropriate for a configured platform.' | ||
458 | echo | ||
459 | echo ' If you are targeting a system supported by generic kernels you may' | ||
460 | echo ' configure the kernel for a given architecture target like so:' | ||
461 | echo | ||
462 | echo ' {micro32,32,64}{r1,r2,r6}{el,}_defconfig <BOARDS="list of boards">' | ||
463 | echo | ||
464 | echo ' Where BOARDS is some subset of the following:' | ||
465 | for board in $(sort $(BOARDS)); do echo " $${board}"; done | ||
466 | echo | ||
467 | echo ' Specifically the following generic default configurations are' | ||
468 | echo ' supported:' | ||
469 | echo | ||
470 | $(foreach cfg,$(generic_defconfigs), | ||
471 | printf " %-24s - Build generic kernel for $(call describe_generic_defconfig,$(cfg))\n" $(cfg);) | ||
472 | echo | ||
473 | echo ' The following legacy default configurations have been converted to' | ||
474 | echo ' generic and can still be used:' | ||
475 | echo | ||
476 | $(foreach cfg,$(sort $(legacy_defconfigs)), | ||
477 | printf " %-24s - Build $($(cfg)-y)\n" $(cfg);) | ||
478 | echo | ||
479 | echo ' Otherwise, the following default configurations are available:' | ||
480 | endef | ||
481 | |||
482 | generic_config_dir = $(srctree)/arch/$(ARCH)/configs/generic | ||
483 | generic_defconfigs := | ||
484 | |||
485 | # | ||
486 | # If the user generates a generic kernel configuration without specifying a | ||
487 | # list of boards to include the config fragments for, default to including all | ||
488 | # available board config fragments. | ||
489 | # | ||
490 | ifeq ($(BOARDS),) | ||
491 | BOARDS = $(patsubst board-%.config,%,$(notdir $(wildcard $(generic_config_dir)/board-*.config))) | ||
492 | endif | ||
493 | |||
494 | # | ||
495 | # Generic kernel configurations which merge generic_defconfig with the | ||
496 | # appropriate config fragments from arch/mips/configs/generic/, resulting in | ||
497 | # the ability to easily configure the kernel for a given architecture, | ||
498 | # endianness & set of boards without duplicating the needed configuration in | ||
499 | # hundreds of defconfig files. | ||
500 | # | ||
501 | define gen_generic_defconfigs | ||
502 | $(foreach bits,$(1),$(foreach rev,$(2),$(foreach endian,$(3), | ||
503 | target := $(bits)$(rev)$(filter el,$(endian))_defconfig | ||
504 | generic_defconfigs += $$(target) | ||
505 | $$(target): $(generic_config_dir)/$(bits)$(rev).config | ||
506 | $$(target): $(generic_config_dir)/$(endian).config | ||
507 | ))) | ||
508 | endef | ||
509 | |||
510 | $(eval $(call gen_generic_defconfigs,32 64,r1 r2 r6,eb el)) | ||
511 | $(eval $(call gen_generic_defconfigs,micro32,r2,eb el)) | ||
512 | |||
513 | define describe_generic_defconfig | ||
514 | $(subst 32r,MIPS32 r,$(subst 64r,MIPS64 r,$(subst el, little endian,$(patsubst %_defconfig,%,$(1))))) | ||
515 | endef | ||
516 | |||
517 | .PHONY: $(generic_defconfigs) | ||
518 | $(generic_defconfigs): | ||
519 | $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \ | ||
520 | -m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/generic_defconfig $^ | \ | ||
521 | grep -Ev '^#' | ||
522 | $(Q)cp $(KCONFIG_CONFIG) $(objtree)/.config.$@ | ||
523 | $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig \ | ||
524 | KCONFIG_CONFIG=$(objtree)/.config.$@ >/dev/null | ||
525 | $(Q)$(CONFIG_SHELL) $(srctree)/arch/$(ARCH)/tools/generic-board-config.sh \ | ||
526 | $(srctree) $(objtree) $(objtree)/.config.$@ $(KCONFIG_CONFIG) \ | ||
527 | "$(origin BOARDS)" $(BOARDS) | ||
528 | $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig | ||
529 | |||
530 | # | ||
531 | # Prevent generic merge_config rules attempting to merge single fragments | ||
532 | # | ||
533 | $(generic_config_dir)/%.config: ; | ||
534 | |||
535 | # | ||
536 | # Prevent direct use of generic_defconfig, which is intended to be used as the | ||
537 | # basis of the various ISA-specific targets generated above. | ||
538 | # | ||
539 | .PHONY: generic_defconfig | ||
540 | generic_defconfig: | ||
541 | $(Q)echo "generic_defconfig is not intended for direct use, but should instead be" | ||
542 | $(Q)echo "used via an ISA-specific target from the following list:" | ||
543 | $(Q)echo | ||
544 | $(Q)for cfg in $(generic_defconfigs); do echo " $${cfg}"; done | ||
545 | $(Q)echo | ||
546 | $(Q)false | ||
547 | |||
548 | # | ||
549 | # Legacy defconfig compatibility - these targets used to be real defconfigs but | ||
550 | # now that the boards have been converted to use the generic kernel they are | ||
551 | # wrappers around the generic rules above. | ||
552 | # | ||
553 | legacy_defconfigs += ocelot_defconfig | ||
554 | ocelot_defconfig-y := 32r2el_defconfig BOARDS=ocelot | ||
555 | |||
556 | legacy_defconfigs += sead3_defconfig | ||
557 | sead3_defconfig-y := 32r2el_defconfig BOARDS=sead-3 | ||
558 | |||
559 | legacy_defconfigs += sead3micro_defconfig | ||
560 | sead3micro_defconfig-y := micro32r2el_defconfig BOARDS=sead-3 | ||
561 | |||
562 | legacy_defconfigs += xilfpga_defconfig | ||
563 | xilfpga_defconfig-y := 32r2el_defconfig BOARDS=xilfpga | ||
564 | |||
565 | .PHONY: $(legacy_defconfigs) | ||
566 | $(legacy_defconfigs): | ||
567 | $(Q)$(MAKE) -f $(srctree)/Makefile $($@-y) | ||