URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [mips64/] [Makefile] - Rev 1765
Compare with Previous | Blame | View Log
## 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.## Copyright (C) 2002, 2003 Maciej W. Rozycki## 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# for "archclean" and "archdep" for cleaning up and making dependencies for# this architecture#comma := ,## Select the object file format to substitute into the linker script.#ifdef CONFIG_CPU_LITTLE_ENDIANtool-prefix = mips64el-linux-elsetool-prefix = mips64-linux-endififdef CONFIG_CROSSCOMPILECROSS_COMPILE = $(tool-prefix)endif## The ELF GCC uses -G 0 -mabicalls -fpic as default. We don't need PIC# code in the kernel since it only slows down the whole thing. For the# old GCC these options are just the defaults. At some point we might# make use of global pointer optimizations.## 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.#GCCFLAGS := -I $(TOPDIR)/include/asm/gccGCCFLAGS += -mabi=64 -G 0 -mno-abicalls -fno-pic -Wa,--trap -pipeGCCFLAGS += $(call check_gcc, -finline-limit=100000,)LINKFLAGS += -G 0 -static # -NMODFLAGS += -mlong-callsifdef CONFIG_DEBUG_INFOGCCFLAGS += -gifdef CONFIG_SB1XXX_CORELISGCCFLAGS += -mno-sched-prolog -fno-omit-frame-pointerendifendifcheck_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)check_gas = $(shell if $(CC) $(1) -Wa,-Z -c -o /dev/null -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)## Use: $(call set_gccflags,<cpu0>,<isa0>,<cpu1>,<isa1>)## <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)#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_cpu=$$cpu; gcc_isa=$$isa; \gas_cpu=$$cpu; gas_isa=-Wa,$$isa; \while :; do \for gas_opt in -Wa,-march= -Wa,-mcpu=; do \$(CC) $$gas_opt$$cpu $$gas_isa -Wa,-Z -c -o /dev/null \-xassembler /dev/null > /dev/null 2>&1 && \break 2; \done; \gas_opt=; gas_cpu=; gas_isa=; \break; \done; \echo $$gcc_opt$$gcc_cpu $$gcc_isa $$gas_opt$$gas_cpu $$gas_isa)## CPU-dependent compiler/assembler options for optimization.#ifdef CONFIG_CPU_R4300GCCFLAGS += $(call set_gccflags,r4300,mips3,r4300,mips3)endififdef CONFIG_CPU_R4X00GCCFLAGS += $(call set_gccflags,r4600,mips3,r4600,mips3)endififdef CONFIG_CPU_R5000GCCFLAGS += $(call set_gccflags,r5000,mips4,r8000,mips4)endififdef CONFIG_CPU_NEVADAGCCFLAGS += $(call set_gccflags,rm5200,mips4,r8000,mips4)#GCCFLAGS += $(call check_gcc,-mmad,)endififdef CONFIG_CPU_RM7000GCCFLAGS += $(call set_gccflags,rm7000,mips4,r5000,mips4)endififdef CONFIG_CPU_RM9000GCCFLAGS += $(call set_gccflags,rm9000,mips4,r5000,mips4)endififdef CONFIG_CPU_R8000GCCFLAGS += $(call set_gccflags,r8000,mips4,r8000,mips4)endififdef CONFIG_CPU_R10000GCCFLAGS += $(call set_gccflags,r10000,mips4,r8000,mips4)endififdef CONFIG_CPU_SB1GCCFLAGS += $(call set_gccflags,sb1,mips64,r5000,mips4)ifdef CONFIG_SB1_PASS_1_WORKAROUNDSMODFLAGS += -msb1-pass1-workaroundsendifendififdef CONFIG_CPU_MIPS64GCCFLAGS += $(call set_gccflags,mips64,mips64,r8000,mips4)endif## We unconditionally build the math emulator#CORE_FILES += arch/mips/math-emu/fpu_emulator.oSUBDIRS += arch/mips/math-emu## ramdisk/initrd support# You need a compressed ramdisk image, named ramdisk.gz in# arch/mips/ramdisk#ifdef CONFIG_EMBEDDED_RAMDISKCORE_FILES += arch/mips/ramdisk/ramdisk.oSUBDIRS += arch/mips/ramdiskendif## Board-dependent options and extra files### Cobalt Server#ifdef CONFIG_MIPS_COBALTSUBDIRS += arch/mips/cobaltCORE_FILES += arch/mips/cobalt/cobalt.oLOADADDR := 0x80080000endif## DECstation family#ifdef CONFIG_DECSTATIONCORE_FILES += arch/mips/dec/dec.oSUBDIRS += arch/mips/dec arch/mips/dec/promLIBS += arch/mips/dec/prom/rexlib.aLOADADDR := 0x80040000endif## Galileo EV64120 Board#ifdef CONFIG_MIPS_EV64120LIBS += arch/mips/gt64120/common/gt64120.o \arch/mips/gt64120/ev64120/ev64120.oSUBDIRS += arch/mips/gt64120/common arch/mips/gt64120/ev64120LOADADDR := 0x80100000endif## MIPS Atlas board#ifdef CONFIG_MIPS_ATLASLIBS += arch/mips/mips-boards/atlas/atlas.o \arch/mips/mips-boards/generic/mipsboards.oSUBDIRS += arch/mips/mips-boards/generic arch/mips/mips-boards/atlasLOADADDR := 0x80100000endif## MIPS Malta board#ifdef CONFIG_MIPS_MALTALIBS += arch/mips/mips-boards/malta/malta.o \arch/mips/mips-boards/generic/mipsboards.oSUBDIRS += arch/mips/mips-boards/malta arch/mips/mips-boards/genericLOADADDR := 0x80100000endif## MIPS SEAD board#ifdef CONFIG_MIPS_SEADLIBS += arch/mips/mips-boards/sead/sead.o \arch/mips/mips-boards/generic/mipsboards.oSUBDIRS += arch/mips/mips-boards/generic arch/mips/mips-boards/seadLOADADDR := 0x80100000endif## Momentum Ocelot board#ifdef CONFIG_MOMENCO_OCELOT# The Ocelot setup.o must be linked early - it does the ioremap() for the# mips_io_port_base.CORE_FILES += arch/mips/gt64120/common/gt64120.o \arch/mips/gt64120/momenco_ocelot/momenco_ocelot.oSUBDIRS += arch/mips/gt64120/common arch/mips/gt64120/momenco_ocelotLOADADDR := 0x80100000endif## Momentum Ocelot-G board#ifdef CONFIG_MOMENCO_OCELOT_G# The Ocelot-G setup.o must be linked early - it does the ioremap() for the# mips_io_port_base.CORE_FILES += arch/mips/momentum/ocelot_g/ocelot_g.oSUBDIRS += arch/mips/momentum/ocelot_gLOADADDR := 0x80100000endif## Momentum Ocelot-C and -CS boards#ifdef CONFIG_MOMENCO_OCELOT_CCORE_FILES += arch/mips/momentum/ocelot_c/ocelot_c.oSUBDIRS += arch/mips/momentum/ocelot_cLOADADDR := 0x80100000endififdef CONFIG_MOMENCO_JAGUAR_ATXLIBS += arch/mips/momentum/jaguar_atx/jaguar_atx.oSUBDIRS += arch/mips/momentum/jaguar_atxifdef CONFIG_JAGUAR_DMALOWLOADADDR := 0x88000000elseLOADADDR := 0x80100000endifendififdef CONFIG_PCICORE_FILES += arch/mips/pci/pci-core.oSUBDIRS += arch/mips/pciendif## SGI IP22 (Indy/Indigo2)#ifdef CONFIG_SGI_IP22CORE_FILES += arch/mips/sgi-ip22/ip22-kern.oLIBS += arch/mips/arc/arclib.aSUBDIRS += arch/mips/sgi-ip22 arch/mips/arc## Set LOADADDR to >= 0x88069000 if you want to leave space for symmon,# 0x88004000 for production kernels. Note that the value must be# 16kb aligned or the handling of the current variable will break.#LOADADDR := 0x88004000endif## SGI-IP27 (Origin200/2000)#ifdef CONFIG_SGI_IP27CORE_FILES += arch/mips/sgi-ip27/ip27.oLIBS += arch/mips/arc/arclib.aSUBDIRS += arch/mips/sgi-ip27 arch/mips/arc## Set LOADADDR 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.##LOADADDR := 0xa80000000001c000ifdef CONFIG_MAPPED_KERNELLOADADDR := 0xc001c000elseLOADADDR := 0x8001c000endifendif## Sibyte SB1250 SOC and Broadcom (SiByte) BCM112x SOCs#ifneq ($(CONFIG_SIBYTE_SB1250)$(CONFIG_SIBYTE_BCM112X),)# 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)LIBS += arch/mips/sibyte/sb1250/sb1250.oSUBDIRS += arch/mips/sibyte/sb1250ifdef CONFIG_MIPS_UNCACHEDLOADADDR := 0xa0100000elseLOADADDR := 0x80100000endifendif## Sibyte boards:## BCM91250A (SWARM),# BCM91250E (Sentosa),# BCM91120C (CRhine),# BCM91120x (Carmel),# BCM91125C (CRhone),# BCM91125E (Rhone).#ifdef CONFIG_SIBYTE_BOARDLIBS += arch/mips/sibyte/swarm/sbswarm.aSUBDIRS += arch/mips/sibyte/swarmendif## Sibyte CFE firmware#ifdef CONFIG_SIBYTE_CFELIBS += arch/mips/sibyte/cfe/cfe.aSUBDIRS += arch/mips/sibyte/cfeendif## 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.#ifdef CONFIG_BOOT_ELF32GCCFLAGS += -Wa,-32 $(call check_gas,-Wa$(comma)-mgp64,)LINKFLAGS += -T arch/mips64/ld.script.elf32endif## The 64-bit ELF tools are pretty broken so at this time we generate 64-bit# ELF files from 32-bit files by conversion.#ifdef CONFIG_BOOT_ELF64GCCFLAGS += -Wa,-32 $(call check_gas,-Wa$(comma)-mgp64,)LINKFLAGS += -T arch/mips64/ld.script.elf32#AS += -64#LD += -m elf64bmip#LINKFLAGS += -T arch/mips64/ld.script.elf64endififdef CONFIG_CPU_LITTLE_ENDIAN32bit-bfd = elf32-tradlittlemips64bit-bfd = elf64-tradlittlemipselse32bit-bfd = elf32-tradbigmips64bit-bfd = elf64-tradbigmipsendifAFLAGS += $(GCCFLAGS)CFLAGS += $(GCCFLAGS)LD += --oformat $(32bit-bfd)LINKFLAGS += -Ttext $(LOADADDR)HEAD := arch/mips64/kernel/head.o arch/mips64/kernel/init_task.oSUBDIRS := $(addprefix arch/mips/, tools) $(SUBDIRS) $(addprefix arch/mips64/, kernel mm lib)CORE_FILES := arch/mips64/kernel/kernel.o arch/mips64/mm/mm.o $(CORE_FILES)LIBS := arch/mips64/lib/lib.a $(LIBS)MAKEBOOT = $(MAKE) -C arch/$(ARCH)/bootvmlinux: arch/mips64/ld.script.elf32arch/mips64/ld.script.elf32: arch/mips64/ld.script.elf32.S$(CPP) -C -P -I$(HPATH) -imacros $(HPATH)/asm-mips64/sn/mapped_kernel.h -Umips arch/mips64/ld.script.elf32.S > arch/mips64/ld.script.elf32ifdef CONFIG_MAPPED_KERNELvmlinux.64: vmlinux$(OBJCOPY) -O $(64bit-bfd) --remove-section=.reginfo --change-addresses=0xc000000080000000 $< $@elsevmlinux.64: vmlinux$(OBJCOPY) -O $(64bit-bfd) --remove-section=.reginfo --change-addresses=0xa800000080000000 $< $@endifvmlinux.ecoff: vmlinux@$(MAKEBOOT) $@archclean:@$(MAKEBOOT) clean$(MAKE) -C arch/mips/tools cleanrm -f vmlinux.64 arch/$(ARCH)/ld.script.elf32archmrproper:@$(MAKEBOOT) mrproper$(MAKE) -C arch/mips/tools mrproper$(RM) $(TOPDIR)/include/asm-$(ARCH)/offset.harchdep:if [ ! -f $(TOPDIR)/include/asm-$(ARCH)/offset.h ]; then \touch $(TOPDIR)/include/asm-$(ARCH)/offset.h; \fi;@$(MAKEBOOT) dep
