1 # This file is included by the global makefile << 2 # architecture-specific flags and dependencies << 3 # 1 # 4 # This file is subject to the terms and condit 2 # This file is subject to the terms and conditions of the GNU General Public 5 # License. See the file "COPYING" in the main 3 # License. See the file "COPYING" in the main directory of this archive 6 # for more details. 4 # for more details. 7 # 5 # 8 # Copyright (C) 1994 by Linus Torvalds !! 6 # Copyright (C) 1994, 95, 96, 2003 by Ralf Baechle 9 # Changes for PPC by Gary Thomas !! 7 # DECStation modifications by Paul M. Antoine, 1996 10 # Rewritten by Cort Dougan and Paul Mackerras !! 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 >> 15 KBUILD_DEFCONFIG := ip22_defconfig >> 16 >> 17 # >> 18 # Select the object file format to substitute into the linker script. 11 # 19 # >> 20 ifdef CONFIG_CPU_LITTLE_ENDIAN >> 21 32bit-tool-archpref = mipsel >> 22 64bit-tool-archpref = mips64el >> 23 32bit-bfd = elf32-tradlittlemips >> 24 64bit-bfd = elf64-tradlittlemips >> 25 32bit-emul = elf32ltsmip >> 26 64bit-emul = elf64ltsmip >> 27 else >> 28 32bit-tool-archpref = mips >> 29 64bit-tool-archpref = mips64 >> 30 32bit-bfd = elf32-tradbigmips >> 31 64bit-bfd = elf64-tradbigmips >> 32 32bit-emul = elf32btsmip >> 33 64bit-emul = elf64btsmip >> 34 endif 12 35 13 ifdef cross_compiling !! 36 ifdef CONFIG_32BIT >> 37 tool-archpref = $(32bit-tool-archpref) >> 38 UTS_MACHINE := mips >> 39 endif >> 40 ifdef CONFIG_64BIT >> 41 tool-archpref = $(64bit-tool-archpref) >> 42 UTS_MACHINE := mips64 >> 43 endif >> 44 >> 45 ifneq ($(SUBARCH),$(ARCH)) 14 ifeq ($(CROSS_COMPILE),) 46 ifeq ($(CROSS_COMPILE),) 15 # Auto detect cross compiler prefix. !! 47 CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-) 16 # Look for: (powerpc(64(le)?)?)(-unknown)? << 17 CC_ARCHES := powerpc powerpc64 powerpc64le << 18 CC_SUFFIXES := linux linux-gnu unknown-lin << 19 CROSS_COMPILE := $(call cc-cross-prefix, $ << 20 $(foreach s,$(CC_SUFFIX << 21 endif 48 endif 22 endif 49 endif 23 50 24 HAS_BIARCH := $(call cc-option-yn, -m32) !! 51 ifdef CONFIG_FUNCTION_GRAPH_TRACER >> 52 ifndef KBUILD_MCOUNT_RA_ADDRESS >> 53 ifeq ($(call cc-option-yn,-mmcount-ra-address), y) >> 54 cflags-y += -mmcount-ra-address -DKBUILD_MCOUNT_RA_ADDRESS >> 55 endif >> 56 endif >> 57 endif >> 58 cflags-y += $(call cc-option, -mno-check-zero-division) 25 59 26 # Set default 32 bits cross compilers for vdso !! 60 ifdef CONFIG_32BIT 27 CROSS32_COMPILE ?= !! 61 ld-emul = $(32bit-emul) >> 62 vmlinux-32 = vmlinux >> 63 vmlinux-64 = vmlinux.64 28 64 29 # If we're on a ppc/ppc64/ppc64le machine use !! 65 cflags-y += -mabi=32 30 # ppc64le_defconfig because we have nothing be !! 66 endif 31 uname := $(shell uname -m) << 32 KBUILD_DEFCONFIG := $(if $(filter ppc%,$(uname << 33 67 34 new_nm := $(shell if $(NM) --help 2>&1 | grep !! 68 ifdef CONFIG_64BIT >> 69 ld-emul = $(64bit-emul) >> 70 vmlinux-32 = vmlinux.32 >> 71 vmlinux-64 = vmlinux 35 72 36 ifeq ($(new_nm),y) !! 73 cflags-y += -mabi=64 37 NM := $(NM) --synthetic << 38 endif 74 endif 39 75 40 # BITS is used as extension for files which ar !! 76 all-$(CONFIG_BOOT_ELF32) := $(vmlinux-32) 41 # and a 64 bit version to simplify shared Make !! 77 all-$(CONFIG_BOOT_ELF64) := $(vmlinux-64) 42 # e.g.: obj-y += foo_$(BITS).o !! 78 all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz 43 export BITS << 44 79 45 ifdef CONFIG_PPC64 !! 80 # 46 BITS := 64 !! 81 # GCC uses -G 0 -mabicalls -fpic as default. We don't want PIC in the kernel 47 else !! 82 # code since it only slows down the whole thing. At some point we might make 48 BITS := 32 !! 83 # use of global pointer optimizations but their use of $28 conflicts with 49 endif !! 84 # the current pointer optimization. >> 85 # >> 86 # The DECStation requires an ECOFF kernel for remote booting, other MIPS >> 87 # machines may also. Since BFD is incredibly buggy with respect to >> 88 # crossformat linking we rely on the elf2ecoff tool for format conversion. >> 89 # >> 90 cflags-y += -G 0 -mno-abicalls -fno-pic -pipe >> 91 cflags-y += -msoft-float >> 92 LDFLAGS_vmlinux += -G 0 -static -n -nostdlib >> 93 KBUILD_AFLAGS_MODULE += -mlong-calls >> 94 KBUILD_CFLAGS_MODULE += -mlong-calls 50 95 51 machine-y = ppc !! 96 # 52 machine-$(CONFIG_PPC64) += 64 !! 97 # pass -msoft-float to GAS if it supports it. However on newer binutils 53 machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le !! 98 # (specifically newer than 2.24.51.20140728) we then also need to explicitly 54 UTS_MACHINE := $(subst $(space),,$(machine-y)) !! 99 # set ".set hardfloat" in all files which manipulate floating point registers. 55 !! 100 # 56 ifeq ($(CONFIG_PPC64)$(CONFIG_LD_IS_BFD),yy) !! 101 ifneq ($(call as-option,-Wa$(comma)-msoft-float,),) 57 # Have the linker provide sfpr if possible. !! 102 cflags-y += -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float 58 # There is a corresponding test in arch/powerp << 59 KBUILD_LDFLAGS_MODULE += --save-restore-funcs << 60 else << 61 KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crts << 62 endif 103 endif 63 104 64 ifdef CONFIG_CPU_LITTLE_ENDIAN !! 105 cflags-y += -ffreestanding 65 KBUILD_CFLAGS += -mlittle-endian << 66 KBUILD_LDFLAGS += -EL << 67 LDEMULATION := lppc << 68 GNUTARGET := powerpcle << 69 MULTIPLEWORD := -mno-multiple << 70 KBUILD_CFLAGS_MODULE += $(call cc-option,-mno- << 71 else << 72 KBUILD_CFLAGS += $(call cc-option,-mbig-endian << 73 KBUILD_LDFLAGS += -EB << 74 LDEMULATION := ppc << 75 GNUTARGET := powerpc << 76 MULTIPLEWORD := -mmultiple << 77 endif << 78 106 79 ifdef CONFIG_PPC64 !! 107 # 80 ifndef CONFIG_CC_IS_CLANG !! 108 # We explicitly add the endianness specifier if needed, this allows 81 cflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(c !! 109 # to compile kernels with a toolchain for the other endianness. We 82 cflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(c !! 110 # carefully avoid to add it redundantly because gcc 3.3/3.4 complains 83 aflags-$(CONFIG_PPC64_ELF_ABI_V1) += $(c !! 111 # when fed the toolchain default! 84 aflags-$(CONFIG_PPC64_ELF_ABI_V2) += -ma !! 112 # >> 113 # Certain gcc versions up to gcc 4.1.1 (probably 4.2-subversion as of >> 114 # 2006-10-10 don't properly change the predefined symbols if -EB / -EL >> 115 # are used, so we kludge that here. A bug has been filed at >> 116 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29413. >> 117 # >> 118 undef-all += -UMIPSEB -U_MIPSEB -U__MIPSEB -U__MIPSEB__ >> 119 undef-all += -UMIPSEL -U_MIPSEL -U__MIPSEL -U__MIPSEL__ >> 120 predef-be += -DMIPSEB -D_MIPSEB -D__MIPSEB -D__MIPSEB__ >> 121 predef-le += -DMIPSEL -D_MIPSEL -D__MIPSEL -D__MIPSEL__ >> 122 cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' && echo -EB $(undef-all) $(predef-be)) >> 123 cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += $(shell $(CC) -dumpmachine |grep -q 'mips.*el-.*' || echo -EL $(undef-all) $(predef-le)) >> 124 >> 125 cflags-$(CONFIG_SB1XXX_CORELIS) += $(call cc-option,-mno-sched-prolog) \ >> 126 -fno-omit-frame-pointer >> 127 # >> 128 # CPU-dependent compiler/assembler options for optimization. >> 129 # >> 130 cflags-$(CONFIG_CPU_R3000) += -march=r3000 >> 131 cflags-$(CONFIG_CPU_TX39XX) += -march=r3900 >> 132 cflags-$(CONFIG_CPU_R6000) += -march=r6000 -Wa,--trap >> 133 cflags-$(CONFIG_CPU_R4300) += -march=r4300 -Wa,--trap >> 134 cflags-$(CONFIG_CPU_VR41XX) += -march=r4100 -Wa,--trap >> 135 cflags-$(CONFIG_CPU_R4X00) += -march=r4600 -Wa,--trap >> 136 cflags-$(CONFIG_CPU_TX49XX) += -march=r4600 -Wa,--trap >> 137 cflags-$(CONFIG_CPU_MIPS32_R1) += $(call cc-option,-march=mips32,-mips32 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \ >> 138 -Wa,-mips32 -Wa,--trap >> 139 cflags-$(CONFIG_CPU_MIPS32_R2) += $(call cc-option,-march=mips32r2,-mips32r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS32) \ >> 140 -Wa,-mips32r2 -Wa,--trap >> 141 cflags-$(CONFIG_CPU_MIPS32_R6) += -march=mips32r6 -Wa,--trap >> 142 cflags-$(CONFIG_CPU_MIPS64_R1) += $(call cc-option,-march=mips64,-mips64 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \ >> 143 -Wa,-mips64 -Wa,--trap >> 144 cflags-$(CONFIG_CPU_MIPS64_R2) += $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \ >> 145 -Wa,-mips64r2 -Wa,--trap >> 146 cflags-$(CONFIG_CPU_MIPS64_R6) += -march=mips64r6 -Wa,--trap >> 147 cflags-$(CONFIG_CPU_R5000) += -march=r5000 -Wa,--trap >> 148 cflags-$(CONFIG_CPU_R5432) += $(call cc-option,-march=r5400,-march=r5000) \ >> 149 -Wa,--trap >> 150 cflags-$(CONFIG_CPU_R5500) += $(call cc-option,-march=r5500,-march=r5000) \ >> 151 -Wa,--trap >> 152 cflags-$(CONFIG_CPU_NEVADA) += $(call cc-option,-march=rm5200,-march=r5000) \ >> 153 -Wa,--trap >> 154 cflags-$(CONFIG_CPU_RM7000) += $(call cc-option,-march=rm7000,-march=r5000) \ >> 155 -Wa,--trap >> 156 cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-march=sb1,-march=r5000) \ >> 157 -Wa,--trap >> 158 cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-mno-mdmx) >> 159 cflags-$(CONFIG_CPU_SB1) += $(call cc-option,-mno-mips3d) >> 160 cflags-$(CONFIG_CPU_R8000) += -march=r8000 -Wa,--trap >> 161 cflags-$(CONFIG_CPU_R10000) += $(call cc-option,-march=r10000,-march=r8000) \ >> 162 -Wa,--trap >> 163 cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += $(call cc-option,-march=octeon) -Wa,--trap >> 164 ifeq (,$(findstring march=octeon, $(cflags-$(CONFIG_CPU_CAVIUM_OCTEON)))) >> 165 cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon 85 endif 166 endif >> 167 cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1 >> 168 cflags-$(CONFIG_CPU_BMIPS) += -march=mips32 -Wa,-mips32 -Wa,--trap >> 169 # >> 170 # binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a >> 171 # as MIPS64 R1; older versions as just R1. This leaves the possibility open >> 172 # that GCC might generate R2 code for -march=loongson3a which then is rejected >> 173 # by GAS. The cc-option can't probe for this behaviour so -march=loongson3a >> 174 # can't easily be used safely within the kbuild framework. >> 175 # >> 176 cflags-$(CONFIG_CPU_LOONGSON3) += \ >> 177 $(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \ >> 178 -Wa,-mips64r2 -Wa,--trap >> 179 >> 180 cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,) >> 181 cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,) >> 182 cflags-$(CONFIG_CPU_DADDI_WORKAROUNDS) += $(call cc-option,-mno-daddi,) >> 183 >> 184 # For smartmips configurations, there are hundreds of warnings due to ISA overrides >> 185 # in assembly and header files. smartmips is only supported for MIPS32r1 onwards >> 186 # and there is no support for 64-bit. Various '.set mips2' or '.set mips3' or >> 187 # similar directives in the kernel will spam the build logs with the following warnings: >> 188 # Warning: the `smartmips' extension requires MIPS32 revision 1 or greater >> 189 # or >> 190 # Warning: the 64-bit MIPS architecture does not support the `smartmips' extension >> 191 # Pass -Wa,--no-warn to disable all assembler warnings until the kernel code has >> 192 # been fixed properly. >> 193 mips-cflags := $(cflags-y) >> 194 ifeq ($(CONFIG_CPU_HAS_SMARTMIPS),y) >> 195 smartmips-ase := $(call cc-option-yn,$(mips-cflags) -msmartmips) >> 196 cflags-$(smartmips-ase) += -msmartmips -Wa,--no-warn >> 197 endif >> 198 ifeq ($(CONFIG_CPU_MICROMIPS),y) >> 199 micromips-ase := $(call cc-option-yn,$(mips-cflags) -mmicromips) >> 200 cflags-$(micromips-ase) += -mmicromips >> 201 endif >> 202 ifeq ($(CONFIG_CPU_HAS_MSA),y) >> 203 toolchain-msa := $(call cc-option-yn,$(mips-cflags) -mhard-float -mfp64 -Wa$(comma)-mmsa) >> 204 cflags-$(toolchain-msa) += -DTOOLCHAIN_SUPPORTS_MSA 86 endif 205 endif 87 206 88 ifndef CONFIG_CC_IS_CLANG !! 207 # 89 cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -mn !! 208 # Firmware support >> 209 # >> 210 libs-$(CONFIG_FW_ARC) += arch/mips/fw/arc/ >> 211 libs-$(CONFIG_FW_CFE) += arch/mips/fw/cfe/ >> 212 libs-$(CONFIG_FW_SNIPROM) += arch/mips/fw/sni/ >> 213 libs-y += arch/mips/fw/lib/ >> 214 >> 215 # >> 216 # Kernel compression >> 217 # >> 218 ifdef SYS_SUPPORTS_ZBOOT >> 219 COMPRESSION_FNAME = vmlinuz >> 220 else >> 221 COMPRESSION_FNAME = vmlinux 90 endif 222 endif 91 223 92 cflags-$(CONFIG_CPU_BIG_ENDIAN) += $(c !! 224 # 93 cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml !! 225 # Board-dependent options and extra files 94 aflags-$(CONFIG_CPU_BIG_ENDIAN) += $(c !! 226 # 95 aflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml !! 227 include arch/mips/Kbuild.platforms 96 228 97 ifeq ($(HAS_BIARCH),y) !! 229 ifdef CONFIG_PHYSICAL_START 98 KBUILD_CFLAGS += -m$(BITS) !! 230 load-y = $(CONFIG_PHYSICAL_START) 99 KBUILD_AFLAGS += -m$(BITS) << 100 KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION) << 101 endif 231 endif >> 232 entry-y = 0x$(shell $(NM) vmlinux 2>/dev/null \ >> 233 | grep "\bkernel_entry\b" | cut -f1 -d \ ) 102 234 103 cflags-$(CONFIG_STACKPROTECTOR) += -mstack-pro !! 235 cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic 104 ifdef CONFIG_PPC64 !! 236 drivers-$(CONFIG_PCI) += arch/mips/pci/ 105 cflags-$(CONFIG_STACKPROTECTOR) += -mstack-pro << 106 else << 107 cflags-$(CONFIG_STACKPROTECTOR) += -mstack-pro << 108 endif << 109 237 110 LDFLAGS_vmlinux-y := -Bstatic !! 238 # 111 LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie !! 239 # Automatically detect the build format. By default we choose 112 LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) += -z no !! 240 # the elf format according to the load address. 113 LDFLAGS_vmlinux := $(LDFLAGS_vmlinux-y) !! 241 # We can always force a build with a 64-bits symbol format by 114 !! 242 # passing 'KBUILD_SYM32=no' option to the make's command line. 115 ifdef CONFIG_PPC64 !! 243 # 116 ifndef CONFIG_PPC_KERNEL_PCREL !! 244 ifdef CONFIG_64BIT 117 # -mcmodel=medium breaks modules becau !! 245 ifndef KBUILD_SYM32 118 # the TOC pointer to create pointers w !! 246 ifeq ($(shell expr $(load-y) \< 0xffffffff80000000), 0) 119 # percpu data area are created by this !! 247 KBUILD_SYM32 = y 120 # !! 248 endif 121 # The kernel module loader relocates t !! 249 endif 122 # original location (starting with 0xd << 123 # kernel percpu data space (starting w << 124 # 64bit relocation for this to work, h << 125 KBUILD_CFLAGS_MODULE += -mcmodel=large << 126 endif << 127 endif << 128 250 129 CFLAGS-$(CONFIG_PPC64) := $(call cc-option,-m !! 251 ifeq ($(KBUILD_SYM32)$(call cc-option-yn,-msym32), yy) 130 ifdef CONFIG_PPC64_ELF_ABI_V2 !! 252 cflags-y += -msym32 -DKBUILD_64BIT_SYM32 131 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-m !! 253 else 132 else !! 254 ifeq ($(CONFIG_CPU_DADDI_WORKAROUNDS), y) 133 ifndef CONFIG_CC_IS_CLANG !! 255 $(error CONFIG_CPU_DADDI_WORKAROUNDS unsupported without -msym32) 134 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-m !! 256 endif 135 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-m !! 257 endif 136 endif << 137 endif 258 endif 138 CFLAGS-$(CONFIG_PPC64) += -mcmodel=medium << 139 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-m << 140 CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-m << 141 << 142 # Clang unconditionally reserves r2 on ppc32 a << 143 # https://llvm.org/pr39555 << 144 CFLAGS-$(CONFIG_PPC32) := $(call cc-option, - << 145 259 146 # Clang doesn't support -mmultiple / -mno-mult !! 260 KBUILD_AFLAGS += $(cflags-y) 147 # https://llvm.org/pr39556 !! 261 KBUILD_CFLAGS += $(cflags-y) 148 CFLAGS-$(CONFIG_PPC32) += $(call cc-option, $ !! 262 KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y) >> 263 KBUILD_CPPFLAGS += -DDATAOFFSET=$(if $(dataoffset-y),$(dataoffset-y),0) 149 264 150 CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-m !! 265 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) \ >> 266 VMLINUX_ENTRY_ADDRESS=$(entry-y) 151 267 152 CC_FLAGS_FPU := $(call cc-option,-m !! 268 LDFLAGS += -m $(ld-emul) 153 CC_FLAGS_NO_FPU := $(call cc-option,-m << 154 269 155 ifdef CONFIG_FUNCTION_TRACER !! 270 ifdef CONFIG_MIPS 156 ifdef CONFIG_ARCH_USING_PATCHABLE_FUNCTION_ENT !! 271 CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ 157 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI !! 272 egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ 158 CC_FLAGS_FTRACE := -fpatchable-function-entry= !! 273 sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') 159 else !! 274 ifdef CONFIG_64BIT 160 CC_FLAGS_FTRACE := -pg !! 275 CHECKFLAGS += -m64 161 ifdef CONFIG_MPROFILE_KERNEL << 162 CC_FLAGS_FTRACE += -mprofile-kernel << 163 endif << 164 endif 276 endif 165 endif 277 endif 166 278 167 CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CO !! 279 OBJCOPYFLAGS += --remove-section=.reginfo 168 AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += -mcpu=$(CO << 169 280 170 CFLAGS-y += $(CONFIG_TUNE_CPU) !! 281 head-y := arch/mips/kernel/head.o 171 282 172 asinstr := $(call as-instr,lis 9$(comma)foo@hi !! 283 libs-y += arch/mips/lib/ >> 284 libs-y += arch/mips/math-emu/ 173 285 174 KBUILD_CPPFLAGS += -I $(srctree)/arch/powerpc !! 286 # See arch/mips/Kbuild for content of core part of the kernel 175 KBUILD_AFLAGS += $(AFLAGS-y) !! 287 core-y += arch/mips/ 176 KBUILD_CFLAGS += $(CC_FLAGS_NO_FPU) << 177 KBUILD_CFLAGS += $(CFLAGS-y) << 178 CPP = $(CC) -E $(KBUILD_CFLAGS) << 179 288 180 CHECKFLAGS += -m$(BITS) -D__powerpc__ -D_ !! 289 drivers-$(CONFIG_OPROFILE) += arch/mips/oprofile/ 181 ifdef CONFIG_CPU_BIG_ENDIAN << 182 CHECKFLAGS += -D__BIG_ENDIAN__ << 183 else << 184 CHECKFLAGS += -D__LITTLE_ENDIAN__ << 185 endif << 186 290 187 ifdef CONFIG_476FPE_ERR46 !! 291 # suspend and hibernation support 188 KBUILD_LDFLAGS_MODULE += --ppc476-work !! 292 drivers-$(CONFIG_PM) += arch/mips/power/ 189 -T $(srctree)/arch/powerpc/pla !! 293 >> 294 # boot image targets (arch/mips/boot/) >> 295 boot-y := vmlinux.bin >> 296 boot-y += vmlinux.ecoff >> 297 boot-y += vmlinux.srec >> 298 ifeq ($(shell expr $(load-y) \< 0xffffffff80000000 2> /dev/null), 0) >> 299 boot-y += uImage >> 300 boot-y += uImage.bin >> 301 boot-y += uImage.bz2 >> 302 boot-y += uImage.gz >> 303 boot-y += uImage.lzma >> 304 boot-y += uImage.lzo 190 endif 305 endif 191 306 192 # No prefix or pcrel !! 307 # compressed boot image targets (arch/mips/boot/compressed/) 193 ifdef CONFIG_PPC_KERNEL_PREFIXED !! 308 bootz-y := vmlinuz 194 KBUILD_CFLAGS += $(call cc-option,-mprefixed) !! 309 bootz-y += vmlinuz.bin 195 else !! 310 bootz-y += vmlinuz.ecoff 196 KBUILD_CFLAGS += $(call cc-option,-mno-prefixe !! 311 bootz-y += vmlinuz.srec >> 312 >> 313 ifdef CONFIG_LASAT >> 314 rom.bin rom.sw: vmlinux >> 315 $(Q)$(MAKE) $(build)=arch/mips/lasat/image \ >> 316 $(bootvars-y) $@ 197 endif 317 endif 198 ifdef CONFIG_PPC_KERNEL_PCREL !! 318 199 KBUILD_CFLAGS += $(call cc-option,-mpcrel) !! 319 # >> 320 # Some machines like the Indy need 32-bit ELF binaries for booting purposes. >> 321 # Other need ECOFF, so we build a 32-bit ELF binary for them which we then >> 322 # convert to ECOFF using elf2ecoff. >> 323 # >> 324 quiet_cmd_32 = OBJCOPY $@ >> 325 cmd_32 = $(OBJCOPY) -O $(32bit-bfd) $(OBJCOPYFLAGS) $< $@ >> 326 vmlinux.32: vmlinux >> 327 $(call cmd,32) >> 328 >> 329 # >> 330 # The 64-bit ELF tools are pretty broken so at this time we generate 64-bit >> 331 # ELF files from 32-bit files by conversion. >> 332 # >> 333 quiet_cmd_64 = OBJCOPY $@ >> 334 cmd_64 = $(OBJCOPY) -O $(64bit-bfd) $(OBJCOPYFLAGS) $< $@ >> 335 vmlinux.64: vmlinux >> 336 $(call cmd,64) >> 337 >> 338 all: $(all-y) >> 339 >> 340 # boot >> 341 $(boot-y): $(vmlinux-32) FORCE >> 342 $(Q)$(MAKE) $(build)=arch/mips/boot VMLINUX=$(vmlinux-32) \ >> 343 $(bootvars-y) arch/mips/boot/$@ >> 344 >> 345 ifdef CONFIG_SYS_SUPPORTS_ZBOOT >> 346 # boot/compressed >> 347 $(bootz-y): $(vmlinux-32) FORCE >> 348 $(Q)$(MAKE) $(build)=arch/mips/boot/compressed \ >> 349 $(bootvars-y) 32bit-bfd=$(32bit-bfd) $@ 200 else 350 else 201 KBUILD_CFLAGS += $(call cc-option,-mno-pcrel) !! 351 vmlinuz: FORCE >> 352 @echo ' CONFIG_SYS_SUPPORTS_ZBOOT is not enabled' >> 353 /bin/false 202 endif 354 endif 203 355 204 # No AltiVec or VSX or MMA instructions when b << 205 KBUILD_CFLAGS += $(call cc-option,-mno-altivec << 206 KBUILD_CFLAGS += $(call cc-option,-mno-vsx) << 207 KBUILD_CFLAGS += $(call cc-option,-mno-mma) << 208 << 209 # No SPE instruction when building kernel << 210 # (We use all available options to help semi-b << 211 KBUILD_CFLAGS += $(call cc-option,-mno-spe) << 212 KBUILD_CFLAGS += $(call cc-option,-mspe=no) << 213 << 214 # Don't emit .eh_frame since we have no use fo << 215 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl << 216 << 217 # Never use string load/store instructions as << 218 # often slow when they are implemented at all << 219 KBUILD_CFLAGS += $(call cc-option,-m << 220 << 221 KBUILD_AFLAGS += $(aflags-y) << 222 KBUILD_CFLAGS += $(cflags-y) << 223 << 224 # Default to zImage, override when needed << 225 all: zImage << 226 << 227 # With make 3.82 we cannot mix normal and wild << 228 BOOT_TARGETS1 := zImage zImage.initrd uImage << 229 BOOT_TARGETS2 := zImage% dtbImage% treeImage.% << 230 << 231 PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2) << 232 << 233 boot := arch/powerpc/boot << 234 << 235 $(BOOT_TARGETS1): vmlinux << 236 $(Q)$(MAKE) $(build)=$(boot) $(patsubs << 237 $(BOOT_TARGETS2): vmlinux << 238 $(Q)$(MAKE) $(build)=$(boot) $(patsubs << 239 << 240 << 241 PHONY += bootwrapper_install << 242 bootwrapper_install: << 243 $(Q)$(MAKE) $(build)=$(boot) $(patsubs << 244 << 245 include $(srctree)/scripts/Makefile.defconf << 246 << 247 generated_configs += ppc64le_defconfig << 248 ppc64le_defconfig: << 249 $(call merge_into_defconfig,ppc64_defc << 250 << 251 generated_configs += ppc64le_guest_defconfig << 252 ppc64le_guest_defconfig: << 253 $(call merge_into_defconfig,ppc64_defc << 254 << 255 generated_configs += ppc64_guest_defconfig << 256 ppc64_guest_defconfig: << 257 $(call merge_into_defconfig,ppc64_defc << 258 << 259 generated_configs += pseries_le_defconfig << 260 pseries_le_defconfig: ppc64le_guest_defconfig << 261 << 262 generated_configs += pseries_defconfig << 263 pseries_defconfig: ppc64le_guest_defconfig << 264 << 265 generated_configs += powernv_be_defconfig << 266 powernv_be_defconfig: << 267 $(call merge_into_defconfig,powernv_de << 268 << 269 generated_configs += mpc85xx_defconfig << 270 mpc85xx_defconfig: << 271 $(call merge_into_defconfig,mpc85xx_ba << 272 85xx-32bit 85xx-hw fsl-emb-non << 273 << 274 generated_configs += mpc85xx_smp_defconfig << 275 mpc85xx_smp_defconfig: << 276 $(call merge_into_defconfig,mpc85xx_ba << 277 85xx-32bit 85xx-smp 85xx-hw fs << 278 << 279 generated_configs += corenet32_smp_defconfig << 280 corenet32_smp_defconfig: << 281 $(call merge_into_defconfig,corenet_ba << 282 85xx-32bit 85xx-smp 85xx-hw fs << 283 << 284 generated_configs += corenet64_smp_defconfig << 285 corenet64_smp_defconfig: << 286 $(call merge_into_defconfig,corenet_ba << 287 85xx-64bit 85xx-smp altivec 85 << 288 << 289 generated_configs += mpc86xx_defconfig << 290 mpc86xx_defconfig: << 291 $(call merge_into_defconfig,mpc86xx_ba << 292 86xx-hw fsl-emb-nonhw) << 293 << 294 generated_configs += mpc86xx_smp_defconfig << 295 mpc86xx_smp_defconfig: << 296 $(call merge_into_defconfig,mpc86xx_ba << 297 86xx-smp 86xx-hw fsl-emb-nonhw << 298 << 299 generated_configs += ppc32_allmodconfig << 300 ppc32_allmodconfig: << 301 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 302 -f $(srctree)/Makefile allmodc << 303 << 304 generated_configs += ppc44x_allmodconfig << 305 ppc44x_allmodconfig: << 306 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 307 -f $(srctree)/Makefile allmodc << 308 << 309 generated_configs += ppc8xx_allmodconfig << 310 ppc8xx_allmodconfig: << 311 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 312 -f $(srctree)/Makefile allmodc << 313 << 314 generated_configs += ppc85xx_allmodconfig << 315 ppc85xx_allmodconfig: << 316 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 317 -f $(srctree)/Makefile allmodc << 318 << 319 generated_configs += ppc_defconfig << 320 ppc_defconfig: << 321 $(call merge_into_defconfig,book3s_32. << 322 << 323 generated_configs += ppc64le_allmodconfig << 324 ppc64le_allmodconfig: << 325 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 326 -f $(srctree)/Makefile allmodc << 327 << 328 generated_configs += ppc64le_allnoconfig << 329 ppc64le_allnoconfig: << 330 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 331 -f $(srctree)/Makefile allnoco << 332 << 333 generated_configs += ppc64_book3e_allmodconfig << 334 ppc64_book3e_allmodconfig: << 335 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 336 -f $(srctree)/Makefile allmodc << 337 << 338 generated_configs += ppc32_randconfig << 339 ppc32_randconfig: << 340 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 341 -f $(srctree)/Makefile randcon << 342 << 343 generated_configs += ppc64_randconfig << 344 ppc64_randconfig: << 345 $(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctre << 346 -f $(srctree)/Makefile randcon << 347 356 348 PHONY += $(generated_configs) !! 357 CLEAN_FILES += vmlinux.32 vmlinux.64 349 358 350 define archhelp !! 359 # device-trees 351 echo '* zImage - Build default imag !! 360 core-$(CONFIG_BUILTIN_DTB) += arch/mips/boot/dts/ 352 echo ' zImage.* - Compressed kernel << 353 echo ' uImage - U-Boot native imag << 354 echo ' cuImage.<dt> - Backwards compatib << 355 echo ' versions which do << 356 echo ' dtbImage.<dt> - zImage with an emb << 357 echo ' simpleImage.<dt> - Firmware independ << 358 echo ' treeImage.<dt> - Support for older << 359 echo ' install - Install kernel usi << 360 echo ' (your) ~/bin/$(INS << 361 echo ' (distribution) /sb << 362 echo ' install to $$(INST << 363 echo ' *_defconfig - Select default con << 364 echo '' << 365 echo ' Targets with <dt> embed a device tre << 366 echo ' These targets support board with fir << 367 echo ' support passing a device tree direct << 368 echo ' name of a dts file from the arch/pow << 369 echo ' (minus the .dts extension).' << 370 echo << 371 $(foreach cfg,$(generated_configs), << 372 printf " %-27s - Build for %s\\n" $(cfg) << 373 endef << 374 361 375 PHONY += install !! 362 %.dtb %.dtb.S %.dtb.o: | scripts 376 install: !! 363 $(Q)$(MAKE) $(build)=arch/mips/boot/dts arch/mips/boot/dts/$@ 377 $(call cmd,install) << 378 364 379 ifeq ($(KBUILD_EXTMOD),) !! 365 PHONY += dtbs 380 # We need to generate vdso-offsets.h before co !! 366 dtbs: scripts 381 # In order to do that, we should use the archp !! 367 $(Q)$(MAKE) $(build)=arch/mips/boot/dts 382 # asm-offsets.h is included in some files used !! 368 383 # asm-offsets.h is built in prepare0, for whic !! 369 PHONY += dtbs_install 384 # Therefore we need to generate the header aft !! 370 dtbs_install: 385 # this hack. !! 371 $(Q)$(MAKE) $(dtbinst)=arch/mips/boot/dts 386 prepare: vdso_prepare !! 372 387 vdso_prepare: prepare0 !! 373 archprepare: 388 $(if $(CONFIG_VDSO32),$(Q)$(MAKE) \ !! 374 ifdef CONFIG_MIPS32_N32 389 $(build)=arch/powerpc/kernel/v !! 375 @echo ' Checking missing-syscalls for N32' 390 $(if $(CONFIG_PPC64),$(Q)$(MAKE) \ !! 376 $(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=n32" 391 $(build)=arch/powerpc/kernel/v << 392 endif << 393 << 394 archprepare: checkbin << 395 << 396 archheaders: << 397 $(Q)$(MAKE) $(build)=arch/powerpc/kern << 398 << 399 ifdef CONFIG_STACKPROTECTOR << 400 prepare: stack_protector_prepare << 401 << 402 PHONY += stack_protector_prepare << 403 stack_protector_prepare: prepare0 << 404 ifdef CONFIG_PPC64 << 405 $(eval KBUILD_CFLAGS += -mstack-protec << 406 else << 407 $(eval KBUILD_CFLAGS += -mstack-protec << 408 endif 377 endif >> 378 ifdef CONFIG_MIPS32_O32 >> 379 @echo ' Checking missing-syscalls for O32' >> 380 $(Q)$(MAKE) $(build)=. missing-syscalls missing_syscalls_flags="-mabi=32" 409 endif 381 endif 410 382 411 PHONY += checkbin !! 383 install: 412 checkbin: !! 384 $(Q)install -D -m 755 vmlinux $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE) 413 @if test "x${CONFIG_FTRACE_MCOUNT_USE_ !! 385 ifdef CONFIG_SYS_SUPPORTS_ZBOOT 414 "x${CONFIG_LD_IS_BFD}" = "xy" !! 386 $(Q)install -D -m 755 vmlinuz $(INSTALL_PATH)/vmlinuz-$(KERNELRELEASE) 415 "${CONFIG_LD_VERSION}" = "2370 !! 387 endif 416 echo -n '*** binutils 2.37 dro !! 388 $(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE) 417 echo 'is unable to handle.' ; !! 389 $(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE) 418 echo '*** Please use a differe !! 390 419 false ; \ !! 391 archclean: 420 fi !! 392 $(Q)$(MAKE) $(clean)=arch/mips/boot >> 393 $(Q)$(MAKE) $(clean)=arch/mips/boot/compressed >> 394 $(Q)$(MAKE) $(clean)=arch/mips/lasat >> 395 >> 396 define archhelp >> 397 echo ' install - install kernel into $(INSTALL_PATH)' >> 398 echo ' vmlinux.ecoff - ECOFF boot image' >> 399 echo ' vmlinux.bin - Raw binary boot image' >> 400 echo ' vmlinux.srec - SREC boot image' >> 401 echo ' vmlinux.32 - 64-bit boot image wrapped in 32bits (IP22/IP32)' >> 402 echo ' vmlinuz - Compressed boot(zboot) image' >> 403 echo ' vmlinuz.ecoff - ECOFF zboot image' >> 404 echo ' vmlinuz.bin - Raw binary zboot image' >> 405 echo ' vmlinuz.srec - SREC zboot image' >> 406 echo ' uImage - U-Boot image' >> 407 echo ' uImage.bin - U-Boot image (uncompressed)' >> 408 echo ' uImage.bz2 - U-Boot image (bz2)' >> 409 echo ' uImage.gz - U-Boot image (gzip)' >> 410 echo ' uImage.lzma - U-Boot image (lzma)' >> 411 echo ' uImage.lzo - U-Boot image (lzo)' >> 412 echo ' dtbs - Device-tree blobs for enabled boards' >> 413 echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' >> 414 echo >> 415 echo ' These will be default as appropriate for a configured platform.' >> 416 endef
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.