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