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