Makefile 17.2 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
8
# Copyright (C) 2002  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
Ralf Bächle's avatar
Ralf Bächle committed
19 20 21 22
32bit-tool-prefix	= mips64el-linux-
64bit-tool-prefix	= mips64el-linux-
32bit-bfd		= elf32-tradlittlemips
64bit-bfd		= elf64-tradlittlemips
Linus Torvalds's avatar
Linus Torvalds committed
23
else
Ralf Bächle's avatar
Ralf Bächle committed
24 25 26 27 28 29 30 31 32 33 34
32bit-tool-prefix	= mips64-linux-
64bit-tool-prefix	= mips64-linux-
32bit-bfd		= elf32-tradbigmips
64bit-bfd		= elf64-tradbigmips
endif

ifdef CONFIG_MIPS32
tool-prefix		= $(32bit-tool-prefix)
endif
ifdef CONFIG_MIPS64
tool-prefix		= $(64bit-tool-prefix)
Linus Torvalds's avatar
Linus Torvalds committed
35 36 37
endif

ifdef CONFIG_CROSSCOMPILE
Ralf Bächle's avatar
Ralf Bächle committed
38
CROSS_COMPILE		:= $(tool-prefix)
Linus Torvalds's avatar
Linus Torvalds committed
39 40 41
endif

#
42
# GCC uses -G 0 -mabicalls -fpic as default.  We don't want PIC in the kernel
Linus Torvalds's avatar
Linus Torvalds committed
43 44 45
# 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
46 47 48 49 50
#
# 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.
#
51 52
cflags-y			:= -I $(TOPDIR)/include/asm/gcc
cflags-y			+= -G 0 -mno-abicalls -fno-pic -pipe
Ralf Bächle's avatar
Ralf Bächle committed
53 54 55
cflags-$(CONFIG_MIPS32)		+= $(call check_gcc, -mabi=32,)
cflags-$(CONFIG_MIPS64)		+= -mabi=64
LDFLAGS_vmlinux			+= -G 0 -static # -N
56
MODFLAGS			+= -mlong-calls
Linus Torvalds's avatar
Linus Torvalds committed
57

58 59 60 61
cflags-$(CONFIG_KGDB)		+= -g
cflags-$(CONFIG_SB1XXX_CORELIS)	+= -mno-sched-prolog -fno-omit-frame-pointer

check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
Ralf Bächle's avatar
Ralf Bächle committed
62
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
63 64 65

#
# CPU-dependent compiler/assembler options for optimization.
Ralf Bächle's avatar
Ralf Bächle committed
66 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 111 112 113 114 115 116 117 118 119 120 121 122 123 124
# This is done in several steps:
#
#  - cflags-y    contains the options which select for which processor to
#                optimize the code for.  The options should not contain any
#                options that change the ISA level but only compiler flags to
#                tune performance of the generated code.
#  - 32bit-isa-y contains the options which select the ISA for 32-bit kernels.
#                A kernel built those options will only work on hardware which
#                actually supports this ISA.
#  - 64bit-isa-y contains the options which select the ISA for 64-bit kernels.
#                A kernel built those options will only work on hardware which
#                actually supports this ISA.
#
cflags-$(CONFIG_CPU_R3000)	+= -mcpu=r3000
32bit-isa-$(CONFIG_CPU_R3000)	+= -mips1
64bit-isa-$(CONFIG_CPU_R3000)	+= -mboom
cflags-$(CONFIG_CPU_TX39XX)	+= -mcpu=r3000
32bit-isa-$(CONFIG_CPU_TX39XX)	+= -mips1
64bit-isa-$(CONFIG_CPU_TX39XX)	+= -mboom
cflags-$(CONFIG_CPU_R6000)	+= -mcpu=r6000
32bit-isa-$(CONFIG_CPU_R6000)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R6000)	+= -mboom -Wa,--trap
cflags-$(CONFIG_CPU_R4300)	+= -mcpu=r4300
32bit-isa-$(CONFIG_CPU_R4300)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R4300)	+= -mips3 -Wa,--trap
cflags-$(CONFIG_CPU_VR41XX)	+= -mcpu=r4600
32bit-isa-$(CONFIG_CPU_VR41XX)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_VR41XX)	+= -mips3 -Wa,--trap
cflags-$(CONFIG_CPU_R4X00)	+= -mcpu=r4600
32bit-isa-$(CONFIG_CPU_R4X00)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R4X00)	+= -mips3 -Wa,--trap
cflags-$(CONFIG_CPU_MIPS32)	+= $(call check_gcc, -mtune=mips32, -mcpu=r4600)
32bit-isa-$(CONFIG_CPU_MIPS32)	+= $(call check_gcc, -mips32 -mabi=32, -mips2) -Wa,--trap
64bit-isa-$(CONFIG_CPU_MIPS32)	+= -mboom
cflags-$(CONFIG_CPU_MIPS64)	+= 
32bit-isa-$(CONFIG_CPU_MIPS64)	+= $(call check_gcc, -mips32, -mips2) -Wa,--trap
64bit-isa-$(CONFIG_CPU_MIPS64)	+= $(call check_gcc, -mips64, -mips4) -Wa,--trap
cflags-$(CONFIG_CPU_R5000)	+= -mcpu=r8000
32bit-isa-$(CONFIG_CPU_R5000)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R5000)	+= -mips4 -Wa,--trap
cflags-$(CONFIG_CPU_R5432)	+= -mcpu=r5000
32bit-isa-$(CONFIG_CPU_R5432)	+= -mips1 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R5432)	+= -mips3 -Wa,--trap
cflags-$(CONFIG_CPU_NEVADA)	+= -mcpu=r8000 -mmad
32bit-isa-$(CONFIG_CPU_NEVADA)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_NEVADA)	+= -mips3 -Wa,--trap
cflags-$(CONFIG_CPU_RM7000)	+= $(call check_gcc, -mcpu=r7000, -mcpu=r5000)
32bit-isa-$(CONFIG_CPU_RM7000)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_RM7000)	+= -mips4 -Wa,--trap
cflags-$(CONFIG_CPU_SB1)	+= $(call check_gcc, -mcpu=sb1, -mcpu=r8000)
32bit-isa-$(CONFIG_CPU_SB1)	+= $(call check_gcc, -mips32, -mips2) -Wa,--trap
64bit-isa-$(CONFIG_CPU_SB1)	+= $(call check_gcc, -mips64, -mips4) -Wa,--trap
cflags-$(CONFIG_CPU_R8000)	+= -mcpu=r8000
32bit-isa-$(CONFIG_CPU_R8000)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R8000)	+= -mips4 -Wa,--trap
cflags-$(CONFIG_CPU_R10000)	+= -mcpu=r8000
32bit-isa-$(CONFIG_CPU_R10000)	+= -mips2 -Wa,--trap
64bit-isa-$(CONFIG_CPU_R10000)	+= -mips4 -Wa,--trap

Linus Torvalds's avatar
Linus Torvalds committed
125
ifdef CONFIG_CPU_SB1
126 127
ifdef CONFIG_SB1_PASS_1_WORKAROUNDS
MODFLAGS	+= -msb1-pass1-workarounds
Linus Torvalds's avatar
Linus Torvalds committed
128
endif
129 130 131 132 133 134 135 136 137 138 139
endif

#
# ramdisk/initrd support
# You need a compressed ramdisk image, named ramdisk.gz in
# arch/mips/ramdisk
#
ifdef CONFIG_EMBEDDED_RAMDISK
CORE_FILES	+= arch/mips/ramdisk/ramdisk.o
SUBDIRS		+= arch/mips/ramdisk
endif
Linus Torvalds's avatar
Linus Torvalds committed
140

Linus Torvalds's avatar
Linus Torvalds committed
141
#
142
# Firmware support
Linus Torvalds's avatar
Linus Torvalds committed
143
#
144 145
libs-$(CONFIG_ARC)		+= arch/mips/arc/
libs-$(CONFIG_SIBYTE_CFE)	+= arch/mips/sibyte/cfe/
Linus Torvalds's avatar
Linus Torvalds committed
146

Linus Torvalds's avatar
Linus Torvalds committed
147 148 149 150 151
#
# Board-dependent options and extra files
#

#
152
# Acer PICA 61, Mips Magnum 4000 and Olivetti M700.
Linus Torvalds's avatar
Linus Torvalds committed
153
#
154 155
core-$(CONFIG_MIPS_JAZZ)	+= arch/mips/jazz/
load-$(CONFIG_MIPS_JAZZ)	+= 0x80080000
Linus Torvalds's avatar
Linus Torvalds committed
156

Linus Torvalds's avatar
Linus Torvalds committed
157

158 159 160 161 162 163
#
# Au1500 (Alchemy Semi PB1500) eval board
#
core-$(CONFIG_MIPS_PB1500)	+= arch/mips/au1000/common/
libs-$(CONFIG_MIPS_PB1500)	+= arch/mips/au1000/pb1500/
load-$(CONFIG_MIPS_PB1500)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
164

Linus Torvalds's avatar
Linus Torvalds committed
165
#
166
# Baget/MIPS
Linus Torvalds's avatar
Linus Torvalds committed
167
#
168 169
libs-$(CONFIG_BAGET_MIPS)	+= arch/mips/baget/ arch/mips/baget/prom/
load-$(CONFIG_BAGET_MIPS)	+= 0x80001000
Linus Torvalds's avatar
Linus Torvalds committed
170

171 172 173 174 175
#
# Cobalt Server
#
core-$(CONFIG_MIPS_COBALT)	+= arch/mips/cobalt/
load-$(CONFIG_MIPS_COBALT)	+= 0x80080000
Linus Torvalds's avatar
Linus Torvalds committed
176 177

#
178
# DECstation family
Linus Torvalds's avatar
Linus Torvalds committed
179
#
180 181 182 183
core-$(CONFIG_DECSTATION)	+= arch/mips/dec/
libs-$(CONFIG_DECSTATION)	+= arch/mips/dec/prom/
load-$(CONFIG_DECSTATION)	+= 0x80040000
CLEAN_FILES			+= drivers/tc/lk201-map.c
Linus Torvalds's avatar
Linus Torvalds committed
184 185

#
186
# Galileo EV64120 Board
Linus Torvalds's avatar
Linus Torvalds committed
187
#
188 189
core-$(CONFIG_MIPS_EV64120)	+= arch/mips/galileo-boards/ev64120/
load-$(CONFIG_MIPS_EV64120)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
190 191

#
192
# Galileo EV96100 Board
Linus Torvalds's avatar
Linus Torvalds committed
193
#
194 195 196
core-$(CONFIG_MIPS_EV96100)	+= arch/mips/galileo-boards/generic/ \
				   arch/mips/galileo-boards/ev96100/
load-$(CONFIG_MIPS_EV96100)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
197 198

#
199
# Globespan IVR eval board with QED 5231 CPU
Linus Torvalds's avatar
Linus Torvalds committed
200
#
201 202 203 204
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
205
#
206 207 208 209
# HP LaserJet
#
core-$(CONFIG_HP_LASERJET)	+= arch/mips/hp-lj/
load-$(CONFIG_HP_LASERJET)	+= 0x80030000
Linus Torvalds's avatar
Linus Torvalds committed
210

Linus Torvalds's avatar
Linus Torvalds committed
211
#
212
# ITE 8172 eval board with QED 5231 CPU
Linus Torvalds's avatar
Linus Torvalds committed
213
#
214 215 216
core-$(CONFIG_MIPS_ITE8172)	+= arch/mips/ite-boards/qed-4n-s01b/
load-$(CONFIG_MIPS_ITE8172)	+= 0x80100000

Linus Torvalds's avatar
Linus Torvalds committed
217
#
218 219 220 221 222
# MIPS Atlas board
#
core-$(CONFIG_MIPS_BOARDS_GEN)	+= arch/mips/mips-boards/generic/
core-$(CONFIG_MIPS_ATLAS)	+= arch/mips/mips-boards/atlas/
load-$(CONFIG_MIPS_ATLAS)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
223

Linus Torvalds's avatar
Linus Torvalds committed
224
#
225
# MIPS Malta board
Linus Torvalds's avatar
Linus Torvalds committed
226
#
227
core-$(CONFIG_MIPS_MALTA)	+= arch/mips/mips-boards/malta/
Ralf Bächle's avatar
Ralf Bächle committed
228
load-$(CONFIG_MIPS_MALTA)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
229

Linus Torvalds's avatar
Linus Torvalds committed
230
#
231
# MIPS SEAD board
Linus Torvalds's avatar
Linus Torvalds committed
232
#
233 234
core-$(CONFIG_MIPS_SEAD)	+= arch/mips/mips-boards/sead/
load-$(CONFIG_MIPS_SEAD)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
235 236

#
Linus Torvalds's avatar
Linus Torvalds committed
237 238
# Momentum Ocelot board
#
Linus Torvalds's avatar
Linus Torvalds committed
239 240
# The Ocelot setup.o must be linked early - it does the ioremap() for the
# mips_io_port_base.
241 242 243 244
#
core-$(CONFIG_MOMENCO_OCELOT)	+= arch/mips/gt64120/common/ \
				   arch/mips/gt64120/momenco_ocelot/
load-$(CONFIG_MOMENCO_OCELOT)	+= 0x80100000
Linus Torvalds's avatar
Linus Torvalds committed
245

Linus Torvalds's avatar
Linus Torvalds committed
246
#
247
# Momentum Ocelot-G board
Linus Torvalds's avatar
Linus Torvalds committed
248
#
249 250 251 252 253
# 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
254 255

#
256
# Momentum Ocelot-C and -CS boards
Linus Torvalds's avatar
Linus Torvalds committed
257
#
258 259 260 261
# 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
262 263

#
264
# NEC DDB Vrc-5074
Linus Torvalds's avatar
Linus Torvalds committed
265
#
266 267 268
core-$(CONFIG_DDB5XXX_COMMON)	+= arch/mips/ddb5xxx/common/
core-$(CONFIG_DDB5074)		+= arch/mips/ddb5xxx/ddb5074/
load-$(CONFIG_DDB5074)		+= 0x80080000
Linus Torvalds's avatar
Linus Torvalds committed
269 270

#
271
# NEC DDB Vrc-5476
Linus Torvalds's avatar
Linus Torvalds committed
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 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338
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/
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

#
# NEC Eagle/Hawk (VR4122/VR4131) board
#
core-$(CONFIG_VR41XX_COMMON)	+= arch/mips/vr41xx/common/
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
339 340 341
# 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.
342 343
#
core-$(CONFIG_SGI_IP22)		+= arch/mips/sgi-ip22/
Ralf Bächle's avatar
Ralf Bächle committed
344
ifdef CONFIG_MIPS32
345
load-$(CONFIG_SGI_IP22)		+= 0x88002000
Ralf Bächle's avatar
Ralf Bächle committed
346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382
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/
#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)
#
# Set the load address to >= 0x????????? if you want to leave space for symmon,
# 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/
ifdef CONFIG_MIPS32
load-$(CONFIG_SGI_IP32)		+= 0x88002000
endif
ifdef CONFIG_MIPS64
load-$(CONFIG_SGI_IP32)		+= 0x88004000
endif
383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430

#
# 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/
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/
load-$(CONFIG_SNI_RM200_PCI)	+= 0x80080000

#
# 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
431
core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/toshiba_rbtx4927/
432
core-$(CONFIG_TOSHIBA_RBTX4927)	+= arch/mips/tx4927/common/
Ralf Bächle's avatar
Ralf Bächle committed
433
load-$(CONFIG_TOSHIBA_RBTX4927)	+= 0x80020000
434 435 436

drivers-$(CONFIG_PCI)		+= arch/mips/pci/

Ralf Bächle's avatar
Ralf Bächle committed
437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476
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

ifdef CONFIG_MIPS64
#
# We use an unusual code model for building 64-bit kernels.  64-bit ELF,
# squeezed into 32-bit ELF files.  Later version of gas throw silly warnings
# which requires the use of -mgp64 which not all gas versions have ...
#
GRRR=-Wa,-mgp64
cflags-$(CONFIG_BOOT_ELF32)	+= -Wa,-32 $(call check_warning, $(GRRR),)
cflags-$(CONFIG_BOOT_ELF64)	+= -Wa,-32 $(call check_warning, $(GRRR),)
endif
Linus Torvalds's avatar
Linus Torvalds committed
477 478 479 480 481 482

#
# Choosing incompatible machines durings configuration will result in
# error messages during linking.  Select a default linkscript if
# none has been choosen above.
#
483

Ralf Bächle's avatar
Ralf Bächle committed
484 485 486 487 488 489 490 491 492
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
493

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

Ralf Bächle's avatar
Ralf Bächle committed
496 497 498 499 500 501 502
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
503 504 505 506 507

ifdef CONFIG_BAGET_MIPS

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

508
balo: vmlinux
Linus Torvalds's avatar
Linus Torvalds committed
509 510 511 512
	$(BAGETBOOT) balo

endif

513 514 515 516 517
ifdef CONFIG_LASAT
rom.bin rom.sw: vmlinux
	$(call descend,arch/mips/lasat/image,$@)
endif

Ralf Bächle's avatar
Ralf Bächle committed
518 519 520 521 522 523 524 525
ifdef CONFIG_MAPPED_KERNEL
vmlinux.64: vmlinux
	$(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xbfffffff40000000 $< $@
else
vmlinux.64: vmlinux
	$(OBJCOPY) -O $(64bit-bfd) --change-addresses=0xa7ffffff80000000 $< $@
endif

526
makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/mips/boot $(1)
Linus Torvalds's avatar
Linus Torvalds committed
527

528 529 530 531 532
#
# SNI firmware is f*cked in interesting ways ...
#
ifdef CONFIG_SNI_RM200_PCI
all:	vmlinux.rm200
Linus Torvalds's avatar
Linus Torvalds committed
533 534
endif

535 536
vmlinux.ecoff vmlinux.rm200: vmlinux
	+@$(call makeboot,$@)
Linus Torvalds's avatar
Linus Torvalds committed
537

538 539 540
CLEAN_FILES += vmlinux.ecoff \
	       vmlinux.rm200.tmp \
	       vmlinux.rm200
Linus Torvalds's avatar
Linus Torvalds committed
541

Linus Torvalds's avatar
Linus Torvalds committed
542
archclean:
543 544 545
	@$(MAKE) -f scripts/Makefile.clean obj=arch/mips/boot
	@$(MAKE) -f scripts/Makefile.clean obj=arch/mips/baget
	@$(MAKE) -f scripts/Makefile.clean obj=arch/mips/lasat
Linus Torvalds's avatar
Linus Torvalds committed
546

547 548 549 550 551 552 553 554 555
# 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
556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572
	 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"; \
573 574 575 576 577 578 579 580
	 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
581
	 echo "#endif /* _ASM_REG_H */" )
582 583
endef

Ralf Bächle's avatar
Ralf Bächle committed
584 585
prepare: include/asm-$(ARCH)/offset.h \
	 include/asm-$(ARCH)/reg.h
586 587 588 589 590 591

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
592 593
include/asm-$(ARCH)/reg.h: arch/$(ARCH)/kernel/reg.s
	$(call filechk,gen-asm-reg.h)
594 595

CLEAN_FILES += include/asm-$(ARCH)/offset.h.tmp \
Ralf Bächle's avatar
Ralf Bächle committed
596 597 598
	       include/asm-$(ARCH)/offset.h \
	       include/asm-$(ARCH)/reg.h.tmp \
	       include/asm-$(ARCH)/reg.h