xref: /linux/arch/mips/Makefile (revision 231a35d37293ab88d325a9cb94e5474c156282c0)
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
15cflags-y :=
16
17#
18# Select the object file format to substitute into the linker script.
19#
20ifdef CONFIG_CPU_LITTLE_ENDIAN
2132bit-tool-archpref	= mipsel
2264bit-tool-archpref	= mips64el
2332bit-bfd		= elf32-tradlittlemips
2464bit-bfd		= elf64-tradlittlemips
2532bit-emul		= elf32ltsmip
2664bit-emul		= elf64ltsmip
27else
2832bit-tool-archpref	= mips
2964bit-tool-archpref	= mips64
3032bit-bfd		= elf32-tradbigmips
3164bit-bfd		= elf64-tradbigmips
3232bit-emul		= elf32btsmip
3364bit-emul		= elf64btsmip
34endif
35
36ifdef CONFIG_32BIT
37tool-archpref		= $(32bit-tool-archpref)
38UTS_MACHINE		:= mips
39endif
40ifdef CONFIG_64BIT
41tool-archpref		= $(64bit-tool-archpref)
42UTS_MACHINE		:= mips64
43endif
44
45ifneq ($(SUBARCH),$(ARCH))
46  ifeq ($(CROSS_COMPILE),)
47    CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux-  $(tool-archpref)-linux-gnu-  $(tool-archpref)-unknown-linux-gnu-)
48  endif
49endif
50
51ifdef CONFIG_32BIT
52ld-emul			= $(32bit-emul)
53vmlinux-32		= vmlinux
54vmlinux-64		= vmlinux.64
55
56cflags-y		+= -mabi=32
57endif
58
59ifdef CONFIG_64BIT
60ld-emul			= $(64bit-emul)
61vmlinux-32		= vmlinux.32
62vmlinux-64		= vmlinux
63
64cflags-y		+= -mabi=64
65endif
66
67all-$(CONFIG_BOOT_ELF32)	:= $(vmlinux-32)
68all-$(CONFIG_BOOT_ELF64)	:= $(vmlinux-64)
69
70#
71# GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
72# code since it only slows down the whole thing.  At some point we might make
73# use of global pointer optimizations but their use of $28 conflicts with
74# the current pointer optimization.
75#
76# The DECStation requires an ECOFF kernel for remote booting, other MIPS
77# machines may also.  Since BFD is incredibly buggy with respect to
78# crossformat linking we rely on the elf2ecoff tool for format conversion.
79#
80cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
81cflags-y			+= -msoft-float
82LDFLAGS_vmlinux			+= -G 0 -static -n -nostdlib
83MODFLAGS			+= -mlong-calls
84
85cflags-y += -ffreestanding
86
87#
88# We explicitly add the endianness specifier if needed, this allows
89# to compile kernels with a toolchain for the other endianness. We
90# carefully avoid to add it redundantly because gcc 3.3/3.4 complains
91# when fed the toolchain default!
92#
93# Certain gcc versions upto gcc 4.1.1 (probably 4.2-subversion as of
94# 2006-10-10 don't properly change the predefined symbols if -EB / -EL
95# are used, so we kludge that here.  A bug has been filed at
96# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413.
97#
98undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__
99undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__
100predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__
101predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__
102cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be))
103cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le))
104
105cflags-$(CONFIG_CPU_HAS_SMARTMIPS)	+= $(call cc-option,-msmartmips)
106
107cflags-$(CONFIG_SB1XXX_CORELIS)	+= $(call cc-option,-mno-sched-prolog) \
108				   -fno-omit-frame-pointer
109
110#
111# CPU-dependent compiler/assembler options for optimization.
112#
113cflags-$(CONFIG_CPU_R3000)	+= -march=r3000
114cflags-$(CONFIG_CPU_TX39XX)	+= -march=r3900
115cflags-$(CONFIG_CPU_R6000)	+= -march=r6000 -Wa,--trap
116cflags-$(CONFIG_CPU_R4300)	+= -march=r4300 -Wa,--trap
117cflags-$(CONFIG_CPU_VR41XX)	+= -march=r4100 -Wa,--trap
118cflags-$(CONFIG_CPU_R4X00)	+= -march=r4600 -Wa,--trap
119cflags-$(CONFIG_CPU_TX49XX)	+= -march=r4600 -Wa,--trap
120cflags-$(CONFIG_CPU_LOONGSON2)	+= -march=r4600 -Wa,--trap
121cflags-$(CONFIG_CPU_MIPS32_R1)	+= $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
122			-Wa,-mips32 -Wa,--trap
123cflags-$(CONFIG_CPU_MIPS32_R2)	+= $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \
124			-Wa,-mips32r2 -Wa,--trap
125cflags-$(CONFIG_CPU_MIPS64_R1)	+= $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
126			-Wa,-mips64 -Wa,--trap
127cflags-$(CONFIG_CPU_MIPS64_R2)	+= $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
128			-Wa,-mips64r2 -Wa,--trap
129cflags-$(CONFIG_CPU_R5000)	+= -march=r5000 -Wa,--trap
130cflags-$(CONFIG_CPU_R5432)	+= $(call cc-option,-march=r5400,-march=r5000) \
131			-Wa,--trap
132cflags-$(CONFIG_CPU_NEVADA)	+= $(call cc-option,-march=rm5200,-march=r5000) \
133			-Wa,--trap
134cflags-$(CONFIG_CPU_RM7000)	+= $(call cc-option,-march=rm7000,-march=r5000) \
135			-Wa,--trap
136cflags-$(CONFIG_CPU_RM9000)	+= $(call cc-option,-march=rm9000,-march=r5000) \
137			-Wa,--trap
138cflags-$(CONFIG_CPU_SB1)	+= $(call cc-option,-march=sb1,-march=r5000) \
139			-Wa,--trap
140cflags-$(CONFIG_CPU_R8000)	+= -march=r8000 -Wa,--trap
141cflags-$(CONFIG_CPU_R10000)	+= $(call cc-option,-march=r10000,-march=r8000) \
142			-Wa,--trap
143
144cflags-$(CONFIG_CPU_R4000_WORKAROUNDS)	+= $(call cc-option,-mfix-r4000,)
145cflags-$(CONFIG_CPU_R4400_WORKAROUNDS)	+= $(call cc-option,-mfix-r4400,)
146cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS)	+= $(call cc-option,-mno-daddi,)
147
148ifdef CONFIG_CPU_SB1
149ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
150MODFLAGS	+= -msb1-pass1-workarounds
151endif
152endif
153
154#
155# Firmware support
156#
157libs-$(CONFIG_ARC)		+= arch/mips/fw/arc/
158libs-$(CONFIG_CFE)		+= arch/mips/fw/cfe/
159libs-$(CONFIG_SNIPROM)		+= arch/mips/fw/sni/
160libs-y				+= arch/mips/fw/lib/
161libs-$(CONFIG_SIBYTE_CFE)	+= arch/mips/sibyte/cfe/
162
163#
164# Board-dependent options and extra files
165#
166
167#
168# Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
169#
170core-$(CONFIG_MACH_JAZZ)	+= arch/mips/jazz/
171cflags-$(CONFIG_MACH_JAZZ)	+= -Iinclude/asm-mips/mach-jazz
172load-$(CONFIG_MACH_JAZZ)	+= 0xffffffff80080000
173
174#
175# Common Alchemy Au1x00 stuff
176#
177core-$(CONFIG_SOC_AU1X00)	+= arch/mips/au1000/common/
178cflags-$(CONFIG_SOC_AU1X00)	+= -Iinclude/asm-mips/mach-au1x00
179
180#
181# AMD Alchemy Pb1000 eval board
182#
183libs-$(CONFIG_MIPS_PB1000)	+= arch/mips/au1000/pb1000/
184cflags-$(CONFIG_MIPS_PB1000)	+= -Iinclude/asm-mips/mach-pb1x00
185load-$(CONFIG_MIPS_PB1000)	+= 0xffffffff80100000
186
187#
188# AMD Alchemy Pb1100 eval board
189#
190libs-$(CONFIG_MIPS_PB1100)	+= arch/mips/au1000/pb1100/
191cflags-$(CONFIG_MIPS_PB1100)	+= -Iinclude/asm-mips/mach-pb1x00
192load-$(CONFIG_MIPS_PB1100)	+= 0xffffffff80100000
193
194#
195# AMD Alchemy Pb1500 eval board
196#
197libs-$(CONFIG_MIPS_PB1500)	+= arch/mips/au1000/pb1500/
198cflags-$(CONFIG_MIPS_PB1500)	+= -Iinclude/asm-mips/mach-pb1x00
199load-$(CONFIG_MIPS_PB1500)	+= 0xffffffff80100000
200
201#
202# AMD Alchemy Pb1550 eval board
203#
204libs-$(CONFIG_MIPS_PB1550)	+= arch/mips/au1000/pb1550/
205cflags-$(CONFIG_MIPS_PB1550)	+= -Iinclude/asm-mips/mach-pb1x00
206load-$(CONFIG_MIPS_PB1550)	+= 0xffffffff80100000
207
208#
209# AMD Alchemy Pb1200 eval board
210#
211libs-$(CONFIG_MIPS_PB1200)	+= arch/mips/au1000/pb1200/
212cflags-$(CONFIG_MIPS_PB1200)	+= -Iinclude/asm-mips/mach-pb1x00
213load-$(CONFIG_MIPS_PB1200)	+= 0xffffffff80100000
214
215#
216# AMD Alchemy Db1000 eval board
217#
218libs-$(CONFIG_MIPS_DB1000)	+= arch/mips/au1000/db1x00/
219cflags-$(CONFIG_MIPS_DB1000)	+= -Iinclude/asm-mips/mach-db1x00
220load-$(CONFIG_MIPS_DB1000)	+= 0xffffffff80100000
221
222#
223# AMD Alchemy Db1100 eval board
224#
225libs-$(CONFIG_MIPS_DB1100)	+= arch/mips/au1000/db1x00/
226cflags-$(CONFIG_MIPS_DB1100)	+= -Iinclude/asm-mips/mach-db1x00
227load-$(CONFIG_MIPS_DB1100)	+= 0xffffffff80100000
228
229#
230# AMD Alchemy Db1500 eval board
231#
232libs-$(CONFIG_MIPS_DB1500)	+= arch/mips/au1000/db1x00/
233cflags-$(CONFIG_MIPS_DB1500)	+= -Iinclude/asm-mips/mach-db1x00
234load-$(CONFIG_MIPS_DB1500)	+= 0xffffffff80100000
235
236#
237# AMD Alchemy Db1550 eval board
238#
239libs-$(CONFIG_MIPS_DB1550)	+= arch/mips/au1000/db1x00/
240cflags-$(CONFIG_MIPS_DB1550)	+= -Iinclude/asm-mips/mach-db1x00
241load-$(CONFIG_MIPS_DB1550)	+= 0xffffffff80100000
242
243#
244# AMD Alchemy Db1200 eval board
245#
246libs-$(CONFIG_MIPS_DB1200)	+= arch/mips/au1000/pb1200/
247cflags-$(CONFIG_MIPS_DB1200)	+= -Iinclude/asm-mips/mach-db1x00
248load-$(CONFIG_MIPS_DB1200)	+= 0xffffffff80100000
249
250#
251# AMD Alchemy Bosporus eval board
252#
253libs-$(CONFIG_MIPS_BOSPORUS)	+= arch/mips/au1000/db1x00/
254cflags-$(CONFIG_MIPS_BOSPORUS)	+= -Iinclude/asm-mips/mach-db1x00
255load-$(CONFIG_MIPS_BOSPORUS)	+= 0xffffffff80100000
256
257#
258# AMD Alchemy Mirage eval board
259#
260libs-$(CONFIG_MIPS_MIRAGE)	+= arch/mips/au1000/db1x00/
261cflags-$(CONFIG_MIPS_MIRAGE)	+= -Iinclude/asm-mips/mach-db1x00
262load-$(CONFIG_MIPS_MIRAGE)	+= 0xffffffff80100000
263
264#
265# 4G-Systems eval board
266#
267libs-$(CONFIG_MIPS_MTX1)	+= arch/mips/au1000/mtx-1/
268load-$(CONFIG_MIPS_MTX1)	+= 0xffffffff80100000
269
270#
271# MyCable eval board
272#
273libs-$(CONFIG_MIPS_XXS1500)	+= arch/mips/au1000/xxs1500/
274load-$(CONFIG_MIPS_XXS1500)	+= 0xffffffff80100000
275
276#
277# Cobalt Server
278#
279core-$(CONFIG_MIPS_COBALT)	+= arch/mips/cobalt/
280cflags-$(CONFIG_MIPS_COBALT)	+= -Iinclude/asm-mips/mach-cobalt
281load-$(CONFIG_MIPS_COBALT)	+= 0xffffffff80080000
282
283#
284# DECstation family
285#
286core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
287cflags-$(CONFIG_MACH_DECSTATION)+= -Iinclude/asm-mips/mach-dec
288libs-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/prom/
289load-$(CONFIG_MACH_DECSTATION)	+= 0xffffffff80040000
290
291#
292# Wind River PPMC Board (4KC + GT64120)
293#
294core-$(CONFIG_WR_PPMC)		+= arch/mips/gt64120/wrppmc/
295cflags-$(CONFIG_WR_PPMC)		+= -Iinclude/asm-mips/mach-wrppmc
296load-$(CONFIG_WR_PPMC)		+= 0xffffffff80100000
297
298#
299# lemote fulong mini-PC board
300#
301core-$(CONFIG_LEMOTE_FULONG) +=arch/mips/lemote/lm2e/
302load-$(CONFIG_LEMOTE_FULONG) +=0xffffffff80100000
303cflags-$(CONFIG_LEMOTE_FULONG) += -Iinclude/asm-mips/mach-lemote
304
305#
306# For all MIPS, Inc. eval boards
307#
308core-$(CONFIG_MIPS_BOARDS_GEN)	+= arch/mips/mips-boards/generic/
309
310#
311# MIPS Atlas board
312#
313core-$(CONFIG_MIPS_ATLAS)	+= arch/mips/mips-boards/atlas/
314cflags-$(CONFIG_MIPS_ATLAS)	+= -Iinclude/asm-mips/mach-atlas
315cflags-$(CONFIG_MIPS_ATLAS)	+= -Iinclude/asm-mips/mach-mips
316load-$(CONFIG_MIPS_ATLAS)	+= 0xffffffff80100000
317all-$(CONFIG_MIPS_ATLAS)	:= vmlinux.srec
318
319#
320# MIPS Malta board
321#
322core-$(CONFIG_MIPS_MALTA)	+= arch/mips/mips-boards/malta/
323cflags-$(CONFIG_MIPS_MALTA)	+= -Iinclude/asm-mips/mach-mips
324load-$(CONFIG_MIPS_MALTA)	+= 0xffffffff80100000
325all-$(CONFIG_MIPS_MALTA)	:= vmlinux.srec
326
327#
328# MIPS SEAD board
329#
330core-$(CONFIG_MIPS_SEAD)	+= arch/mips/mips-boards/sead/
331cflags-$(CONFIG_MIPS_SEAD)	+= -Iinclude/asm-mips/mach-mips
332load-$(CONFIG_MIPS_SEAD)	+= 0xffffffff80100000
333all-$(CONFIG_MIPS_SEAD)		:= vmlinux.srec
334
335#
336# MIPS SIM
337#
338core-$(CONFIG_MIPS_SIM)		+= arch/mips/mipssim/
339cflags-$(CONFIG_MIPS_SIM)	+= -Iinclude/asm-mips/mach-mipssim
340load-$(CONFIG_MIPS_SIM)		+= 0x80100000
341
342#
343# PMC-Sierra MSP SOCs
344#
345core-$(CONFIG_PMC_MSP)		+= arch/mips/pmc-sierra/msp71xx/
346cflags-$(CONFIG_PMC_MSP)	+= -Iinclude/asm-mips/pmc-sierra/msp71xx \
347					-mno-branch-likely
348load-$(CONFIG_PMC_MSP)		+= 0xffffffff80100000
349
350#
351# PMC-Sierra Yosemite
352#
353core-$(CONFIG_PMC_YOSEMITE)	+= arch/mips/pmc-sierra/yosemite/
354cflags-$(CONFIG_PMC_YOSEMITE)	+= -Iinclude/asm-mips/mach-yosemite
355load-$(CONFIG_PMC_YOSEMITE)	+= 0xffffffff80100000
356
357#
358# Qemu simulating MIPS32 4Kc
359#
360core-$(CONFIG_QEMU)		+= arch/mips/qemu/
361cflags-$(CONFIG_QEMU)		+= -Iinclude/asm-mips/mach-qemu
362load-$(CONFIG_QEMU)		+= 0xffffffff80010000
363all-$(CONFIG_QEMU)		:= vmlinux.bin
364
365#
366# Basler eXcite
367#
368core-$(CONFIG_BASLER_EXCITE)	+= arch/mips/basler/excite/
369cflags-$(CONFIG_BASLER_EXCITE)	+= -Iinclude/asm-mips/mach-excite
370load-$(CONFIG_BASLER_EXCITE)	+= 0x80100000
371
372#
373# LASAT platforms
374#
375core-$(CONFIG_LASAT)		+= arch/mips/lasat/
376cflags-$(CONFIG_LASAT)		+= -Iinclude/asm-mips/mach-lasat
377load-$(CONFIG_LASAT)		+= 0xffffffff80000000
378
379#
380# Common VR41xx
381#
382core-$(CONFIG_MACH_VR41XX)	+= arch/mips/vr41xx/common/
383cflags-$(CONFIG_MACH_VR41XX)	+= -Iinclude/asm-mips/mach-vr41xx
384
385#
386# NEC VR4133
387#
388core-$(CONFIG_NEC_CMBVR4133)	+= arch/mips/vr41xx/nec-cmbvr4133/
389load-$(CONFIG_NEC_CMBVR4133)	+= 0xffffffff80100000
390
391#
392# ZAO Networks Capcella (VR4131)
393#
394load-$(CONFIG_ZAO_CAPCELLA)	+= 0xffffffff80000000
395
396#
397# Victor MP-C303/304 (VR4122)
398#
399load-$(CONFIG_VICTOR_MPC30X)	+= 0xffffffff80001000
400
401#
402# IBM WorkPad z50 (VR4121)
403#
404core-$(CONFIG_IBM_WORKPAD)	+= arch/mips/vr41xx/ibm-workpad/
405load-$(CONFIG_IBM_WORKPAD)	+= 0xffffffff80004000
406
407#
408# CASIO CASSIPEIA E-55/65 (VR4111)
409#
410core-$(CONFIG_CASIO_E55)	+= arch/mips/vr41xx/casio-e55/
411load-$(CONFIG_CASIO_E55)	+= 0xffffffff80004000
412
413#
414# TANBAC VR4131 multichip module(TB0225) and TANBAC VR4131DIMM(TB0229) (VR4131)
415#
416load-$(CONFIG_TANBAC_TB022X)	+= 0xffffffff80000000
417
418#
419# Common Philips PNX8550
420#
421core-$(CONFIG_SOC_PNX8550)	+= arch/mips/philips/pnx8550/common/
422cflags-$(CONFIG_SOC_PNX8550)	+= -Iinclude/asm-mips/mach-pnx8550
423
424#
425# Philips PNX8550 JBS board
426#
427libs-$(CONFIG_PNX8550_JBS)	+= arch/mips/philips/pnx8550/jbs/
428#cflags-$(CONFIG_PNX8550_JBS)	+= -Iinclude/asm-mips/mach-pnx8550
429load-$(CONFIG_PNX8550_JBS)	+= 0xffffffff80060000
430
431# Philips PNX8550 STB810 board
432#
433libs-$(CONFIG_PNX8550_STB810)	+= arch/mips/philips/pnx8550/stb810/
434load-$(CONFIG_PNX8550_STB810)	+= 0xffffffff80060000
435
436# NEC EMMA2RH boards
437#
438core-$(CONFIG_EMMA2RH)          += arch/mips/emma2rh/common/
439cflags-$(CONFIG_EMMA2RH)        += -Iinclude/asm-mips/mach-emma2rh
440
441# NEC EMMA2RH Mark-eins
442core-$(CONFIG_MARKEINS)         += arch/mips/emma2rh/markeins/
443load-$(CONFIG_MARKEINS)         += 0xffffffff88100000
444
445#
446# SGI IP22 (Indy/Indigo2)
447#
448# Set the load address to >= 0xffffffff88069000 if you want to leave space for
449# symmon, 0xffffffff80002000 for production kernels.  Note that the value must
450# be aligned to a multiple of the kernel stack size or the handling of the
451# current variable will break so for 64-bit kernels we have to raise the start
452# address by 8kb.
453#
454core-$(CONFIG_SGI_IP22)		+= arch/mips/sgi-ip22/
455cflags-$(CONFIG_SGI_IP22)	+= -Iinclude/asm-mips/mach-ip22
456ifdef CONFIG_32BIT
457load-$(CONFIG_SGI_IP22)		+= 0xffffffff88002000
458endif
459ifdef CONFIG_64BIT
460load-$(CONFIG_SGI_IP22)		+= 0xffffffff88004000
461endif
462
463#
464# SGI-IP27 (Origin200/2000)
465#
466# Set the load address to >= 0xc000000000300000 if you want to leave space for
467# symmon, 0xc00000000001c000 for production kernels.  Note that the value must
468# be 16kb aligned or the handling of the current variable will break.
469#
470ifdef CONFIG_SGI_IP27
471core-$(CONFIG_SGI_IP27)		+= arch/mips/sgi-ip27/
472cflags-$(CONFIG_SGI_IP27)	+= -Iinclude/asm-mips/mach-ip27
473ifdef CONFIG_MAPPED_KERNEL
474load-$(CONFIG_SGI_IP27)		+= 0xc00000004001c000
475OBJCOPYFLAGS			:= --change-addresses=0x3fffffff80000000
476dataoffset-$(CONFIG_SGI_IP27)	+= 0x01000000
477else
478load-$(CONFIG_SGI_IP27)		+= 0xa80000000001c000
479OBJCOPYFLAGS			:= --change-addresses=0x57ffffff80000000
480endif
481endif
482
483#
484# SGI IP28 (Indigo2 R10k)
485#
486# Set the load address to >= 0xa800000020080000 if you want to leave space for
487# symmon, 0xa800000020004000 for production kernels ?  Note that the value must
488# be 16kb aligned or the handling of the current variable will break.
489# Simplified: what IP22 does at 128MB+ in ksegN, IP28 does at 512MB+ in xkphys
490#
491#core-$(CONFIG_SGI_IP28)		+= arch/mips/sgi-ip22/ arch/mips/arc/arc_con.o
492core-$(CONFIG_SGI_IP28)		+= arch/mips/sgi-ip22/
493cflags-$(CONFIG_SGI_IP28)	+= -mr10k-cache-barrier=1 -Iinclude/asm-mips/mach-ip28
494#cflags-$(CONFIG_SGI_IP28)	+= -Iinclude/asm-mips/mach-ip28
495load-$(CONFIG_SGI_IP28)		+= 0xa800000020004000
496
497#
498# SGI-IP32 (O2)
499#
500# Set the load address to >= 80069000 if you want to leave space for symmon,
501# 0xffffffff80004000 for production kernels.  Note that the value must be aligned to
502# a multiple of the kernel stack size or the handling of the current variable
503# will break.
504#
505core-$(CONFIG_SGI_IP32)		+= arch/mips/sgi-ip32/
506cflags-$(CONFIG_SGI_IP32)	+= -Iinclude/asm-mips/mach-ip32
507load-$(CONFIG_SGI_IP32)		+= 0xffffffff80004000
508
509#
510# Sibyte SB1250/BCM1480 SOC
511#
512# This is a LIB so that it links at the end, and initcalls are later
513# the sequence; but it is built as an object so that modules don't get
514# removed (as happens, even if they have __initcall/module_init)
515#
516core-$(CONFIG_SIBYTE_BCM112X)	+= arch/mips/sibyte/sb1250/
517core-$(CONFIG_SIBYTE_BCM112X)	+= arch/mips/sibyte/common/
518cflags-$(CONFIG_SIBYTE_BCM112X)	+= -Iinclude/asm-mips/mach-sibyte \
519			-DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
520
521core-$(CONFIG_SIBYTE_SB1250)	+= arch/mips/sibyte/sb1250/
522core-$(CONFIG_SIBYTE_SB1250)	+= arch/mips/sibyte/common/
523cflags-$(CONFIG_SIBYTE_SB1250)	+= -Iinclude/asm-mips/mach-sibyte \
524			-DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
525
526core-$(CONFIG_SIBYTE_BCM1x55)	+= arch/mips/sibyte/bcm1480/
527core-$(CONFIG_SIBYTE_BCM1x55)	+= arch/mips/sibyte/common/
528cflags-$(CONFIG_SIBYTE_BCM1x55)	+= -Iinclude/asm-mips/mach-sibyte \
529			-DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
530
531core-$(CONFIG_SIBYTE_BCM1x80)	+= arch/mips/sibyte/bcm1480/
532core-$(CONFIG_SIBYTE_BCM1x80)	+= arch/mips/sibyte/common/
533cflags-$(CONFIG_SIBYTE_BCM1x80)	+= -Iinclude/asm-mips/mach-sibyte \
534			-DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
535
536#
537# Sibyte BCM91120x (Carmel) board
538# Sibyte BCM91120C (CRhine) board
539# Sibyte BCM91125C (CRhone) board
540# Sibyte BCM91125E (Rhone) board
541# Sibyte SWARM board
542# Sibyte BCM91x80 (BigSur) board
543#
544libs-$(CONFIG_SIBYTE_CARMEL)	+= arch/mips/sibyte/swarm/
545load-$(CONFIG_SIBYTE_CARMEL)	:= 0xffffffff80100000
546libs-$(CONFIG_SIBYTE_CRHINE)	+= arch/mips/sibyte/swarm/
547load-$(CONFIG_SIBYTE_CRHINE)	:= 0xffffffff80100000
548libs-$(CONFIG_SIBYTE_CRHONE)	+= arch/mips/sibyte/swarm/
549load-$(CONFIG_SIBYTE_CRHONE)	:= 0xffffffff80100000
550libs-$(CONFIG_SIBYTE_RHONE)	+= arch/mips/sibyte/swarm/
551load-$(CONFIG_SIBYTE_RHONE)	:= 0xffffffff80100000
552libs-$(CONFIG_SIBYTE_SENTOSA)	+= arch/mips/sibyte/swarm/
553load-$(CONFIG_SIBYTE_SENTOSA)	:= 0xffffffff80100000
554libs-$(CONFIG_SIBYTE_SWARM)	+= arch/mips/sibyte/swarm/
555load-$(CONFIG_SIBYTE_SWARM)	:= 0xffffffff80100000
556libs-$(CONFIG_SIBYTE_BIGSUR)	+= arch/mips/sibyte/swarm/
557load-$(CONFIG_SIBYTE_BIGSUR)	:= 0xffffffff80100000
558
559#
560# Broadcom BCM47XX boards
561#
562core-$(CONFIG_BCM47XX)		+= arch/mips/bcm47xx/
563cflags-$(CONFIG_BCM47XX)	+= -Iinclude/asm-mips/mach-bcm47xx
564load-$(CONFIG_BCM47XX)		:= 0xffffffff80001000
565
566#
567# SNI RM
568#
569core-$(CONFIG_SNI_RM)		+= arch/mips/sni/
570cflags-$(CONFIG_SNI_RM)		+= -Iinclude/asm-mips/mach-rm
571load-$(CONFIG_SNI_RM)		+= 0xffffffff80600000
572all-$(CONFIG_SNI_RM)		:= vmlinux.ecoff
573
574#
575# Toshiba JMR-TX3927 board
576#
577core-$(CONFIG_TOSHIBA_JMR3927)	+= arch/mips/jmr3927/rbhma3100/ \
578				   arch/mips/jmr3927/common/
579cflags-$(CONFIG_TOSHIBA_JMR3927) += -Iinclude/asm-mips/mach-jmr3927
580load-$(CONFIG_TOSHIBA_JMR3927)	+= 0xffffffff80050000
581
582#
583# Toshiba RBTX4927 board or
584# Toshiba RBTX4937 board
585#
586core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/toshiba_rbtx4927/
587core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/common/
588cflags-$(CONFIG_TOSHIBA_RBTX4927) += -Iinclude/asm-mips/mach-tx49xx
589load-$(CONFIG_TOSHIBA_RBTX4927)	+= 0xffffffff80020000
590
591#
592# Toshiba RBTX4938 board
593#
594core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/toshiba_rbtx4938/
595core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/common/
596cflags-$(CONFIG_TOSHIBA_RBTX4938) += -Iinclude/asm-mips/mach-tx49xx
597load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
598
599cflags-y			+= -Iinclude/asm-mips/mach-generic
600drivers-$(CONFIG_PCI)		+= arch/mips/pci/
601
602ifdef CONFIG_32BIT
603ifdef CONFIG_CPU_LITTLE_ENDIAN
604JIFFIES			= jiffies_64
605else
606JIFFIES			= jiffies_64 + 4
607endif
608else
609JIFFIES			= jiffies_64
610endif
611
612#
613# Automatically detect the build format. By default we choose
614# the elf format according to the load address.
615# We can always force a build with a 64-bits symbol format by
616# passing 'KBUILD_SYM32=no' option to the make's command line.
617#
618ifdef CONFIG_64BIT
619  ifndef KBUILD_SYM32
620    ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0)
621      KBUILD_SYM32 = y
622    endif
623  endif
624
625  ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy)
626    cflags-y += -msym32 -DKBUILD_64BIT_SYM32
627  else
628    ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y)
629      $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32)
630    endif
631  endif
632endif
633
634KBUILD_AFLAGS	+= $(cflags-y)
635KBUILD_CFLAGS	+= $(cflags-y) \
636			-D"VMLINUX_LOAD_ADDRESS=$(load-y)"
637
638LDFLAGS			+= -m $(ld-emul)
639
640ifdef CONFIG_MIPS
641CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -xc /dev/null | \
642	egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \
643	sed -e 's/^\#define /-D/' -e "s/ /='/" -e "s/$$/'/")
644ifdef CONFIG_64BIT
645CHECKFLAGS		+= -m64
646endif
647endif
648
649OBJCOPYFLAGS		+= --remove-section=.reginfo
650
651#
652# Choosing incompatible machines durings configuration will result in
653# error messages during linking.  Select a default linkscript if
654# none has been choosen above.
655#
656
657CPPFLAGS_vmlinux.lds := \
658	$(KBUILD_CFLAGS) \
659	-D"LOADADDR=$(load-y)" \
660	-D"JIFFIES=$(JIFFIES)" \
661	-D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)"
662
663head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
664
665libs-y			+= arch/mips/lib/
666
667core-y			+= arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
668
669drivers-$(CONFIG_OPROFILE)	+= arch/mips/oprofile/
670
671ifdef CONFIG_LASAT
672rom.bin rom.sw: vmlinux
673	$(Q)$(MAKE) $(build)=arch/mips/lasat/image $@
674endif
675
676#
677# Some machines like the Indy need 32-bit ELF binaries for booting purposes.
678# Other need ECOFF, so we build a 32-bit ELF binary for them which we then
679# convert to ECOFF using elf2ecoff.
680#
681vmlinux.32: vmlinux
682	$(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
683
684#
685# The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
686# ELF files from 32-bit files by conversion.
687#
688vmlinux.64: vmlinux
689	$(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
690
691makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) $(1)
692
693all:	$(all-y)
694
695vmlinux.bin: $(vmlinux-32)
696	+@$(call makeboot,$@)
697
698vmlinux.ecoff: $(vmlinux-32)
699	+@$(call makeboot,$@)
700
701vmlinux.srec: $(vmlinux-32)
702	+@$(call makeboot,$@)
703
704CLEAN_FILES += vmlinux.ecoff \
705	       vmlinux.srec
706
707archprepare:
708ifdef CONFIG_MIPS32_N32
709	@echo '  Checking missing-syscalls for N32'
710	$(Q)$(MAKE) $(build)=. missing-syscalls EXTRA_CFLAGS="-mabi=n32"
711endif
712ifdef CONFIG_MIPS32_O32
713	@echo '  Checking missing-syscalls for O32'
714	$(Q)$(MAKE) $(build)=. missing-syscalls EXTRA_CFLAGS="-mabi=32"
715endif
716
717archclean:
718	@$(MAKE) $(clean)=arch/mips/boot
719	@$(MAKE) $(clean)=arch/mips/lasat
720
721define archhelp
722	echo '  vmlinux.ecoff        - ECOFF boot image'
723	echo '  vmlinux.bin          - Raw binary boot image'
724	echo '  vmlinux.srec         - SREC boot image'
725	echo
726	echo '  These will be default as apropriate for a configured platform.'
727endef
728
729CLEAN_FILES += vmlinux.32 \
730	       vmlinux.64 \
731	       vmlinux.ecoff
732