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
6 # This file is included by the global makefile so that you can add your own
7 # architecture-specific flags and dependencies. Remember to do have actions
8 # for "archclean" and "archdep" for cleaning up and making dependencies for
13 # Select the object file format to substitute into the linker script.
16 ifdef CONFIG_CPU_LITTLE_ENDIAN
17 tool-prefix
= mips64el-linux-
19 tool-prefix
= mips64-linux-
22 ifdef CONFIG_CROSSCOMPILE
23 CROSS_COMPILE
= $(tool-prefix
)
27 # The ELF GCC uses -G0 -mabicalls -fpic as default. We don't need PIC
28 # code in the kernel since it only slows down the whole thing. For the
29 # old GCC these options are just the defaults. At some point we might
30 # make use of global pointer optimizations.
32 # The DECStation requires an ECOFF kernel for remote booting, other MIPS
33 # machines may also. Since BFD is incredibly buggy with respect to
34 # crossformat linking we rely on the elf2ecoff tool for format conversion.
36 CFLAGS
+= -I
$(TOPDIR
)/include/asm
$(CFLAGS
)
37 CFLAGS
+= -mabi
=64 -G
0 -mno-abicalls
-fno-pic
-Wa
,--trap
-pipe
38 LINKFLAGS
+= -G
0 -static
# -N
39 MODFLAGS
+= -mlong-calls
41 ifdef CONFIG_REMOTE_DEBUG
42 CFLAGS
:= $(CFLAGS
) -g
46 # CPU-dependent compiler/assembler options for optimization.
48 ifdef CONFIG_CPU_R4300
49 CFLAGS
:= $(CFLAGS
) -mcpu
=r4300
-mips3
51 ifdef CONFIG_CPU_R4X00
52 CFLAGS
:= $(CFLAGS
) -mcpu
=r4600
-mips3
54 ifdef CONFIG_CPU_R5000
55 CFLAGS
:= $(CFLAGS
) -mcpu
=r8000
-mips4
57 ifdef CONFIG_CPU_NEVADA
58 CFLAGS
:= $(CFLAGS
) -mcpu
=r8000
-mips3
-mmad
60 ifdef CONFIG_CPU_R8000
61 CFLAGS
:= $(CFLAGS
) -mcpu
=r8000
-mips4
63 ifdef CONFIG_CPU_R10000
64 CFLAGS
:= $(CFLAGS
) -mcpu
=r8000
-mips4
68 # Board-dependent options and extra files
71 LIBS
+= arch
/mips64
/sgi-ip22
/ip22.a arch
/mips64
/arc
/arclib.a
72 SUBDIRS
+= arch
/mips64
/sgi-ip22 arch
/mips64
/arc
74 # Set LOADADDR to >= 0x88069000 if you want to leave space for symmon,
75 # 0x88004000 for production kernels. Note that the value must be
76 # 16kb aligned or the handling of the current variable will break.
78 LOADADDR
+= 0x88004000
82 LIBS
+= arch
/mips64
/sgi-ip27
/ip27.a arch
/mips64
/arc
/arclib.a
83 SUBDIRS
+= arch
/mips64
/sgi-ip27 arch
/mips64
/arc
85 # Set LOADADDR to >= 0xc000000000300000 if you want to leave space for
86 # symmon, 0xc00000000001c000 for production kernels. Note that the value
87 # must be 16kb aligned or the handling of the current variable will break.
89 #LOADADDR += 0xa80000000001c000
90 ifdef CONFIG_MAPPED_KERNEL
91 LOADADDR
+= 0xc001c000
93 LOADADDR
+= 0x8001c000
98 # Some machines like the Indy need 32-bit ELF binaries for booting purposes.
99 # Other need ECOFF, so we build a 32-bit ELF binary for them which we then
100 # convert to ECOFF using elf2ecoff.
102 ifdef CONFIG_BOOT_ELF32
104 LINKFLAGS
+= -T arch
/mips64
/ld.script.elf32
107 # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit
108 # ELF files from 32-bit files by conversion.
110 ifdef CONFIG_BOOT_ELF64
112 LINKFLAGS
+= -T arch
/mips64
/ld.script.elf32
115 #LINKFLAGS += -T arch/mips64/ld.script.elf64
118 LINKFLAGS
+= -Ttext
$(LOADADDR
)
120 HEAD
:= arch
/mips64
/kernel
/head.o arch
/mips64
/kernel
/init_task.o
122 SUBDIRS
:= $(addprefix arch
/mips64
/, tools
) $(SUBDIRS
) $(addprefix arch
/mips64
/, kernel mm lib
)
123 CORE_FILES
:= arch
/mips64
/kernel
/kernel.o arch
/mips64
/mm
/mm.o
$(CORE_FILES
)
124 LIBS
:= arch
/mips64
/lib
/lib.a
$(LIBS
)
126 MAKEBOOT
= $(MAKE
) -C arch
/$(ARCH
)/boot
128 ifdef CONFIG_CPU_LITTLE_ENDIAN
129 64bit-bfd
= elf64-littlemips
131 64bit-bfd
= elf64-bigmips
134 vmlinux
: arch
/mips64
/ld.script.elf32
135 arch
/mips64
/ld.script.elf32
: arch
/mips64
/ld.script.elf32.S
136 $(CPP
) -C
-P
-I
$(HPATH
) -imacros
$(HPATH
)/asm-mips64
/sn
/mapped_kernel.h
-Umips arch
/mips64
/ld.script.elf32.S
> arch
/mips64
/ld.script.elf32
138 ifdef CONFIG_MAPPED_KERNEL
140 $(OBJCOPY
) -O
$(64bit-bfd
) --change-addresses
=0xbfffffff40000000 $< $@
143 $(OBJCOPY
) -O
$(64bit-bfd
) --change-addresses
=0xa7ffffff80000000 $< $@
156 $(MAKE
) -C arch
/$(ARCH
)/kernel
clean
157 $(MAKE
) -C arch
/$(ARCH
)/tools
clean
158 rm -f vmlinux
.64 arch
/$(ARCH
)/ld.script.elf32
161 @
$(MAKEBOOT
) mrproper
162 $(MAKE
) -C arch
/$(ARCH
)/tools mrproper
165 if
[ ! -f
$(TOPDIR
)/include/asm-
$(ARCH
)/offset.h
]; then \
166 touch
$(TOPDIR
)/include/asm-
$(ARCH
)/offset.h
; \