| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 | LDFLAGS_vmlinux := --no-undefined -X --pic-veneer -z norelro
|
| 14 | ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
|
| 15 | LDFLAGS_vmlinux += --be8
|
| 16 | KBUILD_LDFLAGS_MODULE += --be8
|
| 17 | endif
|
| 18 |
|
| 19 | GZFLAGS :=-9
|
| 20 |
|
| 21 |
|
| 22 |
|
| 23 | KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
|
| 24 |
|
| 25 |
|
| 26 | KBUILD_CFLAGS += $(call cc-option,-mno-fdpic)
|
| 27 |
|
| 28 |
|
| 29 | KBUILD_DEFCONFIG := multi_v7_defconfig
|
| 30 |
|
| 31 |
|
| 32 | ifeq ($(CONFIG_MMU),)
|
| 33 | MMUEXT := -nommu
|
| 34 | KBUILD_CFLAGS += $(call cc-option,-mno-unaligned-access)
|
| 35 | endif
|
| 36 |
|
| 37 | ifeq ($(CONFIG_FRAME_POINTER),y)
|
| 38 | KBUILD_CFLAGS +=-fno-omit-frame-pointer
|
| 39 | ifeq ($(CONFIG_CC_IS_GCC),y)
|
| 40 | KBUILD_CFLAGS += -mapcs -mno-sched-prolog
|
| 41 | endif
|
| 42 | endif
|
| 43 |
|
| 44 | ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
|
| 45 | KBUILD_CPPFLAGS += -mbig-endian
|
| 46 | CHECKFLAGS += -D__ARMEB__
|
| 47 | KBUILD_LDFLAGS += -EB
|
| 48 | else
|
| 49 | KBUILD_CPPFLAGS += -mlittle-endian
|
| 50 | CHECKFLAGS += -D__ARMEL__
|
| 51 | KBUILD_LDFLAGS += -EL
|
| 52 | endif
|
| 53 |
|
| 54 |
|
| 55 |
|
| 56 |
|
| 57 |
|
| 58 |
|
| 59 |
|
| 60 | KBUILD_CFLAGS += $(call cc-option,-fno-ipa-sra)
|
| 61 |
|
| 62 |
|
| 63 | arch-$(CONFIG_CPU_32v7M) :=-march=armv7-m
|
| 64 | arch-$(CONFIG_CPU_32v7) :=-march=armv7-a
|
| 65 | arch-$(CONFIG_CPU_32v6) :=-march=armv6
|
| 66 |
|
| 67 |
|
| 68 | ifeq ($(CONFIG_CPU_32v6),y)
|
| 69 | arch-$(CONFIG_CPU_32v6K) :=-march=armv6k
|
| 70 | endif
|
| 71 | arch-$(CONFIG_CPU_32v5) :=-march=armv5te
|
| 72 | arch-$(CONFIG_CPU_32v4T) :=-march=armv4t
|
| 73 | arch-$(CONFIG_CPU_32v4) :=-march=armv4
|
| 74 | arch-$(CONFIG_CPU_32v3) :=-march=armv3m
|
| 75 |
|
| 76 |
|
| 77 |
|
| 78 |
|
| 79 | cpp-$(CONFIG_CPU_32v7M) :=-D__LINUX_ARM_ARCH__=7
|
| 80 | cpp-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7
|
| 81 | cpp-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6
|
| 82 |
|
| 83 |
|
| 84 | ifeq ($(CONFIG_CPU_32v6),y)
|
| 85 | cpp-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6
|
| 86 | endif
|
| 87 | cpp-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5
|
| 88 | cpp-$(CONFIG_CPU_32v4T) :=-D__LINUX_ARM_ARCH__=4
|
| 89 | cpp-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4
|
| 90 | cpp-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3
|
| 91 |
|
| 92 |
|
| 93 | tune-$(CONFIG_CPU_ARM7TDMI) :=-mtune=arm7tdmi
|
| 94 | tune-$(CONFIG_CPU_ARM720T) :=-mtune=arm7tdmi
|
| 95 | tune-$(CONFIG_CPU_ARM740T) :=-mtune=arm7tdmi
|
| 96 | tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
|
| 97 | tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
|
| 98 | tune-$(CONFIG_CPU_ARM946E) :=-mtune=arm9e
|
| 99 | tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
|
| 100 | tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
|
| 101 | tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
|
| 102 | tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
|
| 103 | tune-$(CONFIG_CPU_FA526) :=-mtune=arm9tdmi
|
| 104 | tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110
|
| 105 | tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
|
| 106 | tune-$(CONFIG_CPU_XSCALE) :=-mtune=xscale
|
| 107 | tune-$(CONFIG_CPU_XSC3) :=-mtune=xscale
|
| 108 | tune-$(CONFIG_CPU_FEROCEON) :=-mtune=xscale
|
| 109 | tune-$(CONFIG_CPU_V6) :=-mtune=arm1136j-s
|
| 110 | tune-$(CONFIG_CPU_V6K) :=-mtune=arm1136j-s
|
| 111 |
|
| 112 | ifeq ($(CONFIG_AEABI),y)
|
| 113 | CFLAGS_ABI :=-mabi=aapcs-linux -mfpu=vfp
|
| 114 | else
|
| 115 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
|
| 116 | endif
|
| 117 |
|
| 118 | ifeq ($(CONFIG_ARM_UNWIND),y)
|
| 119 | CFLAGS_ABI +=-funwind-tables
|
| 120 | endif
|
| 121 |
|
| 122 | ifeq ($(CONFIG_CC_IS_CLANG),y)
|
| 123 | CFLAGS_ABI += -meabi gnu
|
| 124 | endif
|
| 125 |
|
| 126 | ifeq ($(CONFIG_CURRENT_POINTER_IN_TPIDRURO),y)
|
| 127 | KBUILD_CFLAGS += -mtp=cp15
|
| 128 | endif
|
| 129 |
|
| 130 |
|
| 131 | AFLAGS_NOWARN :=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
|
| 132 |
|
| 133 |
|
| 134 |
|
| 135 | CC_FLAGS_FPU := -ffreestanding
|
| 136 |
|
| 137 | CC_FLAGS_FPU += -isystem $(shell $(CC) -print-file-name=include)
|
| 138 | CC_FLAGS_FPU += -march=armv7-a -mfloat-abi=softfp -mfpu=neon
|
| 139 |
|
| 140 | ifeq ($(CONFIG_THUMB2_KERNEL),y)
|
| 141 | CFLAGS_ISA :=-Wa,-mimplicit-it=always $(AFLAGS_NOWARN)
|
| 142 | AFLAGS_ISA :=$(CFLAGS_ISA) -Wa$(comma)-mthumb
|
| 143 | CFLAGS_ISA +=-mthumb
|
| 144 | else
|
| 145 | CFLAGS_ISA :=$(call cc-option,-marm,) $(AFLAGS_NOWARN)
|
| 146 | AFLAGS_ISA :=$(CFLAGS_ISA)
|
| 147 | endif
|
| 148 |
|
| 149 |
|
| 150 | KBUILD_CPPFLAGS +=$(cpp-y)
|
| 151 | KBUILD_CFLAGS +=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
|
| 152 | KBUILD_AFLAGS +=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include $(srctree)/arch/arm/include/asm/unified.h -msoft-float
|
| 153 | KBUILD_RUSTFLAGS += --target=arm-unknown-linux-gnueabi
|
| 154 |
|
| 155 | CHECKFLAGS += -D__arm__
|
| 156 |
|
| 157 |
|
| 158 |
|
| 159 |
|
| 160 |
|
| 161 |
|
| 162 | textofs-y := 0x00008000
|
| 163 |
|
| 164 | textofs-$(CONFIG_ARCH_REALTEK) := 0x00108000
|
| 165 |
|
| 166 | ifeq ($(CONFIG_ARCH_SA1100),y)
|
| 167 | textofs-$(CONFIG_SA1111) := 0x00208000
|
| 168 | endif
|
| 169 | textofs-$(CONFIG_ARCH_QCOM_RESERVE_SMEM) := 0x00208000
|
| 170 | textofs-$(CONFIG_ARCH_MESON) := 0x00208000
|
| 171 | textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
|
| 172 |
|
| 173 |
|
| 174 |
|
| 175 | machine-$(CONFIG_ARCH_ACTIONS) += actions
|
| 176 | machine-$(CONFIG_ARCH_ALPINE) += alpine
|
| 177 | machine-$(CONFIG_ARCH_ARTPEC) += artpec
|
| 178 | machine-$(CONFIG_ARCH_ASPEED) += aspeed
|
| 179 | machine-$(CONFIG_ARCH_AT91) += at91
|
| 180 | machine-$(CONFIG_ARCH_AXXIA) += axxia
|
| 181 | machine-$(CONFIG_ARCH_BCM) += bcm
|
| 182 | machine-$(CONFIG_ARCH_BERLIN) += berlin
|
| 183 | machine-$(CONFIG_ARCH_CLPS711X) += clps711x
|
| 184 | machine-$(CONFIG_ARCH_DAVINCI) += davinci
|
| 185 | machine-$(CONFIG_ARCH_DIGICOLOR) += digicolor
|
| 186 | machine-$(CONFIG_ARCH_DOVE) += dove
|
| 187 | machine-$(CONFIG_ARCH_EXYNOS) += exynos
|
| 188 | machine-$(CONFIG_ARCH_FOOTBRIDGE) += footbridge
|
| 189 | machine-$(CONFIG_ARCH_GEMINI) += gemini
|
| 190 | machine-$(CONFIG_ARCH_HIGHBANK) += highbank
|
| 191 | machine-$(CONFIG_ARCH_HISI) += hisi
|
| 192 | machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx
|
| 193 | machine-$(CONFIG_ARCH_KEYSTONE) += keystone
|
| 194 | machine-$(CONFIG_ARCH_LPC18XX) += lpc18xx
|
| 195 | machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx
|
| 196 | machine-$(CONFIG_ARCH_MESON) += meson
|
| 197 | machine-$(CONFIG_ARCH_MMP) += mmp
|
| 198 | machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0
|
| 199 | machine-$(CONFIG_ARCH_MVEBU) += mvebu
|
| 200 | machine-$(CONFIG_ARCH_MXC) += imx
|
| 201 | machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
|
| 202 | machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
|
| 203 | machine-$(CONFIG_ARCH_MXS) += mxs
|
| 204 | machine-$(CONFIG_ARCH_MSTARV7) += mstar
|
| 205 | machine-$(CONFIG_ARCH_NOMADIK) += nomadik
|
| 206 | machine-$(CONFIG_ARCH_NPCM) += npcm
|
| 207 | machine-$(CONFIG_ARCH_OMAP1) += omap1
|
| 208 | machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2
|
| 209 | machine-$(CONFIG_ARCH_ORION5X) += orion5x
|
| 210 | machine-$(CONFIG_ARCH_PXA) += pxa
|
| 211 | machine-$(CONFIG_ARCH_QCOM) += qcom
|
| 212 | machine-$(CONFIG_ARCH_REALTEK) += realtek
|
| 213 | machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip
|
| 214 | machine-$(CONFIG_ARCH_RPC) += rpc
|
| 215 | machine-$(CONFIG_PLAT_SAMSUNG) += s3c
|
| 216 | machine-$(CONFIG_ARCH_S5PV210) += s5pv210
|
| 217 | machine-$(CONFIG_ARCH_SA1100) += sa1100
|
| 218 | machine-$(CONFIG_ARCH_RENESAS) += shmobile
|
| 219 | machine-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga
|
| 220 | machine-$(CONFIG_ARCH_STI) += sti
|
| 221 | machine-$(CONFIG_ARCH_STM32) += stm32
|
| 222 | machine-$(CONFIG_ARCH_SUNXI) += sunxi
|
| 223 | machine-$(CONFIG_ARCH_TEGRA) += tegra
|
| 224 | machine-$(CONFIG_ARCH_U8500) += ux500
|
| 225 | machine-$(CONFIG_ARCH_VT8500) += vt8500
|
| 226 | machine-$(CONFIG_ARCH_ZTE) += zte
|
| 227 | machine-$(CONFIG_ARCH_ZYNQ) += zynq
|
| 228 | machine-$(CONFIG_PLAT_VERSATILE) += versatile
|
| 229 | machine-$(CONFIG_PLAT_SPEAR) += spear
|
| 230 |
|
| 231 |
|
| 232 |
|
| 233 | machdirs-$(CONFIG_ARCH_FOOTBRIDGE) += arch/arm/mach-footbridge
|
| 234 | machdirs-$(CONFIG_ARCH_RPC) += arch/arm/mach-rpc
|
| 235 | machdirs-$(CONFIG_ARCH_SA1100) += arch/arm/mach-sa1100
|
| 236 | KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
|
| 237 |
|
| 238 |
|
| 239 | TEXT_OFFSET := $(textofs-y)
|
| 240 |
|
| 241 | export TEXT_OFFSET GZFLAGS MMUEXT
|
| 242 |
|
| 243 |
|
| 244 | core-y += $(patsubst %,arch/arm/mach-%/,$(machine-y))
|
| 245 |
|
| 246 | core- += $(patsubst %,arch/arm/mach-%/,$(machine-))
|
| 247 |
|
| 248 | core-$(CONFIG_PLAT_ORION) += arch/arm/plat-orion/
|
| 249 |
|
| 250 | libs-y := arch/arm/lib/ $(libs-y)
|
| 251 |
|
| 252 |
|
| 253 | boot := arch/arm/boot
|
| 254 | ifeq ($(CONFIG_XIP_KERNEL),y)
|
| 255 | KBUILD_IMAGE := $(boot)/xipImage
|
| 256 | else
|
| 257 | KBUILD_IMAGE := $(boot)/zImage
|
| 258 | endif
|
| 259 |
|
| 260 | ifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y)
|
| 261 | prepare: stack_protector_prepare
|
| 262 | ifeq ($(CONFIG_CC_HAVE_STACKPROTECTOR_TLS),y)
|
| 263 | stack_protector_prepare: prepare0
|
| 264 | $(eval KBUILD_CFLAGS += \
|
| 265 | -mstack-protector-guard=tls \
|
| 266 | -mstack-protector-guard-offset=$(shell \
|
| 267 | awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}'\
|
| 268 | $(objtree)/include/generated/asm-offsets.h))
|
| 269 | else
|
| 270 | stack_protector_prepare: prepare0
|
| 271 | $(eval SSP_PLUGIN_CFLAGS := \
|
| 272 | -fplugin-arg-arm_ssp_per_task_plugin-offset=$(shell \
|
| 273 | awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}'\
|
| 274 | $(objtree)/include/generated/asm-offsets.h))
|
| 275 | $(eval KBUILD_CFLAGS += $(SSP_PLUGIN_CFLAGS))
|
| 276 | $(eval GCC_PLUGINS_CFLAGS += $(SSP_PLUGIN_CFLAGS))
|
| 277 | endif
|
| 278 | endif
|
| 279 |
|
| 280 | all: $(notdir $(KBUILD_IMAGE))
|
| 281 |
|
| 282 |
|
| 283 | archheaders:
|
| 284 | $(Q)$(MAKE) $(build)=arch/arm/tools uapi
|
| 285 |
|
| 286 | archprepare:
|
| 287 | $(Q)$(MAKE) $(build)=arch/arm/tools kapi
|
| 288 |
|
| 289 |
|
| 290 | bzImage: zImage
|
| 291 |
|
| 292 | BOOT_TARGETS = zImage Image xipImage bootpImage uImage
|
| 293 | INSTALL_TARGETS = zinstall uinstall install
|
| 294 |
|
| 295 | PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
|
| 296 |
|
| 297 | bootpImage uImage: zImage
|
| 298 | zImage: Image
|
| 299 |
|
| 300 | $(BOOT_TARGETS): vmlinux
|
| 301 | $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
| 302 | @$(kecho) ' Kernel: $(boot)/$@ is ready'
|
| 303 |
|
| 304 | $(INSTALL_TARGETS): KBUILD_IMAGE = $(boot)/$(patsubst %install,%Image,$@)
|
| 305 | $(INSTALL_TARGETS):
|
| 306 | $(call cmd,install)
|
| 307 |
|
| 308 | vdso-install-$(CONFIG_VDSO) += arch/arm/vdso/vdso.so.dbg
|
| 309 |
|
| 310 |
|
| 311 | bp:; $(Q)$(MAKE) $(build)=$(boot) $(boot)/bootpImage
|
| 312 |
|
| 313 | include $(srctree)/scripts/Makefile.defconf
|
| 314 | PHONY += multi_v7_lpae_defconfig
|
| 315 | multi_v7_lpae_defconfig:
|
| 316 | $(call merge_into_defconfig,multi_v7_defconfig,lpae)
|
| 317 |
|
| 318 | define archhelp
|
| 319 | echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
|
| 320 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
|
| 321 | echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
|
| 322 | echo ' uImage - U-Boot wrapped zImage'
|
| 323 | echo ' bootpImage - Combined zImage and initial RAM disk'
|
| 324 | echo ' (supply initrd image via make variable INITRD=<path>)'
|
| 325 | echo ' install - Install uncompressed kernel'
|
| 326 | echo ' zinstall - Install compressed kernel'
|
| 327 | echo ' uinstall - Install U-Boot wrapped compressed kernel'
|
| 328 | echo ' Install using (your) ~/bin/$(INSTALLKERNEL) or'
|
| 329 | echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
|
| 330 | echo ' install to $$(INSTALL_PATH) and run lilo'
|
| 331 | echo
|
| 332 | echo ' multi_v7_lpae_defconfig - multi_v7_defconfig with CONFIG_ARM_LPAE enabled'
|
| 333 | endef
|