blob: 3d8dac681c6352de5aab10e7a19deff067ae24c3 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#
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
15as-option = $(shell if $(CC) $(CFLAGS) $(1) -Wa,-Z -c -o /dev/null \
16 -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; \
17 else echo "$(2)"; fi ;)
18
19cflags-y :=
20
21#
22# Select the object file format to substitute into the linker script.
23#
24ifdef CONFIG_CPU_LITTLE_ENDIAN
2532bit-tool-prefix = mipsel-linux-
2664bit-tool-prefix = mips64el-linux-
2732bit-bfd = elf32-tradlittlemips
2864bit-bfd = elf64-tradlittlemips
2932bit-emul = elf32ltsmip
3064bit-emul = elf64ltsmip
31else
3232bit-tool-prefix = mips-linux-
3364bit-tool-prefix = mips64-linux-
3432bit-bfd = elf32-tradbigmips
3564bit-bfd = elf64-tradbigmips
3632bit-emul = elf32btsmip
3764bit-emul = elf64btsmip
38endif
39
Ralf Baechle875d43e2005-09-03 15:56:16 -070040ifdef CONFIG_32BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -070041gcc-abi = 32
42tool-prefix = $(32bit-tool-prefix)
43UTS_MACHINE := mips
44endif
Ralf Baechle875d43e2005-09-03 15:56:16 -070045ifdef CONFIG_64BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -070046gcc-abi = 64
47tool-prefix = $(64bit-tool-prefix)
48UTS_MACHINE := mips64
49endif
50
51ifdef CONFIG_CROSSCOMPILE
52CROSS_COMPILE := $(tool-prefix)
53endif
54
Ralf Baechlefe00f942005-03-01 19:22:29 +000055CHECKFLAGS-y += -D__linux__ -D__mips__ \
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +090056 -D_MIPS_SZINT=32 \
Ralf Baechlefe00f942005-03-01 19:22:29 +000057 -D_ABIO32=1 \
58 -D_ABIN32=2 \
59 -D_ABI64=3
60CHECKFLAGS-$(CONFIG_32BIT) += -D_MIPS_SIM=_ABIO32 \
61 -D_MIPS_SZLONG=32 \
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +090062 -D_MIPS_SZPTR=32 \
Ralf Baechlefe00f942005-03-01 19:22:29 +000063 -D__PTRDIFF_TYPE__=int
64CHECKFLAGS-$(CONFIG_64BIT) += -m64 -D_MIPS_SIM=_ABI64 \
65 -D_MIPS_SZLONG=64 \
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +090066 -D_MIPS_SZPTR=64 \
Ralf Baechlefe00f942005-03-01 19:22:29 +000067 -D__PTRDIFF_TYPE__="long int"
68CHECKFLAGS-$(CONFIG_CPU_BIG_ENDIAN) += -D__MIPSEB__
69CHECKFLAGS-$(CONFIG_CPU_LITTLE_ENDIAN) += -D__MIPSEL__
70
71CHECKFLAGS = $(CHECKFLAGS-y)
72
Linus Torvalds1da177e2005-04-16 15:20:36 -070073ifdef CONFIG_BUILD_ELF64
74gas-abi = 64
75ld-emul = $(64bit-emul)
76vmlinux-32 = vmlinux.32
77vmlinux-64 = vmlinux
78else
79gas-abi = 32
80ld-emul = $(32bit-emul)
81vmlinux-32 = vmlinux
82vmlinux-64 = vmlinux.64
83
Ralf Baechle875d43e2005-09-03 15:56:16 -070084cflags-$(CONFIG_64BIT) += $(call cc-option,-mno-explicit-relocs)
Linus Torvalds1da177e2005-04-16 15:20:36 -070085endif
86
87#
88# GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel
89# code since it only slows down the whole thing. At some point we might make
90# use of global pointer optimizations but their use of $28 conflicts with
91# the current pointer optimization.
92#
93# The DECStation requires an ECOFF kernel for remote booting, other MIPS
94# machines may also. Since BFD is incredibly buggy with respect to
95# crossformat linking we rely on the elf2ecoff tool for format conversion.
96#
Linus Torvalds1da177e2005-04-16 15:20:36 -070097cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
Ralf Baechle6218cf42006-03-08 17:14:49 +000098cflags-y += -msoft-float
Thiemo Seufer9f83d832005-02-21 11:22:15 +000099LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
Linus Torvalds1da177e2005-04-16 15:20:36 -0700100MODFLAGS += -mlong-calls
101
Thiemo Seuferf425a6d2005-07-07 09:19:31 +0000102#
103# We explicitly add the endianness specifier if needed, this allows
104# to compile kernels with a toolchain for the other endianness. We
105# carefully avoid to add it redundantly because gcc 3.3/3.4 complains
106# when fed the toolchain default!
107#
Thiemo Seufer85f14bf2005-07-07 11:42:49 +0000108cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB)
109cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL)
Thiemo Seuferf425a6d2005-07-07 09:19:31 +0000110
Ralf Baechle9007c9a2006-03-18 16:59:31 +0000111cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \
112 -fno-omit-frame-pointer
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113
114#
115# Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>)
116#
117# <cpu0>,<isa0> -- preferred CPU and ISA designations (may require
118# recent tools)
119# <cpu1>,<isa1> -- fallback CPU and ISA designations (have to work
120# with up to the oldest supported tools)
121# <isa2> -- an ISA designation used as an ABI selector for
122# gcc versions that do not support "-mabi=32"
123# (depending on the CPU type, either "mips1" or
124# "mips2")
125#
126set_gccflags = $(shell \
127while :; do \
128 cpu=$(1); isa=-$(2); \
129 for gcc_opt in -march= -mcpu=; do \
130 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
131 -xc /dev/null > /dev/null 2>&1 && \
132 break 2; \
133 done; \
134 cpu=$(3); isa=-$(4); \
135 for gcc_opt in -march= -mcpu=; do \
136 $(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
137 -xc /dev/null > /dev/null 2>&1 && \
138 break 2; \
139 done; \
140 break; \
141done; \
142gcc_abi=-mabi=$(gcc-abi); gcc_cpu=$$cpu; \
143if $(CC) $$gcc_abi -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then \
144 gcc_isa=$$isa; \
145else \
146 gcc_abi=; gcc_isa=-$(5); \
147fi; \
148gas_abi=-Wa,-$(gcc-abi); gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \
149while :; do \
150 for gas_opt in -Wa,-march= -Wa,-mcpu=; do \
151 $(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \
152 -o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \
153 break 2; \
154 done; \
155 gas_abi=; gas_opt=; gas_cpu=; gas_isa=; \
156 break; \
157done; \
158if test "$(gcc-abi)" != "$(gas-abi)"; then \
159 gas_abi="-Wa,-$(gas-abi) -Wa,-mgp$(gcc-abi)"; \
160fi; \
161if test "$$gcc_opt" = -march= && test -n "$$gcc_abi"; then \
162 $(CC) $$gcc_abi $$gcc_opt$$gcc_cpu -S -o /dev/null \
163 -xc /dev/null > /dev/null 2>&1 && \
164 gcc_isa=; \
165fi; \
166echo $$gcc_abi $$gcc_opt$$gcc_cpu $$gcc_isa $$gas_abi $$gas_opt$$gas_cpu $$gas_isa)
167
168#
169# CPU-dependent compiler/assembler options for optimization.
170#
171cflags-$(CONFIG_CPU_R3000) += \
172 $(call set_gccflags,r3000,mips1,r3000,mips1,mips1)
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900173CHECKFLAGS-$(CONFIG_CPU_R3000) += -D_MIPS_ISA=_MIPS_ISA_MIPS1
Linus Torvalds1da177e2005-04-16 15:20:36 -0700174
175cflags-$(CONFIG_CPU_TX39XX) += \
176 $(call set_gccflags,r3900,mips1,r3000,mips1,mips1)
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900177CHECKFLAGS-$(CONFIG_CPU_TX39XX) += -D_MIPS_ISA=_MIPS_ISA_MIPS1
Linus Torvalds1da177e2005-04-16 15:20:36 -0700178
179cflags-$(CONFIG_CPU_R6000) += \
180 $(call set_gccflags,r6000,mips2,r6000,mips2,mips2) \
181 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900182CHECKFLAGS-$(CONFIG_CPU_R6000) += -D_MIPS_ISA=_MIPS_ISA_MIPS2
Linus Torvalds1da177e2005-04-16 15:20:36 -0700183
184cflags-$(CONFIG_CPU_R4300) += \
185 $(call set_gccflags,r4300,mips3,r4300,mips3,mips2) \
186 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900187CHECKFLAGS-$(CONFIG_CPU_R4300) += -D_MIPS_ISA=_MIPS_ISA_MIPS3
Linus Torvalds1da177e2005-04-16 15:20:36 -0700188
189cflags-$(CONFIG_CPU_VR41XX) += \
190 $(call set_gccflags,r4100,mips3,r4600,mips3,mips2) \
191 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900192CHECKFLAGS-$(CONFIG_CPU_VR41XX) += -D_MIPS_ISA=_MIPS_ISA_MIPS3
Linus Torvalds1da177e2005-04-16 15:20:36 -0700193
194cflags-$(CONFIG_CPU_R4X00) += \
195 $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \
196 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900197CHECKFLAGS-$(CONFIG_CPU_R4X00) += -D_MIPS_ISA=_MIPS_ISA_MIPS3
Linus Torvalds1da177e2005-04-16 15:20:36 -0700198
199cflags-$(CONFIG_CPU_TX49XX) += \
200 $(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \
201 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900202CHECKFLAGS-$(CONFIG_CPU_TX49XX) += -D_MIPS_ISA=_MIPS_ISA_MIPS3
Linus Torvalds1da177e2005-04-16 15:20:36 -0700203
Ralf Baechle6e760c82005-07-06 12:08:11 +0000204cflags-$(CONFIG_CPU_MIPS32_R1) += \
Linus Torvalds1da177e2005-04-16 15:20:36 -0700205 $(call set_gccflags,mips32,mips32,r4600,mips3,mips2) \
206 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900207CHECKFLAGS-$(CONFIG_CPU_MIPS32_R1) += -D_MIPS_ISA=_MIPS_ISA_MIPS32
Linus Torvalds1da177e2005-04-16 15:20:36 -0700208
Ralf Baechle079ef8b2005-07-12 14:56:53 +0000209cflags-$(CONFIG_CPU_MIPS32_R2) += \
210 $(call set_gccflags,mips32r2,mips32r2,r4600,mips3,mips2) \
211 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900212CHECKFLAGS-$(CONFIG_CPU_MIPS32_R2) += -D_MIPS_ISA=_MIPS_ISA_MIPS32
Ralf Baechle079ef8b2005-07-12 14:56:53 +0000213
Ralf Baechle6e760c82005-07-06 12:08:11 +0000214cflags-$(CONFIG_CPU_MIPS64_R1) += \
Linus Torvalds1da177e2005-04-16 15:20:36 -0700215 $(call set_gccflags,mips64,mips64,r4600,mips3,mips2) \
216 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900217CHECKFLAGS-$(CONFIG_CPU_MIPS64_R1) += -D_MIPS_ISA=_MIPS_ISA_MIPS64
Linus Torvalds1da177e2005-04-16 15:20:36 -0700218
Ralf Baechle079ef8b2005-07-12 14:56:53 +0000219cflags-$(CONFIG_CPU_MIPS64_R2) += \
220 $(call set_gccflags,mips64r2,mips64r2,r4600,mips3,mips2) \
221 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900222CHECKFLAGS-$(CONFIG_CPU_MIPS64_R2) += -D_MIPS_ISA=_MIPS_ISA_MIPS64
Ralf Baechle079ef8b2005-07-12 14:56:53 +0000223
Linus Torvalds1da177e2005-04-16 15:20:36 -0700224cflags-$(CONFIG_CPU_R5000) += \
225 $(call set_gccflags,r5000,mips4,r5000,mips4,mips2) \
Ralf Baechle42a3b4f2005-09-03 15:56:17 -0700226 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900227CHECKFLAGS-$(CONFIG_CPU_R5000) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700228
229cflags-$(CONFIG_CPU_R5432) += \
230 $(call set_gccflags,r5400,mips4,r5000,mips4,mips2) \
231 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900232CHECKFLAGS-$(CONFIG_CPU_R5432) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700233
234cflags-$(CONFIG_CPU_NEVADA) += \
235 $(call set_gccflags,rm5200,mips4,r5000,mips4,mips2) \
236 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900237CHECKFLAGS-$(CONFIG_CPU_NEVADA) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700238
239cflags-$(CONFIG_CPU_RM7000) += \
240 $(call set_gccflags,rm7000,mips4,r5000,mips4,mips2) \
241 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900242CHECKFLAGS-$(CONFIG_CPU_RM7000) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700243
244cflags-$(CONFIG_CPU_RM9000) += \
245 $(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \
246 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900247CHECKFLAGS-$(CONFIG_CPU_RM9000) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700248
Pete Popovbdf21b12005-07-14 17:47:57 +0000249
Linus Torvalds1da177e2005-04-16 15:20:36 -0700250cflags-$(CONFIG_CPU_SB1) += \
251 $(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \
252 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900253CHECKFLAGS-$(CONFIG_CPU_SB1) += -D_MIPS_ISA=_MIPS_ISA_MIPS64
Linus Torvalds1da177e2005-04-16 15:20:36 -0700254
255cflags-$(CONFIG_CPU_R8000) += \
256 $(call set_gccflags,r8000,mips4,r8000,mips4,mips2) \
257 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900258CHECKFLAGS-$(CONFIG_CPU_R8000) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700259
260cflags-$(CONFIG_CPU_R10000) += \
261 $(call set_gccflags,r10000,mips4,r8000,mips4,mips2) \
262 -Wa,--trap
Atsushi Nemotoc315a2b2006-01-29 02:31:17 +0900263CHECKFLAGS-$(CONFIG_CPU_R10000) += -D_MIPS_ISA=_MIPS_ISA_MIPS4
Linus Torvalds1da177e2005-04-16 15:20:36 -0700264
265ifdef CONFIG_CPU_SB1
266ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
267MODFLAGS += -msb1-pass1-workarounds
268endif
269endif
270
271#
272# Firmware support
273#
274libs-$(CONFIG_ARC) += arch/mips/arc/
275libs-$(CONFIG_SIBYTE_CFE) += arch/mips/sibyte/cfe/
276
277#
278# Board-dependent options and extra files
279#
280
281#
282# Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
283#
284core-$(CONFIG_MACH_JAZZ) += arch/mips/jazz/
285cflags-$(CONFIG_MACH_JAZZ) += -Iinclude/asm-mips/mach-jazz
286load-$(CONFIG_MACH_JAZZ) += 0xffffffff80080000
287
288#
289# Common Alchemy Au1x00 stuff
290#
291core-$(CONFIG_SOC_AU1X00) += arch/mips/au1000/common/
292cflags-$(CONFIG_SOC_AU1X00) += -Iinclude/asm-mips/mach-au1x00
293
294#
295# AMD Alchemy Pb1000 eval board
296#
297libs-$(CONFIG_MIPS_PB1000) += arch/mips/au1000/pb1000/
298cflags-$(CONFIG_MIPS_PB1000) += -Iinclude/asm-mips/mach-pb1x00
299load-$(CONFIG_MIPS_PB1000) += 0xffffffff80100000
300
301#
302# AMD Alchemy Pb1100 eval board
303#
304libs-$(CONFIG_MIPS_PB1100) += arch/mips/au1000/pb1100/
305cflags-$(CONFIG_MIPS_PB1100) += -Iinclude/asm-mips/mach-pb1x00
306load-$(CONFIG_MIPS_PB1100) += 0xffffffff80100000
307
308#
309# AMD Alchemy Pb1500 eval board
310#
311libs-$(CONFIG_MIPS_PB1500) += arch/mips/au1000/pb1500/
312cflags-$(CONFIG_MIPS_PB1500) += -Iinclude/asm-mips/mach-pb1x00
313load-$(CONFIG_MIPS_PB1500) += 0xffffffff80100000
314
315#
316# AMD Alchemy Pb1550 eval board
317#
318libs-$(CONFIG_MIPS_PB1550) += arch/mips/au1000/pb1550/
319cflags-$(CONFIG_MIPS_PB1550) += -Iinclude/asm-mips/mach-pb1x00
320load-$(CONFIG_MIPS_PB1550) += 0xffffffff80100000
321
322#
Pete Popove3ad1c22005-03-01 06:33:16 +0000323# AMD Alchemy Pb1200 eval board
324#
325libs-$(CONFIG_MIPS_PB1200) += arch/mips/au1000/pb1200/
326cflags-$(CONFIG_MIPS_PB1200) += -Iinclude/asm-mips/mach-pb1x00
327load-$(CONFIG_MIPS_PB1200) += 0xffffffff80100000
328
329#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700330# AMD Alchemy Db1000 eval board
331#
332libs-$(CONFIG_MIPS_DB1000) += arch/mips/au1000/db1x00/
333cflags-$(CONFIG_MIPS_DB1000) += -Iinclude/asm-mips/mach-db1x00
334load-$(CONFIG_MIPS_DB1000) += 0xffffffff80100000
335
336#
337# AMD Alchemy Db1100 eval board
338#
339libs-$(CONFIG_MIPS_DB1100) += arch/mips/au1000/db1x00/
340cflags-$(CONFIG_MIPS_DB1100) += -Iinclude/asm-mips/mach-db1x00
341load-$(CONFIG_MIPS_DB1100) += 0xffffffff80100000
342
343#
344# AMD Alchemy Db1500 eval board
345#
346libs-$(CONFIG_MIPS_DB1500) += arch/mips/au1000/db1x00/
347cflags-$(CONFIG_MIPS_DB1500) += -Iinclude/asm-mips/mach-db1x00
348load-$(CONFIG_MIPS_DB1500) += 0xffffffff80100000
349
350#
351# AMD Alchemy Db1550 eval board
352#
353libs-$(CONFIG_MIPS_DB1550) += arch/mips/au1000/db1x00/
354cflags-$(CONFIG_MIPS_DB1550) += -Iinclude/asm-mips/mach-db1x00
355load-$(CONFIG_MIPS_DB1550) += 0xffffffff80100000
356
357#
Pete Popove3ad1c22005-03-01 06:33:16 +0000358# AMD Alchemy Db1200 eval board
359#
360libs-$(CONFIG_MIPS_DB1200) += arch/mips/au1000/pb1200/
361cflags-$(CONFIG_MIPS_DB1200) += -Iinclude/asm-mips/mach-db1x00
362load-$(CONFIG_MIPS_DB1200) += 0xffffffff80100000
363
364#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700365# AMD Alchemy Bosporus eval board
366#
367libs-$(CONFIG_MIPS_BOSPORUS) += arch/mips/au1000/db1x00/
368cflags-$(CONFIG_MIPS_BOSPORUS) += -Iinclude/asm-mips/mach-db1x00
369load-$(CONFIG_MIPS_BOSPORUS) += 0xffffffff80100000
370
371#
372# AMD Alchemy Mirage eval board
373#
374libs-$(CONFIG_MIPS_MIRAGE) += arch/mips/au1000/db1x00/
375cflags-$(CONFIG_MIPS_MIRAGE) += -Iinclude/asm-mips/mach-db1x00
376load-$(CONFIG_MIPS_MIRAGE) += 0xffffffff80100000
377
378#
379# 4G-Systems eval board
380#
381libs-$(CONFIG_MIPS_MTX1) += arch/mips/au1000/mtx-1/
382load-$(CONFIG_MIPS_MTX1) += 0xffffffff80100000
383
384#
385# MyCable eval board
386#
387libs-$(CONFIG_MIPS_XXS1500) += arch/mips/au1000/xxs1500/
388load-$(CONFIG_MIPS_XXS1500) += 0xffffffff80100000
389
390#
391# Cobalt Server
392#
393core-$(CONFIG_MIPS_COBALT) += arch/mips/cobalt/
Ralf Baechle11ed6d52006-01-18 23:26:43 +0000394cflags-$(CONFIG_MIPS_COBALT) += -Iinclude/asm-mips/mach-cobalt
Linus Torvalds1da177e2005-04-16 15:20:36 -0700395load-$(CONFIG_MIPS_COBALT) += 0xffffffff80080000
396
397#
398# DECstation family
399#
400core-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/
401cflags-$(CONFIG_MACH_DECSTATION)+= -Iinclude/asm-mips/mach-dec
402libs-$(CONFIG_MACH_DECSTATION) += arch/mips/dec/prom/
403load-$(CONFIG_MACH_DECSTATION) += 0xffffffff80040000
404CLEAN_FILES += drivers/tc/lk201-map.c
405
406#
407# Galileo EV64120 Board
408#
409core-$(CONFIG_MIPS_EV64120) += arch/mips/gt64120/ev64120/
410core-$(CONFIG_MIPS_EV64120) += arch/mips/gt64120/common/
411cflags-$(CONFIG_MIPS_EV64120) += -Iinclude/asm-mips/mach-ev64120
412load-$(CONFIG_MIPS_EV64120) += 0xffffffff80100000
413
414#
415# Galileo EV96100 Board
416#
417core-$(CONFIG_MIPS_EV96100) += arch/mips/galileo-boards/ev96100/
418cflags-$(CONFIG_MIPS_EV96100) += -Iinclude/asm-mips/mach-ev96100
419load-$(CONFIG_MIPS_EV96100) += 0xffffffff80100000
420
421#
422# Globespan IVR eval board with QED 5231 CPU
423#
424core-$(CONFIG_ITE_BOARD_GEN) += arch/mips/ite-boards/generic/
425core-$(CONFIG_MIPS_IVR) += arch/mips/ite-boards/ivr/
426load-$(CONFIG_MIPS_IVR) += 0xffffffff80100000
427
428#
429# ITE 8172 eval board with QED 5231 CPU
430#
431core-$(CONFIG_MIPS_ITE8172) += arch/mips/ite-boards/qed-4n-s01b/
432load-$(CONFIG_MIPS_ITE8172) += 0xffffffff80100000
433
434#
435# For all MIPS, Inc. eval boards
436#
437core-$(CONFIG_MIPS_BOARDS_GEN) += arch/mips/mips-boards/generic/
438
439#
440# MIPS Atlas board
441#
442core-$(CONFIG_MIPS_ATLAS) += arch/mips/mips-boards/atlas/
443cflags-$(CONFIG_MIPS_ATLAS) += -Iinclude/asm-mips/mach-atlas
444cflags-$(CONFIG_MIPS_ATLAS) += -Iinclude/asm-mips/mach-mips
445load-$(CONFIG_MIPS_ATLAS) += 0xffffffff80100000
446
447#
448# MIPS Malta board
449#
450core-$(CONFIG_MIPS_MALTA) += arch/mips/mips-boards/malta/
451cflags-$(CONFIG_MIPS_MALTA) += -Iinclude/asm-mips/mach-mips
452load-$(CONFIG_MIPS_MALTA) += 0xffffffff80100000
453
454#
455# MIPS SEAD board
456#
457core-$(CONFIG_MIPS_SEAD) += arch/mips/mips-boards/sead/
458load-$(CONFIG_MIPS_SEAD) += 0xffffffff80100000
459
460#
Ralf Baechlec78cbf42005-09-30 13:59:37 +0100461# MIPS SIM
462#
463core-$(CONFIG_MIPS_SIM) += arch/mips/mips-boards/sim/
464cflags-$(CONFIG_MIPS_SIM) += -Iinclude/asm-mips/mach-sim
465load-$(CONFIG_MIPS_SIM) += 0x80100000
466
467#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700468# Momentum Ocelot board
469#
470# The Ocelot setup.o must be linked early - it does the ioremap() for the
471# mips_io_port_base.
472#
473core-$(CONFIG_MOMENCO_OCELOT) += arch/mips/gt64120/common/ \
474 arch/mips/gt64120/momenco_ocelot/
475cflags-$(CONFIG_MOMENCO_OCELOT) += -Iinclude/asm-mips/mach-ocelot
476load-$(CONFIG_MOMENCO_OCELOT) += 0xffffffff80100000
477
478#
479# Momentum Ocelot-G board
480#
481# The Ocelot-G setup.o must be linked early - it does the ioremap() for the
482# mips_io_port_base.
483#
484core-$(CONFIG_MOMENCO_OCELOT_G) += arch/mips/momentum/ocelot_g/
485load-$(CONFIG_MOMENCO_OCELOT_G) += 0xffffffff80100000
486
487#
488# Momentum Ocelot-C and -CS boards
489#
490# The Ocelot-C[S] setup.o must be linked early - it does the ioremap() for the
491# mips_io_port_base.
492core-$(CONFIG_MOMENCO_OCELOT_C) += arch/mips/momentum/ocelot_c/
493load-$(CONFIG_MOMENCO_OCELOT_C) += 0xffffffff80100000
494
495#
496# PMC-Sierra Yosemite
497#
498core-$(CONFIG_PMC_YOSEMITE) += arch/mips/pmc-sierra/yosemite/
499cflags-$(CONFIG_PMC_YOSEMITE) += -Iinclude/asm-mips/mach-yosemite
500load-$(CONFIG_PMC_YOSEMITE) += 0xffffffff80100000
501
Ralf Baechle07119622005-09-03 15:56:11 -0700502# Qemu simulating MIPS32 4Kc
503#
504core-$(CONFIG_QEMU) += arch/mips/qemu/
505cflags-$(CONFIG_QEMU) += -Iinclude/asm-mips/mach-qemu
506load-$(CONFIG_QEMU) += 0xffffffff80010000
507
Linus Torvalds1da177e2005-04-16 15:20:36 -0700508#
509# Momentum Ocelot-3
510#
511core-$(CONFIG_MOMENCO_OCELOT_3) += arch/mips/momentum/ocelot_3/
512cflags-$(CONFIG_MOMENCO_OCELOT_3) += -Iinclude/asm-mips/mach-ocelot3
513load-$(CONFIG_MOMENCO_OCELOT_3) += 0xffffffff80100000
514
515#
516# Momentum Jaguar ATX
517#
518core-$(CONFIG_MOMENCO_JAGUAR_ATX) += arch/mips/momentum/jaguar_atx/
519cflags-$(CONFIG_MOMENCO_JAGUAR_ATX) += -Iinclude/asm-mips/mach-ja
520#ifdef CONFIG_JAGUAR_DMALOW
521#load-$(CONFIG_MOMENCO_JAGUAR_ATX) += 0xffffffff88000000
522#else
523load-$(CONFIG_MOMENCO_JAGUAR_ATX) += 0xffffffff80100000
524#endif
525
526#
527# NEC DDB
528#
529core-$(CONFIG_DDB5XXX_COMMON) += arch/mips/ddb5xxx/common/
530
531#
532# NEC DDB Vrc-5074
533#
534core-$(CONFIG_DDB5074) += arch/mips/ddb5xxx/ddb5074/
535load-$(CONFIG_DDB5074) += 0xffffffff80080000
536
537#
538# NEC DDB Vrc-5476
539#
540core-$(CONFIG_DDB5476) += arch/mips/ddb5xxx/ddb5476/
541load-$(CONFIG_DDB5476) += 0xffffffff80080000
542
543#
544# NEC DDB Vrc-5477
545#
546core-$(CONFIG_DDB5477) += arch/mips/ddb5xxx/ddb5477/
547load-$(CONFIG_DDB5477) += 0xffffffff80100000
548
549core-$(CONFIG_LASAT) += arch/mips/lasat/
550cflags-$(CONFIG_LASAT) += -Iinclude/asm-mips/mach-lasat
551load-$(CONFIG_LASAT) += 0xffffffff80000000
552
553#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700554# Common VR41xx
555#
556core-$(CONFIG_MACH_VR41XX) += arch/mips/vr41xx/common/
557cflags-$(CONFIG_MACH_VR41XX) += -Iinclude/asm-mips/mach-vr41xx
558
559#
560# NEC VR4133
561#
562core-$(CONFIG_NEC_CMBVR4133) += arch/mips/vr41xx/nec-cmbvr4133/
563load-$(CONFIG_NEC_CMBVR4133) += 0xffffffff80100000
564
565#
566# ZAO Networks Capcella (VR4131)
567#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700568load-$(CONFIG_ZAO_CAPCELLA) += 0xffffffff80000000
569
570#
571# Victor MP-C303/304 (VR4122)
572#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700573load-$(CONFIG_VICTOR_MPC30X) += 0xffffffff80001000
574
575#
576# IBM WorkPad z50 (VR4121)
577#
578core-$(CONFIG_IBM_WORKPAD) += arch/mips/vr41xx/ibm-workpad/
579load-$(CONFIG_IBM_WORKPAD) += 0xffffffff80004000
580
581#
582# CASIO CASSIPEIA E-55/65 (VR4111)
583#
584core-$(CONFIG_CASIO_E55) += arch/mips/vr41xx/casio-e55/
585load-$(CONFIG_CASIO_E55) += 0xffffffff80004000
586
587#
Yoichi Yuasa63b799f2005-09-03 15:56:13 -0700588# TANBAC VR4131 multichip module(TB0225) and TANBAC VR4131DIMM(TB0229) (VR4131)
Linus Torvalds1da177e2005-04-16 15:20:36 -0700589#
Yoichi Yuasa63b799f2005-09-03 15:56:13 -0700590load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000
Linus Torvalds1da177e2005-04-16 15:20:36 -0700591
592#
Pete Popovbdf21b12005-07-14 17:47:57 +0000593# Common Philips PNX8550
594#
595core-$(CONFIG_SOC_PNX8550) += arch/mips/philips/pnx8550/common/
596cflags-$(CONFIG_SOC_PNX8550) += -Iinclude/asm-mips/mach-pnx8550
597
598#
599# Philips PNX8550 JBS board
600#
601libs-$(CONFIG_PNX8550_JBS) += arch/mips/philips/pnx8550/jbs/
602#cflags-$(CONFIG_PNX8550_JBS) += -Iinclude/asm-mips/mach-pnx8550
603load-$(CONFIG_PNX8550_JBS) += 0xffffffff80060000
604
605#
Linus Torvalds1da177e2005-04-16 15:20:36 -0700606# SGI IP22 (Indy/Indigo2)
607#
608# Set the load address to >= 0xffffffff88069000 if you want to leave space for
609# symmon, 0xffffffff80002000 for production kernels. Note that the value must
610# be aligned to a multiple of the kernel stack size or the handling of the
611# current variable will break so for 64-bit kernels we have to raise the start
612# address by 8kb.
613#
614core-$(CONFIG_SGI_IP22) += arch/mips/sgi-ip22/
615cflags-$(CONFIG_SGI_IP22) += -Iinclude/asm-mips/mach-ip22
Ralf Baechle875d43e2005-09-03 15:56:16 -0700616ifdef CONFIG_32BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700617load-$(CONFIG_SGI_IP22) += 0xffffffff88002000
618endif
Ralf Baechle875d43e2005-09-03 15:56:16 -0700619ifdef CONFIG_64BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700620load-$(CONFIG_SGI_IP22) += 0xffffffff88004000
621endif
622
623#
624# SGI-IP27 (Origin200/2000)
625#
626# Set the load address to >= 0xc000000000300000 if you want to leave space for
627# symmon, 0xc00000000001c000 for production kernels. Note that the value must
628# be 16kb aligned or the handling of the current variable will break.
629#
630ifdef CONFIG_SGI_IP27
631core-$(CONFIG_SGI_IP27) += arch/mips/sgi-ip27/
632cflags-$(CONFIG_SGI_IP27) += -Iinclude/asm-mips/mach-ip27
633ifdef CONFIG_BUILD_ELF64
634ifdef CONFIG_MAPPED_KERNEL
635load-$(CONFIG_SGI_IP27) += 0xc00000004001c000
636OBJCOPYFLAGS := --change-addresses=0x3fffffff80000000
637dataoffset-$(CONFIG_SGI_IP27) += 0x01000000
638else
639load-$(CONFIG_SGI_IP27) += 0xa80000000001c000
640OBJCOPYFLAGS := --change-addresses=0x57ffffff80000000
641endif
642else
643ifdef CONFIG_MAPPED_KERNEL
644load-$(CONFIG_SGI_IP27) += 0xffffffffc001c000
645OBJCOPYFLAGS := --change-addresses=0xc000000080000000
646dataoffset-$(CONFIG_SGI_IP27) += 0x01000000
647else
648load-$(CONFIG_SGI_IP27) += 0xffffffff8001c000
649OBJCOPYFLAGS := --change-addresses=0xa800000080000000
650endif
651endif
652endif
653
654#
655# SGI-IP32 (O2)
656#
657# Set the load address to >= 80069000 if you want to leave space for symmon,
658# 0xffffffff80004000 for production kernels. Note that the value must be aligned to
659# a multiple of the kernel stack size or the handling of the current variable
660# will break.
661#
662core-$(CONFIG_SGI_IP32) += arch/mips/sgi-ip32/
663cflags-$(CONFIG_SGI_IP32) += -Iinclude/asm-mips/mach-ip32
664load-$(CONFIG_SGI_IP32) += 0xffffffff80004000
665
666#
667# Sibyte SB1250 SOC
668#
669# This is a LIB so that it links at the end, and initcalls are later
670# the sequence; but it is built as an object so that modules don't get
671# removed (as happens, even if they have __initcall/module_init)
672#
673core-$(CONFIG_SIBYTE_BCM112X) += arch/mips/sibyte/sb1250/
Andrew Isaacsonf137e462005-10-19 23:56:38 -0700674cflags-$(CONFIG_SIBYTE_BCM112X) += -Iinclude/asm-mips/mach-sibyte \
675 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700676
677core-$(CONFIG_SIBYTE_SB1250) += arch/mips/sibyte/sb1250/
Andrew Isaacsonf137e462005-10-19 23:56:38 -0700678cflags-$(CONFIG_SIBYTE_SB1250) += -Iinclude/asm-mips/mach-sibyte \
679 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1250_112x_ALL
680
681core-$(CONFIG_SIBYTE_BCM1x55) += arch/mips/sibyte/bcm1480/
682cflags-$(CONFIG_SIBYTE_BCM1x55) += -Iinclude/asm-mips/mach-sibyte \
683 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
684
685core-$(CONFIG_SIBYTE_BCM1x80) += arch/mips/sibyte/bcm1480/
686cflags-$(CONFIG_SIBYTE_BCM1x80) += -Iinclude/asm-mips/mach-sibyte \
687 -DSIBYTE_HDR_FEATURES=SIBYTE_HDR_FMASK_1480_ALL
Linus Torvalds1da177e2005-04-16 15:20:36 -0700688
689#
690# Sibyte BCM91120x (Carmel) board
691# Sibyte BCM91120C (CRhine) board
692# Sibyte BCM91125C (CRhone) board
693# Sibyte BCM91125E (Rhone) board
694# Sibyte SWARM board
Andrew Isaacson9a6dcea2005-10-19 23:57:11 -0700695# Sibyte BCM91x80 (BigSur) board
Linus Torvalds1da177e2005-04-16 15:20:36 -0700696#
697libs-$(CONFIG_SIBYTE_CARMEL) += arch/mips/sibyte/swarm/
698load-$(CONFIG_SIBYTE_CARMEL) := 0xffffffff80100000
699libs-$(CONFIG_SIBYTE_CRHINE) += arch/mips/sibyte/swarm/
700load-$(CONFIG_SIBYTE_CRHINE) := 0xffffffff80100000
701libs-$(CONFIG_SIBYTE_CRHONE) += arch/mips/sibyte/swarm/
702load-$(CONFIG_SIBYTE_CRHONE) := 0xffffffff80100000
703libs-$(CONFIG_SIBYTE_RHONE) += arch/mips/sibyte/swarm/
704load-$(CONFIG_SIBYTE_RHONE) := 0xffffffff80100000
705libs-$(CONFIG_SIBYTE_SENTOSA) += arch/mips/sibyte/swarm/
706load-$(CONFIG_SIBYTE_SENTOSA) := 0xffffffff80100000
707libs-$(CONFIG_SIBYTE_SWARM) += arch/mips/sibyte/swarm/
708load-$(CONFIG_SIBYTE_SWARM) := 0xffffffff80100000
Andrew Isaacson9a6dcea2005-10-19 23:57:11 -0700709libs-$(CONFIG_SIBYTE_BIGSUR) += arch/mips/sibyte/swarm/
710load-$(CONFIG_SIBYTE_BIGSUR) := 0xffffffff80100000
Linus Torvalds1da177e2005-04-16 15:20:36 -0700711
712#
713# SNI RM200 PCI
714#
715core-$(CONFIG_SNI_RM200_PCI) += arch/mips/sni/
716cflags-$(CONFIG_SNI_RM200_PCI) += -Iinclude/asm-mips/mach-rm200
717load-$(CONFIG_SNI_RM200_PCI) += 0xffffffff80600000
718
719#
720# Toshiba JMR-TX3927 board
721#
722core-$(CONFIG_TOSHIBA_JMR3927) += arch/mips/jmr3927/rbhma3100/ \
723 arch/mips/jmr3927/common/
Ralf Baechle5135b0c2005-11-15 12:19:46 +0000724cflags-$(CONFIG_TOSHIBA_JMR3927) += -Iinclude/asm-mips/mach-jmr3927
Linus Torvalds1da177e2005-04-16 15:20:36 -0700725load-$(CONFIG_TOSHIBA_JMR3927) += 0xffffffff80050000
726
727#
728# Toshiba RBTX4927 board or
729# Toshiba RBTX4937 board
730#
731core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/toshiba_rbtx4927/
732core-$(CONFIG_TOSHIBA_RBTX4927) += arch/mips/tx4927/common/
733load-$(CONFIG_TOSHIBA_RBTX4927) += 0xffffffff80020000
734
Ralf Baechle23fbee92005-07-25 22:45:45 +0000735#
736# Toshiba RBTX4938 board
737#
738core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/toshiba_rbtx4938/
739core-$(CONFIG_TOSHIBA_RBTX4938) += arch/mips/tx4938/common/
740load-$(CONFIG_TOSHIBA_RBTX4938) += 0xffffffff80100000
741
Linus Torvalds1da177e2005-04-16 15:20:36 -0700742cflags-y += -Iinclude/asm-mips/mach-generic
743drivers-$(CONFIG_PCI) += arch/mips/pci/
744
Ralf Baechle875d43e2005-09-03 15:56:16 -0700745ifdef CONFIG_32BIT
Linus Torvalds1da177e2005-04-16 15:20:36 -0700746ifdef CONFIG_CPU_LITTLE_ENDIAN
747JIFFIES = jiffies_64
748else
749JIFFIES = jiffies_64 + 4
750endif
751else
752JIFFIES = jiffies_64
753endif
754
755AFLAGS += $(cflags-y)
756CFLAGS += $(cflags-y)
757
758LDFLAGS += -m $(ld-emul)
759
760OBJCOPYFLAGS += --remove-section=.reginfo
761
762#
763# Choosing incompatible machines durings configuration will result in
764# error messages during linking. Select a default linkscript if
765# none has been choosen above.
766#
767
768CPPFLAGS_vmlinux.lds := \
769 $(CFLAGS) \
770 -D"LOADADDR=$(load-y)" \
771 -D"JIFFIES=$(JIFFIES)" \
772 -D"DATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0)"
773
774head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
775
776libs-y += arch/mips/lib/
Ralf Baechle875d43e2005-09-03 15:56:16 -0700777libs-$(CONFIG_32BIT) += arch/mips/lib-32/
778libs-$(CONFIG_64BIT) += arch/mips/lib-64/
Linus Torvalds1da177e2005-04-16 15:20:36 -0700779
780core-y += arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
781
782drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/
783
784ifdef CONFIG_LASAT
785rom.bin rom.sw: vmlinux
Sam Ravnborg7c6b1552005-07-25 12:51:08 +0000786 $(Q)$(MAKE) $(build)=arch/mips/lasat/image $@
Linus Torvalds1da177e2005-04-16 15:20:36 -0700787endif
788
789#
790# Some machines like the Indy need 32-bit ELF binaries for booting purposes.
791# Other need ECOFF, so we build a 32-bit ELF binary for them which we then
792# convert to ECOFF using elf2ecoff.
793#
794vmlinux.32: vmlinux
795 $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@
796
797#
798# The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
799# ELF files from 32-bit files by conversion.
800#
801vmlinux.64: vmlinux
802 $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@
803
804makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) $(1)
805
806ifdef CONFIG_BOOT_ELF32
807all: $(vmlinux-32)
808endif
809
810ifdef CONFIG_BOOT_ELF64
811all: $(vmlinux-64)
812endif
813
Ralf Baechle149f60b2005-05-19 14:45:12 +0000814ifdef CONFIG_MIPS_ATLAS
815all: vmlinux.srec
816endif
817
818ifdef CONFIG_MIPS_MALTA
819all: vmlinux.srec
820endif
821
822ifdef CONFIG_MIPS_SEAD
823all: vmlinux.srec
824endif
825
Ralf Baechle154b5002005-07-22 05:46:02 +0000826ifdef CONFIG_QEMU
827all: vmlinux.bin
828endif
829
Linus Torvalds1da177e2005-04-16 15:20:36 -0700830ifdef CONFIG_SNI_RM200_PCI
831all: vmlinux.ecoff
832endif
833
Ralf Baechle154b5002005-07-22 05:46:02 +0000834vmlinux.bin: $(vmlinux-32)
835 +@$(call makeboot,$@)
836
Linus Torvalds1da177e2005-04-16 15:20:36 -0700837vmlinux.ecoff vmlinux.rm200: $(vmlinux-32)
838 +@$(call makeboot,$@)
839
840vmlinux.srec: $(vmlinux-32)
841 +@$(call makeboot,$@)
842
843CLEAN_FILES += vmlinux.ecoff \
844 vmlinux.srec \
845 vmlinux.rm200.tmp \
846 vmlinux.rm200
847
848archclean:
849 @$(MAKE) $(clean)=arch/mips/boot
850 @$(MAKE) $(clean)=arch/mips/lasat
851
Sam Ravnborg048eb582005-09-09 22:32:31 +0200852CLEAN_FILES += vmlinux.32 \
Linus Torvalds1da177e2005-04-16 15:20:36 -0700853 vmlinux.64 \
854 vmlinux.ecoff