Makefile 20.3 KB
Newer Older
Linus Torvalds's avatar
Linus Torvalds committed
1 2 3 4 5
#
# 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.
#
Ralf Bächle's avatar
Ralf Bächle committed
6
# Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle
Linus Torvalds's avatar
Linus Torvalds committed
7
# DECStation modifications by Paul M. Antoine, 1996
Andrew Morton's avatar
Andrew Morton committed
8
# Copyright (C) 2002, 2003  Maciej W. Rozycki
Linus Torvalds's avatar
Linus Torvalds committed
9 10 11
#
# 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
12
# for "archclean" cleaning up for this architecture.
Linus Torvalds's avatar
Linus Torvalds committed
13 14 15 16 17 18
#

#
# Select the object file format to substitute into the linker script.
#
ifdef CONFIG_CPU_LITTLE_ENDIAN
Andrew Morton's avatar
Andrew Morton committed
19
32bit-tool-prefix	= mipsel-linux-
Ralf Bächle's avatar
Ralf Bächle committed
20 21 22
64bit-tool-prefix	= mips64el-linux-
32bit-bfd		= elf32-tradlittlemips
64bit-bfd		= elf64-tradlittlemips
Linus Torvalds's avatar
Linus Torvalds committed
23
else
Andrew Morton's avatar
Andrew Morton committed
24
32bit-tool-prefix	= mips-linux-
Ralf Bächle's avatar
Ralf Bächle committed
25 26 27 28 29 30
64bit-tool-prefix	= mips64-linux-
32bit-bfd		= elf32-tradbigmips
64bit-bfd		= elf64-tradbigmips
endif

ifdef CONFIG_MIPS32
Andrew Morton's avatar
Andrew Morton committed
31 32
gcc-abi			= 32
gas-abi			= 32
Ralf Bächle's avatar
Ralf Bächle committed
33
tool-prefix		= $(32bit-tool-prefix)
Andrew Morton's avatar
Andrew Morton committed
34
UTS_MACHINE		:= mips
Ralf Bächle's avatar
Ralf Bächle committed
35 36
endif
ifdef CONFIG_MIPS64
Andrew Morton's avatar
Andrew Morton committed
37 38
gcc-abi			= 64
gas-abi			= 32
Ralf Bächle's avatar
Ralf Bächle committed
39
tool-prefix		= $(64bit-tool-prefix)
Andrew Morton's avatar
Andrew Morton committed
40
UTS_MACHINE		:= mips64
Linus Torvalds's avatar
Linus Torvalds committed
41 42 43
endif

ifdef CONFIG_CROSSCOMPILE
Ralf Bächle's avatar
Ralf Bächle committed
44
CROSS_COMPILE		:= $(tool-prefix)
Linus Torvalds's avatar
Linus Torvalds committed
45 46 47
endif

#
48
# GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
Linus Torvalds's avatar
Linus Torvalds committed
49 50 51
# 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.
Linus Torvalds's avatar
Linus Torvalds committed
52 53 54 55 56
#
# 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.
#
57 58
cflags-y			:= -I $(TOPDIR)/include/asm/gcc
cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
Andrew Morton's avatar
Andrew Morton committed
59
cflags-y			+= $(call check_gcc, -finline-limit=100000,)
Andrew Morton's avatar
Andrew Morton committed
60
LDFLAGS_vmlinux			+= -G 0 -static -n
61
MODFLAGS			+= -mlong-calls
Linus Torvalds's avatar
Linus Torvalds committed
62

63 64
cflags-$(CONFIG_SB1XXX_CORELIS)	+= -mno-sched-prolog -fno-omit-frame-pointer

Ralf Bächle's avatar
Ralf Bächle committed
65
check_warning = $(shell if $(CC) $(1) -c -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
Linus Torvalds's avatar
Linus Torvalds committed
66

Andrew Morton's avatar
Andrew Morton committed
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
#
# Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>,<isa2>)
#
# <cpu0>,<isa0> -- preferred CPU and ISA designations (may require
#                  recent tools)
# <cpu1>,<isa1> -- fallback CPU and ISA designations (have to work
#                  with up to the oldest supported tools)
# <isa2>        -- an ISA designation used as an ABI selector for
#                  gcc versions that do not support "-mabi=32"
#                  (depending on the CPU type, either "mips1" or
#                  "mips2")
#
set_gccflags = $(shell \
while :; do \
	cpu=$(1); isa=-$(2); \
	for gcc_opt in -march= -mcpu=; do \
		$(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
			-xc /dev/null > /dev/null 2>&1 && \
			break 2; \
	done; \
	cpu=$(3); isa=-$(4); \
	for gcc_opt in -march= -mcpu=; do \
		$(CC) $$gcc_opt$$cpu $$isa -S -o /dev/null \
			-xc /dev/null > /dev/null 2>&1 && \
			break 2; \
	done; \
	break; \
done; \
gcc_abi=-mabi=$(gcc-abi); gcc_cpu=$$cpu; \
if $(CC) $$gcc_abi -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then \
	gcc_isa=$$isa; \
else \
	gcc_abi=; gcc_isa=-$(5); \
fi; \
gas_abi=-Wa,-$(gcc-abi); gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \
while :; do \
	for gas_opt in -Wa,-march= -Wa,-mcpu=; do \
		$(CC) $$gas_abi $$gas_opt$$cpu $$gas_isa -Wa,-Z -c \
			-o /dev/null -xassembler /dev/null > /dev/null 2>&1 && \
			break 2; \
	done; \
	gas_abi=; gas_opt=; gas_cpu=; gas_isa=; \
	break; \
done; \
Andrew Morton's avatar
Andrew Morton committed
111
if test "$(gcc-abi)" != "$(gas-abi)"; then \
Andrew Morton's avatar
Andrew Morton committed
112 113
	gas_abi="-Wa,-$(gas-abi) -Wa,-mgp$(gcc-abi)"; \
fi; \
Andrew Morton's avatar
Andrew Morton committed
114 115 116 117 118
if test "$$gcc_opt" = -march= && test -n "$$gcc_abi"; then \
	$(CC) $$gcc_abi $$gcc_opt$$gcc_cpu -S -o /dev/null \
		-xc /dev/null > /dev/null 2>&1 && \
		gcc_isa=; \
fi; \
Andrew Morton's avatar
Andrew Morton committed
119 120
echo $$gcc_abi $$gcc_opt$$gcc_cpu $$gcc_isa $$gas_abi $$gas_opt$$gas_cpu $$gas_isa)

Linus Torvalds's avatar
Linus Torvalds committed
121 122
#
# CPU-dependent compiler/assembler options for optimization.
Andrew Morton's avatar
Andrew Morton committed
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
#
cflags-$(CONFIG_CPU_R3000)	+= \
			$(call set_gccflags,r3000,mips1,r3000,mips1,mips1)

cflags-$(CONFIG_CPU_TX39XX)	+= \
			$(call set_gccflags,r3900,mips1,r3000,mips1,mips1)

cflags-$(CONFIG_CPU_R6000)	+= \
			$(call set_gccflags,r6000,mips2,r6000,mips2,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_R4300)	+= \
			$(call set_gccflags,r4300,mips3,r4300,mips3,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_VR41XX)	+= \
			$(call set_gccflags,r4100,mips3,r4600,mips3,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_R4X00)	+= \
			$(call set_gccflags,r4600,mips3,r4600,mips3,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_MIPS32)	+= \
			$(call set_gccflags,mips32,mips32,r4600,mips3,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_MIPS64)	+= \
			$(call set_gccflags,mips64,mips64,r4600,mips3,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_R5000)	+= \
			$(call set_gccflags,r5000,mips4,r5000,mips4,mips2) \
			-Wa,--trap 

cflags-$(CONFIG_CPU_R5432)	+= \
			$(call set_gccflags,r5400,mips4,r5000,mips4,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_NEVADA)	+= \
			$(call set_gccflags,rm5200,mips4,r5000,mips4,mips2) \
			-Wa,--trap
#			$(call check_gcc,-mmad,)

cflags-$(CONFIG_CPU_RM7000)	+= \
			$(call set_gccflags,rm7000,mips4,r5000,mips4,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_RM9000)	+= \
			$(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_SB1)	+= \
			$(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_R8000)	+= \
			$(call set_gccflags,r8000,mips4,r8000,mips4,mips2) \
			-Wa,--trap

cflags-$(CONFIG_CPU_R10000)	+= \
			$(call set_gccflags,r10000,mips4,r8000,mips4,mips2) \
			-Wa,--trap
Ralf Bächle's avatar
Ralf Bächle committed
186

Linus Torvalds's avatar
Linus Torvalds committed
187
ifdef CONFIG_CPU_SB1
188 189
ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
MODFLAGS	+= -msb1-pass1-workarounds
Linus Torvalds's avatar
Linus Torvalds committed
190
endif
191 192 193 194
endif

#
# ramdisk/initrd support
Andrew Morton's avatar
Andrew Morton committed
195 196 197
# You need a compressed ramdisk image, named
# CONFIG_EMBEDDED_RAMDISK_IMAGE. Relative pathnames 
# are relative to arch/mips/ramdisk/.
198
#
Andrew Morton's avatar
Andrew Morton committed
199
core-$(CONFIG_EMBEDDED_RAMDISK)	+= arch/mips/ramdisk/
Linus Torvalds's avatar
Linus Torvalds committed
200

Linus Torvalds's avatar
Linus Torvalds committed
201
#
202
# Firmware support
Linus Torvalds's avatar
Linus Torvalds committed
203
#
204 205
libs-$(CONFIG_ARC)		+= arch/mips/arc/
libs-$(CONFIG_SIBYTE_CFE)	+= arch/mips/sibyte/cfe/
Linus Torvalds's avatar
Linus Torvalds committed
206

Linus Torvalds's avatar
Linus Torvalds committed
207 208 209 210 211
#
# Board-dependent options and extra files
#

#
212
# Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
Linus Torvalds's avatar
Linus Torvalds committed
213
#
Andrew Morton's avatar
Andrew Morton committed
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
core-$(CONFIG_MACH_JAZZ)	+= arch/mips/jazz/
cflags-$(CONFIG_MACH_JAZZ)	+= -Iinclude/asm-mips/mach-jazz
load-$(CONFIG_MACH_JAZZ)	+= 0x80080000

#
# Common Alchemy Au1x00 stuff
#
core-$(CONFIG_SOC_AU1X00)	+= arch/mips/au1000/common/
cflags-$(CONFIG_SOC_AU1X00)	+= -Iinclude/asm-mips/mach-au1x00

#
# AMD Alchemy Pb1000 eval board
#
libs-$(CONFIG_MIPS_PB1000)	+= arch/mips/au1000/pb1000/
cflags-$(CONFIG_MIPS_PB1000)	+= -Iinclude/asm-mips/mach-pb1x00
load-$(CONFIG_MIPS_PB1000)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
230

Andrew Morton's avatar
Andrew Morton committed
231 232 233 234 235 236
#
# AMD Alchemy Pb1100 eval board
#
libs-$(CONFIG_MIPS_PB1100)	+= arch/mips/au1000/pb1100/
cflags-$(CONFIG_MIPS_PB1100)	+= -Iinclude/asm-mips/mach-pb1x00
load-$(CONFIG_MIPS_PB1100)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
237

238
#
Andrew Morton's avatar
Andrew Morton committed
239
# AMD Alchemy Pb1500 eval board
240 241
#
libs-$(CONFIG_MIPS_PB1500)	+= arch/mips/au1000/pb1500/
Andrew Morton's avatar
Andrew Morton committed
242
cflags-$(CONFIG_MIPS_PB1500)	+= -Iinclude/asm-mips/mach-pb1x00
243
load-$(CONFIG_MIPS_PB1500)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
244

Andrew Morton's avatar
Andrew Morton committed
245 246 247 248 249 250 251
#
# AMD Alchemy Pb1550 eval board
#
libs-$(CONFIG_MIPS_PB1550)	+= arch/mips/au1000/pb1550/
cflags-$(CONFIG_MIPS_PB1550)	+= -Iinclude/asm-mips/mach-pb1x00
load-$(CONFIG_MIPS_PB1550)	+= 0x80100000

Andrew Morton's avatar
Andrew Morton committed
252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298
#
# AMD Alchemy Db1000 eval board
#
libs-$(CONFIG_MIPS_DB1000)	+= arch/mips/au1000/db1x00/
cflags-$(CONFIG_MIPS_DB1000)	+= -Iinclude/asm-mips/mach-db1x00
load-$(CONFIG_MIPS_DB1000)	+= 0x80100000

#
# AMD Alchemy Db1100 eval board
#
libs-$(CONFIG_MIPS_DB1100)	+= arch/mips/au1000/db1x00/
cflags-$(CONFIG_MIPS_DB1100)	+= -Iinclude/asm-mips/mach-db1x00
load-$(CONFIG_MIPS_DB1100)	+= 0x80100000

#
# AMD Alchemy Db1500 eval board
#
libs-$(CONFIG_MIPS_DB1500)	+= arch/mips/au1000/db1x00/
cflags-$(CONFIG_MIPS_DB1500)	+= -Iinclude/asm-mips/mach-db1x00
load-$(CONFIG_MIPS_DB1500)	+= 0x80100000

#
# AMD Alchemy Bosporus eval board
#
libs-$(CONFIG_MIPS_BOSPORUS)	+= arch/mips/au1000/db1x00/
cflags-$(CONFIG_MIPS_BOSPORUS)	+= -Iinclude/asm-mips/mach-db1x00
load-$(CONFIG_MIPS_BOSPORUS)	+= 0x80100000

#
# AMD Alchemy Mirage eval board
#
libs-$(CONFIG_MIPS_MIRAGE)	+= arch/mips/au1000/db1x00/
cflags-$(CONFIG_MIPS_MIRAGE)	+= -Iinclude/asm-mips/mach-db1x00
load-$(CONFIG_MIPS_MIRAGE)	+= 0x80100000

#
# 4G-Systems eval board
#
libs-$(CONFIG_MIPS_MTX1)	+= arch/mips/au1000/mtx-1/
load-$(CONFIG_MIPS_MTX1)	+= 0x80100000

#
# MyCable eval board
#
libs-$(CONFIG_MIPS_XXS1500)	+= arch/mips/au1000/xxs1500/
load-$(CONFIG_MIPS_XXS1500)	+= 0x80100000

Linus Torvalds's avatar
Linus Torvalds committed
299
#
300
# Baget/MIPS
Linus Torvalds's avatar
Linus Torvalds committed
301
#
302 303
libs-$(CONFIG_BAGET_MIPS)	+= arch/mips/baget/ arch/mips/baget/prom/
load-$(CONFIG_BAGET_MIPS)	+= 0x80001000
Linus Torvalds's avatar
Linus Torvalds committed
304

305 306 307 308 309
#
# Cobalt Server
#
core-$(CONFIG_MIPS_COBALT)	+= arch/mips/cobalt/
load-$(CONFIG_MIPS_COBALT)	+= 0x80080000
Linus Torvalds's avatar
Linus Torvalds committed
310 311

#
312
# DECstation family
Linus Torvalds's avatar
Linus Torvalds committed
313
#
Andrew Morton's avatar
Andrew Morton committed
314 315 316 317
core-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/
cflags-$(CONFIG_MACH_DECSTATION)+= -Iinclude/asm-mips/mach-dec
libs-$(CONFIG_MACH_DECSTATION)	+= arch/mips/dec/prom/
load-$(CONFIG_MACH_DECSTATION)	+= 0x80040000
318
CLEAN_FILES			+= drivers/tc/lk201-map.c
Linus Torvalds's avatar
Linus Torvalds committed
319 320

#
321
# Galileo EV64120 Board
Linus Torvalds's avatar
Linus Torvalds committed
322
#
Andrew Morton's avatar
Andrew Morton committed
323 324 325
core-$(CONFIG_MIPS_EV64120)	+= arch/mips/gt64120/ev64120/
core-$(CONFIG_MIPS_EV64120)	+= arch/mips/gt64120/common/
cflags-$(CONFIG_MIPS_EV64120)	+= -Iinclude/asm-mips/mach-ev64120
326
load-$(CONFIG_MIPS_EV64120)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
327 328

#
329
# Galileo EV96100 Board
Linus Torvalds's avatar
Linus Torvalds committed
330
#
Andrew Morton's avatar
Andrew Morton committed
331 332
core-$(CONFIG_MIPS_EV96100)	+= arch/mips/galileo-boards/ev96100/
cflags-$(CONFIG_MIPS_EV96100)	+= -Iinclude/asm-mips/mach-ev96100
333
load-$(CONFIG_MIPS_EV96100)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
334 335

#
336
# Globespan IVR eval board with QED 5231 CPU
Linus Torvalds's avatar
Linus Torvalds committed
337
#
338 339 340 341
core-$(CONFIG_ITE_BOARD_GEN)	+= arch/mips/ite-boards/generic/
core-$(CONFIG_MIPS_IVR)		+= arch/mips/ite-boards/ivr/
load-$(CONFIG_MIPS_IVR)		+= 0x80100000

Linus Torvalds's avatar
Linus Torvalds committed
342
#
343 344 345 346
# HP LaserJet
#
core-$(CONFIG_HP_LASERJET)	+= arch/mips/hp-lj/
load-$(CONFIG_HP_LASERJET)	+= 0x80030000
Linus Torvalds's avatar
Linus Torvalds committed
347

Linus Torvalds's avatar
Linus Torvalds committed
348
#
349
# ITE 8172 eval board with QED 5231 CPU
Linus Torvalds's avatar
Linus Torvalds committed
350
#
351 352 353
core-$(CONFIG_MIPS_ITE8172)	+= arch/mips/ite-boards/qed-4n-s01b/
load-$(CONFIG_MIPS_ITE8172)	+= 0x80100000

Linus Torvalds's avatar
Linus Torvalds committed
354
#
Andrew Morton's avatar
Andrew Morton committed
355
# For all MIPS, Inc. eval boards
356 357
#
core-$(CONFIG_MIPS_BOARDS_GEN)	+= arch/mips/mips-boards/generic/
Andrew Morton's avatar
Andrew Morton committed
358 359 360 361

#
# MIPS Atlas board
#
362
core-$(CONFIG_MIPS_ATLAS)	+= arch/mips/mips-boards/atlas/
Andrew Morton's avatar
Andrew Morton committed
363 364
cflags-$(CONFIG_MIPS_ATLAS)	+= -Iinclude/asm-mips/mach-atlas
cflags-$(CONFIG_MIPS_ATLAS)	+= -Iinclude/asm-mips/mach-mips
365
load-$(CONFIG_MIPS_ATLAS)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
366

Linus Torvalds's avatar
Linus Torvalds committed
367
#
368
# MIPS Malta board
Linus Torvalds's avatar
Linus Torvalds committed
369
#
370
core-$(CONFIG_MIPS_MALTA)	+= arch/mips/mips-boards/malta/
Andrew Morton's avatar
Andrew Morton committed
371
cflags-$(CONFIG_MIPS_MALTA)	+= -Iinclude/asm-mips/mach-mips
Ralf Bächle's avatar
Ralf Bächle committed
372
load-$(CONFIG_MIPS_MALTA)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
373

Linus Torvalds's avatar
Linus Torvalds committed
374
#
375
# MIPS SEAD board
Linus Torvalds's avatar
Linus Torvalds committed
376
#
377 378
core-$(CONFIG_MIPS_SEAD)	+= arch/mips/mips-boards/sead/
load-$(CONFIG_MIPS_SEAD)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
379 380

#
Linus Torvalds's avatar
Linus Torvalds committed
381 382
# Momentum Ocelot board
#
Linus Torvalds's avatar
Linus Torvalds committed
383 384
# The Ocelot setup.o must be linked early - it does the ioremap() for the
# mips_io_port_base.
385 386 387
#
core-$(CONFIG_MOMENCO_OCELOT)	+= arch/mips/gt64120/common/ \
				   arch/mips/gt64120/momenco_ocelot/
Andrew Morton's avatar
Andrew Morton committed
388
cflags-$(CONFIG_MOMENCO_OCELOT)	+= -Iinclude/asm-mips/mach-ocelot
389
load-$(CONFIG_MOMENCO_OCELOT)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
390

Linus Torvalds's avatar
Linus Torvalds committed
391
#
392
# Momentum Ocelot-G board
Linus Torvalds's avatar
Linus Torvalds committed
393
#
394 395 396 397 398
# The Ocelot-G setup.o must be linked early - it does the ioremap() for the
# mips_io_port_base.
#
core-$(CONFIG_MOMENCO_OCELOT_G)	+= arch/mips/momentum/ocelot_g/
load-$(CONFIG_MOMENCO_OCELOT_G)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
399 400

#
401
# Momentum Ocelot-C and -CS boards
Linus Torvalds's avatar
Linus Torvalds committed
402
#
403 404 405 406
# The Ocelot-C[S] setup.o must be linked early - it does the ioremap() for the
# mips_io_port_base.
core-$(CONFIG_MOMENCO_OCELOT_C)	+= arch/mips/momentum/ocelot_c/
load-$(CONFIG_MOMENCO_OCELOT_C)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
407 408

#
Andrew Morton's avatar
Andrew Morton committed
409 410 411
# Momentum Jaguar ATX
#
core-$(CONFIG_MOMENCO_JAGUAR_ATX)	+= arch/mips/momentum/jaguar_atx/
Andrew Morton's avatar
Andrew Morton committed
412 413 414 415
cflags-$(CONFIG_MOMENCO_JAGUAR_ATX)	+= -Iinclude/asm-mips/mach-ja
#ifdef CONFIG_JAGUAR_DMALOW
#load-$(CONFIG_MOMENCO_JAGUAR_ATX)	+= 0x88000000
#else
Andrew Morton's avatar
Andrew Morton committed
416
load-$(CONFIG_MOMENCO_JAGUAR_ATX)	+= 0x80100000
Andrew Morton's avatar
Andrew Morton committed
417
#endif
Andrew Morton's avatar
Andrew Morton committed
418 419 420

#
# NEC DDB
Linus Torvalds's avatar
Linus Torvalds committed
421
#
422
core-$(CONFIG_DDB5XXX_COMMON)	+= arch/mips/ddb5xxx/common/
Andrew Morton's avatar
Andrew Morton committed
423 424 425 426

#
# NEC DDB Vrc-5074
#
427 428
core-$(CONFIG_DDB5074)		+= arch/mips/ddb5xxx/ddb5074/
load-$(CONFIG_DDB5074)		+= 0x80080000
Linus Torvalds's avatar
Linus Torvalds committed
429 430

#
431
# NEC DDB Vrc-5476
Linus Torvalds's avatar
Linus Torvalds committed
432
#
433 434 435 436 437 438 439 440 441 442
core-$(CONFIG_DDB5476)		+= arch/mips/ddb5xxx/ddb5476/
load-$(CONFIG_DDB5476)		+= 0x80080000

#
# NEC DDB Vrc-5477
#
core-$(CONFIG_DDB5477)		+= arch/mips/ddb5xxx/ddb5477/
load-$(CONFIG_DDB5477)		+= 0x80100000

core-$(CONFIG_LASAT)		+= arch/mips/lasat/
Andrew Morton's avatar
Andrew Morton committed
443
cflags-$(CONFIG_LASAT)		+= -Iinclude/asm-mips/mach-lasat
444 445 446 447 448 449 450 451 452
load-$(CONFIG_LASAT)		+= 0x80000000

#
# NEC Osprey (vr4181) board
#
core-$(CONFIG_NEC_OSPREY)	+= arch/mips/vr4181/common/ \
				   arch/mips/vr4181/osprey/
load-$(CONFIG_NEC_OSPREY)	+= 0x80002000

Andrew Morton's avatar
Andrew Morton committed
453 454 455 456 457 458
#
# Common VR41xx
#
core-$(CONFIG_MACH_VR41XX)	+= arch/mips/vr41xx/common/
cflags-$(CONFIG_MACH_VR41XX)	+= -Iinclude/asm-mips/mach-vr41xx

459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504
#
# NEC Eagle/Hawk (VR4122/VR4131) board
#
core-$(CONFIG_NEC_EAGLE)	+= arch/mips/vr41xx/nec-eagle/
load-$(CONFIG_NEC_EAGLE)	+= 0x80000000

#
# ZAO Networks Capcella (VR4131)
#
core-$(CONFIG_ZAO_CAPCELLA)	+= arch/mips/vr41xx/zao-capcella/
load-$(CONFIG_ZAO_CAPCELLA)	+= 0x80000000

#
# Victor MP-C303/304 (VR4122)
#
core-$(CONFIG_VICTOR_MPC30X)	+= arch/mips/vr41xx/victor-mpc30x/
load-$(CONFIG_VICTOR_MPC30X)	+= 0x80001000

#
# IBM WorkPad z50 (VR4121)
#
core-$(CONFIG_IBM_WORKPAD)	+= arch/mips/vr41xx/ibm-workpad/
load-$(CONFIG_IBM_WORKPAD)	+= 0x80004000

#
# CASIO CASSIPEIA E-55/65 (VR4111)
#
core-$(CONFIG_CASIO_E55)	+= arch/mips/vr41xx/casio-e55/
load-$(CONFIG_CASIO_E55)	+= 0x80004000

#
# TANBAC TB0226 Mbase (VR4131)
#
core-$(CONFIG_TANBAC_TB0226)	+= arch/mips/vr41xx/tanbac-tb0226/
load-$(CONFIG_TANBAC_TB0226)	+= 0x80000000

#
# TANBAC TB0229 VR4131DIMM (VR4131)
#
core-$(CONFIG_TANBAC_TB0229)	+= arch/mips/vr41xx/tanbac-tb0229/
load-$(CONFIG_TANBAC_TB0229)	+= 0x80000000

#
# SGI IP22 (Indy/Indigo2)
#
# Set the load address to >= 0x88069000 if you want to leave space for symmon,
Ralf Bächle's avatar
Ralf Bächle committed
505 506 507
# 0x80002000 for production kernels.  Note that the value must be aligned to
# a multiple of the kernel stack size or the handling of the current variable
# will break so for 64-bit kernels we have to raise the start address by 8kb.
508 509
#
core-$(CONFIG_SGI_IP22)		+= arch/mips/sgi-ip22/
Andrew Morton's avatar
Andrew Morton committed
510
cflags-$(CONFIG_SGI_IP22)	+= -Iinclude/asm-mips/mach-ip22
Ralf Bächle's avatar
Ralf Bächle committed
511
ifdef CONFIG_MIPS32
512
load-$(CONFIG_SGI_IP22)		+= 0x88002000
Ralf Bächle's avatar
Ralf Bächle committed
513 514 515 516 517 518 519 520 521 522 523 524 525 526
endif
ifdef CONFIG_MIPS64
load-$(CONFIG_SGI_IP22)		+= 0x88004000
endif

#
# SGI-IP27 (Origin200/2000)
#
# Set the load address to >= 0xc000000000300000 if you want to leave space for
# symmon, 0xc00000000001c000 for production kernels.  Note that the value
# must be 16kb aligned or the handling of the current variable will break.
#
ifdef CONFIG_SGI_IP27
core-$(CONFIG_SGI_IP27)		+= arch/mips/sgi-ip27/
Andrew Morton's avatar
Andrew Morton committed
527
cflags-$(CONFIG_SGI_IP27)	+= -Iinclude/asm-mips/mach-ip27
Ralf Bächle's avatar
Ralf Bächle committed
528 529 530 531 532 533 534 535 536 537 538
#load-$(CONFIG_SGI_IP27)	+= 0xa80000000001c000
ifdef CONFIG_MAPPED_KERNEL
load-$(CONFIG_SGI_IP27)		+= 0xc001c000
else
load-$(CONFIG_SGI_IP27)		+= 0x8001c000
endif
endif

#
# SGI-IP32 (O2)
#
Andrew Morton's avatar
Andrew Morton committed
539
# Set the load address to >= 80069000 if you want to leave space for symmon,
Ralf Bächle's avatar
Ralf Bächle committed
540 541 542 543 544
# 0x80002000 for production kernels.  Note that the value must be aligned to
# a multiple of the kernel stack size or the handling of the current variable
# will break so for 64-bit kernels we have to raise the start address by 8kb.
#
core-$(CONFIG_SGI_IP32)		+= arch/mips/sgi-ip32/
Andrew Morton's avatar
Andrew Morton committed
545
cflags-$(CONFIG_SGI_IP32)	+= -Iinclude/asm-mips/mach-ip32
Ralf Bächle's avatar
Ralf Bächle committed
546
ifdef CONFIG_MIPS32
Andrew Morton's avatar
Andrew Morton committed
547
load-$(CONFIG_SGI_IP32)		+= 0x80002000
Ralf Bächle's avatar
Ralf Bächle committed
548 549
endif
ifdef CONFIG_MIPS64
Andrew Morton's avatar
Andrew Morton committed
550
load-$(CONFIG_SGI_IP32)		+= 0x80004000
Ralf Bächle's avatar
Ralf Bächle committed
551
endif
552 553 554 555 556 557 558 559 560

#
# Sibyte SB1250 SOC
#
# This is a LIB so that it links at the end, and initcalls are later
# the sequence; but it is built as an object so that modules don't get
# removed (as happens, even if they have __initcall/module_init)
#
core-$(CONFIG_SIBYTE_BCM112X)	+= arch/mips/sibyte/sb1250/
Andrew Morton's avatar
Andrew Morton committed
561

562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587
core-$(CONFIG_SIBYTE_SB1250)	+= arch/mips/sibyte/sb1250/

#
# Sibyte BCM91120x (Carmel) board
# Sibyte BCM91120C (CRhine) board
# Sibyte BCM91125C (CRhone) board
# Sibyte BCM91125E (Rhone) board
# Sibyte SWARM board
#
libs-$(CONFIG_SIBYTE_CARMEL)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_CARMEL)	:= 0x80100000
libs-$(CONFIG_SIBYTE_CRHINE)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_CRHINE)	:= 0x80100000
libs-$(CONFIG_SIBYTE_CRHONE)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_CRHONE)	:= 0x80100000
libs-$(CONFIG_SIBYTE_RHONE)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_RHONE)	:= 0x80100000
libs-$(CONFIG_SIBYTE_SENTOSA)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_SENTOSA)	:= 0x80100000
libs-$(CONFIG_SIBYTE_SWARM)	+= arch/mips/sibyte/swarm/
load-$(CONFIG_SIBYTE_SWARM)	:= 0x80100000

#
# SNI RM200 PCI
#
core-$(CONFIG_SNI_RM200_PCI)	+= arch/mips/sni/
Andrew Morton's avatar
Andrew Morton committed
588 589
cflags-$(CONFIG_SNI_RM200_PCI)	+= -Iinclude/asm-mips/mach-rm200
load-$(CONFIG_SNI_RM200_PCI)	+= 0x80600000
590 591 592 593 594 595 596 597 598 599 600 601

#
# Toshiba JMR-TX3927 board
#
core-$(CONFIG_TOSHIBA_JMR3927)	+= arch/mips/jmr3927/rbhma3100/ \
				   arch/mips/jmr3927/common/
load-$(CONFIG_TOSHIBA_JMR3927)	+= 0x80050000

#
# Toshiba RBTX4927 board or
# Toshiba RBTX4937 board
#
Ralf Bächle's avatar
Ralf Bächle committed
602
core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/toshiba_rbtx4927/
603
core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/common/
Ralf Bächle's avatar
Ralf Bächle committed
604
load-$(CONFIG_TOSHIBA_RBTX4927)	+= 0x80020000
605

Andrew Morton's avatar
Andrew Morton committed
606
cflags-y			+= -Iinclude/asm-mips/mach-generic
607 608
drivers-$(CONFIG_PCI)		+= arch/mips/pci/

Ralf Bächle's avatar
Ralf Bächle committed
609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638
ifdef CONFIG_MIPS32
build-bfd		= $(32bit-bfd)
cflags-y		+= $(32bit-isa-y)
endif
ifdef CONFIG_MIPS64
build-bfd		= $(64bit-bfd)
cflags-y		+= $(64bit-isa-y)
endif

ifdef CONFIG_MIPS32
ifdef CONFIG_CPU_LITTLE_ENDIAN
JIFFIES			= jiffies_64
else
JIFFIES			= jiffies_64 + 4
endif
else
JIFFIES			= jiffies_64
endif

#
# 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.
#
# The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
# ELF files from 32-bit files by conversion.
#
#AS += -64
#LDFLAGS += -m elf64bmip

Linus Torvalds's avatar
Linus Torvalds committed
639 640 641 642 643
#
# Choosing incompatible machines durings configuration will result in
# error messages during linking.  Select a default linkscript if
# none has been choosen above.
#
644

Ralf Bächle's avatar
Ralf Bächle committed
645 646 647 648 649 650 651 652 653
AFLAGS_vmlinux.lds.o := \
	-D"LOADADDR=$(load-y)" \
	-D"JIFFIES=$(JIFFIES)" \
	-imacros $(srctree)/include/asm-$(ARCH)/sn/mapped_kernel.h

AFLAGS		+= $(cflags-y)
CFLAGS		+= $(cflags-y)

LDFLAGS			+= --oformat $(32bit-bfd)
Linus Torvalds's avatar
Linus Torvalds committed
654

655
head-y := arch/mips/kernel/head.o arch/mips/kernel/init_task.o
Linus Torvalds's avatar
Linus Torvalds committed
656

Ralf Bächle's avatar
Ralf Bächle committed
657 658 659 660 661 662 663
libs-y			+= arch/mips/lib/
libs-$(CONFIG_MIPS32)	+= arch/mips/lib-32/
libs-$(CONFIG_MIPS64)	+= arch/mips/lib-64/

core-y			+= arch/mips/kernel/ arch/mips/mm/ arch/mips/math-emu/
core-$(CONFIG_MIPS32)	+= arch/mips/mm-32/
core-$(CONFIG_MIPS64)	+= arch/mips/mm-64/
Linus Torvalds's avatar
Linus Torvalds committed
664 665 666 667 668

ifdef CONFIG_BAGET_MIPS

BAGETBOOT = $(MAKE) -C arch/$(ARCH)/baget

669
balo: vmlinux
Linus Torvalds's avatar
Linus Torvalds committed
670 671 672 673
	$(BAGETBOOT) balo

endif

674 675 676 677 678
ifdef CONFIG_LASAT
rom.bin rom.sw: vmlinux
	$(call descend,arch/mips/lasat/image,$@)
endif

Ralf Bächle's avatar
Ralf Bächle committed
679 680
ifdef CONFIG_MAPPED_KERNEL
vmlinux.64: vmlinux
Andrew Morton's avatar
Andrew Morton committed
681 682
	$(OBJCOPY) -O $(64bit-bfd) --remove-section=.reginfo \
		--change-addresses=0xc000000080000000 $< $@
Ralf Bächle's avatar
Ralf Bächle committed
683 684
else
vmlinux.64: vmlinux
Andrew Morton's avatar
Andrew Morton committed
685 686
	$(OBJCOPY) -O $(64bit-bfd) --remove-section=.reginfo \
		--change-addresses=0xa800000080000000 $< $@
Ralf Bächle's avatar
Ralf Bächle committed
687 688
endif

689
makeboot =$(Q)$(MAKE) $(build)=arch/mips/boot $(1)
Linus Torvalds's avatar
Linus Torvalds committed
690

Andrew Morton's avatar
Andrew Morton committed
691 692 693 694
ifdef CONFIG_SGI_IP27
all:	vmlinux.64
endif

695
ifdef CONFIG_SNI_RM200_PCI
Andrew Morton's avatar
Andrew Morton committed
696
all:	vmlinux.ecoff
Linus Torvalds's avatar
Linus Torvalds committed
697 698
endif

699 700
vmlinux.ecoff vmlinux.rm200: vmlinux
	+@$(call makeboot,$@)
Linus Torvalds's avatar
Linus Torvalds committed
701

Andrew Morton's avatar
Andrew Morton committed
702 703 704
vmlinux.srec: vmlinux
	+@$(call makeboot,$@)

705
CLEAN_FILES += vmlinux.ecoff \
Andrew Morton's avatar
Andrew Morton committed
706
	       vmlinux.srec \
707 708
	       vmlinux.rm200.tmp \
	       vmlinux.rm200
Linus Torvalds's avatar
Linus Torvalds committed
709

Linus Torvalds's avatar
Linus Torvalds committed
710
archclean:
711 712 713
	@$(MAKE) $(clean)=arch/mips/boot
	@$(MAKE) $(clean)=arch/mips/baget
	@$(MAKE) $(clean)=arch/mips/lasat
Linus Torvalds's avatar
Linus Torvalds committed
714

715 716 717 718 719 720 721 722 723
# Generate <asm/offset.h 
#
# The default rule is suffering from funny problems on MIPS so we using our
# own ...
#
# ---------------------------------------------------------------------------

define filechk_gen-asm-offset.h
	(set -e; \
Ralf Bächle's avatar
Ralf Bächle committed
724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740
	 echo "#ifndef _ASM_OFFSET_H"; \
	 echo "#define _ASM_OFFSET_H"; \
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
	 echo " * This file was generated by arch/$(ARCH)/Makefile"; \
	 echo " *"; \
	 echo " */"; \
	 echo ""; \
	 sed -ne "/^@@@/s///p"; \
	 echo "#endif /* _ASM_OFFSET_H */" )
endef

define filechk_gen-asm-reg.h
	(set -e; \
	 echo "#ifndef _ASM_REG_H"; \
	 echo "#define _ASM_REG_H"; \
741 742 743 744 745 746 747 748
	 echo "/*"; \
	 echo " * DO NOT MODIFY."; \
	 echo " *"; \
	 echo " * This file was generated by arch/$(ARCH)/Makefile"; \
	 echo " *"; \
	 echo " */"; \
	 echo ""; \
	 sed -ne "/^@@@/s///p"; \
Ralf Bächle's avatar
Ralf Bächle committed
749
	 echo "#endif /* _ASM_REG_H */" )
750 751
endef

Ralf Bächle's avatar
Ralf Bächle committed
752 753
prepare: include/asm-$(ARCH)/offset.h \
	 include/asm-$(ARCH)/reg.h
754 755 756 757 758 759

arch/$(ARCH)/kernel/offset.s: include/asm include/linux/version.h \
				   include/config/MARKER

include/asm-$(ARCH)/offset.h: arch/$(ARCH)/kernel/offset.s
	$(call filechk,gen-asm-offset.h)
Ralf Bächle's avatar
Ralf Bächle committed
760 761
include/asm-$(ARCH)/reg.h: arch/$(ARCH)/kernel/reg.s
	$(call filechk,gen-asm-reg.h)
762 763

CLEAN_FILES += include/asm-$(ARCH)/offset.h.tmp \
Ralf Bächle's avatar
Ralf Bächle committed
764 765
	       include/asm-$(ARCH)/offset.h \
	       include/asm-$(ARCH)/reg.h.tmp \
Andrew Morton's avatar
Andrew Morton committed
766 767 768
	       include/asm-$(ARCH)/reg.h \
	       vmlinux.64 \
	       vmlinux.ecoff