162306a36Sopenharmony_ci#
262306a36Sopenharmony_ci# arch/arm/Makefile
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# This file is included by the global makefile so that you can add your own
562306a36Sopenharmony_ci# architecture-specific flags and dependencies.
662306a36Sopenharmony_ci#
762306a36Sopenharmony_ci# This file is subject to the terms and conditions of the GNU General Public
862306a36Sopenharmony_ci# License.  See the file "COPYING" in the main directory of this archive
962306a36Sopenharmony_ci# for more details.
1062306a36Sopenharmony_ci#
1162306a36Sopenharmony_ci# Copyright (C) 1995-2001 by Russell King
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciLDFLAGS_vmlinux	:= --no-undefined -X --pic-veneer -z norelro
1462306a36Sopenharmony_ciifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
1562306a36Sopenharmony_ciLDFLAGS_vmlinux	+= --be8
1662306a36Sopenharmony_ciKBUILD_LDFLAGS_MODULE	+= --be8
1762306a36Sopenharmony_ciendif
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciGZFLAGS		:=-9
2062306a36Sopenharmony_ci#KBUILD_CFLAGS	+=-pipe
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci# Never generate .eh_frame
2362306a36Sopenharmony_ciKBUILD_CFLAGS	+= $(call cc-option,-fno-dwarf2-cfi-asm)
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci# Disable FDPIC ABI
2662306a36Sopenharmony_ciKBUILD_CFLAGS	+= $(call cc-option,-mno-fdpic)
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci# This should work on most of the modern platforms
2962306a36Sopenharmony_ciKBUILD_DEFCONFIG := multi_v7_defconfig
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci# defines filename extension depending memory management type.
3262306a36Sopenharmony_ciifeq ($(CONFIG_MMU),)
3362306a36Sopenharmony_ciMMUEXT		:= -nommu
3462306a36Sopenharmony_ciKBUILD_CFLAGS	+= $(call cc-option,-mno-unaligned-access)
3562306a36Sopenharmony_ciendif
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ciifeq ($(CONFIG_FRAME_POINTER),y)
3862306a36Sopenharmony_ciKBUILD_CFLAGS	+=-fno-omit-frame-pointer
3962306a36Sopenharmony_ciifeq ($(CONFIG_CC_IS_GCC),y)
4062306a36Sopenharmony_ciKBUILD_CFLAGS += -mapcs -mno-sched-prolog
4162306a36Sopenharmony_ciendif
4262306a36Sopenharmony_ciendif
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
4562306a36Sopenharmony_ciKBUILD_CPPFLAGS	+= -mbig-endian
4662306a36Sopenharmony_ciCHECKFLAGS	+= -D__ARMEB__
4762306a36Sopenharmony_ciKBUILD_LDFLAGS	+= -EB
4862306a36Sopenharmony_cielse
4962306a36Sopenharmony_ciKBUILD_CPPFLAGS	+= -mlittle-endian
5062306a36Sopenharmony_ciCHECKFLAGS	+= -D__ARMEL__
5162306a36Sopenharmony_ciKBUILD_LDFLAGS	+= -EL
5262306a36Sopenharmony_ciendif
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci#
5562306a36Sopenharmony_ci# The Scalar Replacement of Aggregates (SRA) optimization pass in GCC 4.9 and
5662306a36Sopenharmony_ci# later may result in code being generated that handles signed short and signed
5762306a36Sopenharmony_ci# char struct members incorrectly. So disable it.
5862306a36Sopenharmony_ci# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932)
5962306a36Sopenharmony_ci#
6062306a36Sopenharmony_ciKBUILD_CFLAGS	+= $(call cc-option,-fno-ipa-sra)
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci# This selects which instruction set is used.
6362306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v7M)	:=-march=armv7-m
6462306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v7)		:=-march=armv7-a
6562306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v6)		:=-march=armv6
6662306a36Sopenharmony_ci# Only override the compiler option if ARMv6. The ARMv6K extensions are
6762306a36Sopenharmony_ci# always available in ARMv7
6862306a36Sopenharmony_ciifeq ($(CONFIG_CPU_32v6),y)
6962306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v6K)	:=-march=armv6k
7062306a36Sopenharmony_ciendif
7162306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v5)		:=-march=armv5te
7262306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v4T)	:=-march=armv4t
7362306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v4)		:=-march=armv4
7462306a36Sopenharmony_ciarch-$(CONFIG_CPU_32v3)		:=-march=armv3m
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci# Note that GCC does not numerically define an architecture version
7762306a36Sopenharmony_ci# macro, but instead defines a whole series of macros which makes
7862306a36Sopenharmony_ci# testing for a specific architecture or later rather impossible.
7962306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v7M)		:=-D__LINUX_ARM_ARCH__=7
8062306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v7)		:=-D__LINUX_ARM_ARCH__=7
8162306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v6)		:=-D__LINUX_ARM_ARCH__=6
8262306a36Sopenharmony_ci# Only override the compiler option if ARMv6. The ARMv6K extensions are
8362306a36Sopenharmony_ci# always available in ARMv7
8462306a36Sopenharmony_ciifeq ($(CONFIG_CPU_32v6),y)
8562306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v6K)		:=-D__LINUX_ARM_ARCH__=6
8662306a36Sopenharmony_ciendif
8762306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v5)		:=-D__LINUX_ARM_ARCH__=5
8862306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v4T)		:=-D__LINUX_ARM_ARCH__=4
8962306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v4)		:=-D__LINUX_ARM_ARCH__=4
9062306a36Sopenharmony_cicpp-$(CONFIG_CPU_32v3)		:=-D__LINUX_ARM_ARCH__=3
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci# This selects how we optimise for the processor.
9362306a36Sopenharmony_citune-$(CONFIG_CPU_ARM7TDMI)	:=-mtune=arm7tdmi
9462306a36Sopenharmony_citune-$(CONFIG_CPU_ARM720T)	:=-mtune=arm7tdmi
9562306a36Sopenharmony_citune-$(CONFIG_CPU_ARM740T)	:=-mtune=arm7tdmi
9662306a36Sopenharmony_citune-$(CONFIG_CPU_ARM9TDMI)	:=-mtune=arm9tdmi
9762306a36Sopenharmony_citune-$(CONFIG_CPU_ARM940T)	:=-mtune=arm9tdmi
9862306a36Sopenharmony_citune-$(CONFIG_CPU_ARM946E)	:=-mtune=arm9e
9962306a36Sopenharmony_citune-$(CONFIG_CPU_ARM920T)	:=-mtune=arm9tdmi
10062306a36Sopenharmony_citune-$(CONFIG_CPU_ARM922T)	:=-mtune=arm9tdmi
10162306a36Sopenharmony_citune-$(CONFIG_CPU_ARM925T)	:=-mtune=arm9tdmi
10262306a36Sopenharmony_citune-$(CONFIG_CPU_ARM926T)	:=-mtune=arm9tdmi
10362306a36Sopenharmony_citune-$(CONFIG_CPU_FA526)	:=-mtune=arm9tdmi
10462306a36Sopenharmony_citune-$(CONFIG_CPU_SA110)	:=-mtune=strongarm110
10562306a36Sopenharmony_citune-$(CONFIG_CPU_SA1100)	:=-mtune=strongarm1100
10662306a36Sopenharmony_citune-$(CONFIG_CPU_XSCALE)	:=-mtune=xscale
10762306a36Sopenharmony_citune-$(CONFIG_CPU_XSC3)		:=-mtune=xscale
10862306a36Sopenharmony_citune-$(CONFIG_CPU_FEROCEON)	:=-mtune=xscale
10962306a36Sopenharmony_citune-$(CONFIG_CPU_V6)		:=-mtune=arm1136j-s
11062306a36Sopenharmony_citune-$(CONFIG_CPU_V6K)		:=-mtune=arm1136j-s
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ciifeq ($(CONFIG_AEABI),y)
11362306a36Sopenharmony_ciCFLAGS_ABI	:=-mabi=aapcs-linux -mfpu=vfp
11462306a36Sopenharmony_cielse
11562306a36Sopenharmony_ciCFLAGS_ABI	:=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
11662306a36Sopenharmony_ciendif
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ciifeq ($(CONFIG_ARM_UNWIND),y)
11962306a36Sopenharmony_ciCFLAGS_ABI	+=-funwind-tables
12062306a36Sopenharmony_ciendif
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciifeq ($(CONFIG_CC_IS_CLANG),y)
12362306a36Sopenharmony_ciCFLAGS_ABI	+= -meabi gnu
12462306a36Sopenharmony_ciendif
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ciifeq ($(CONFIG_CURRENT_POINTER_IN_TPIDRURO),y)
12762306a36Sopenharmony_ciKBUILD_CFLAGS	+= -mtp=cp15
12862306a36Sopenharmony_ciendif
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci# Accept old syntax despite ".syntax unified"
13162306a36Sopenharmony_ciAFLAGS_NOWARN	:=$(call as-option,-Wa$(comma)-mno-warn-deprecated,-Wa$(comma)-W)
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ciifeq ($(CONFIG_THUMB2_KERNEL),y)
13462306a36Sopenharmony_ciCFLAGS_ISA	:=-Wa,-mimplicit-it=always $(AFLAGS_NOWARN)
13562306a36Sopenharmony_ciAFLAGS_ISA	:=$(CFLAGS_ISA) -Wa$(comma)-mthumb
13662306a36Sopenharmony_ciCFLAGS_ISA	+=-mthumb
13762306a36Sopenharmony_cielse
13862306a36Sopenharmony_ciCFLAGS_ISA	:=$(call cc-option,-marm,) $(AFLAGS_NOWARN)
13962306a36Sopenharmony_ciAFLAGS_ISA	:=$(CFLAGS_ISA)
14062306a36Sopenharmony_ciendif
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci# Need -Uarm for gcc < 3.x
14362306a36Sopenharmony_ciKBUILD_CPPFLAGS	+=$(cpp-y)
14462306a36Sopenharmony_ciKBUILD_CFLAGS	+=$(CFLAGS_ABI) $(CFLAGS_ISA) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
14562306a36Sopenharmony_ciKBUILD_AFLAGS	+=$(CFLAGS_ABI) $(AFLAGS_ISA) -Wa,$(arch-y) $(tune-y) -include asm/unified.h -msoft-float
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciCHECKFLAGS	+= -D__arm__
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci# Text offset. This list is sorted numerically by address in order to
15062306a36Sopenharmony_ci# provide a means to avoid/resolve conflicts in multi-arch kernels.
15162306a36Sopenharmony_ci# Note: the 32kB below this value is reserved for use by the kernel
15262306a36Sopenharmony_ci# during boot, and this offset is critical to the functioning of
15362306a36Sopenharmony_ci# kexec-tools.
15462306a36Sopenharmony_citextofs-y	:= 0x00008000
15562306a36Sopenharmony_ci# RTD1195 has Boot ROM at start of address space
15662306a36Sopenharmony_citextofs-$(CONFIG_ARCH_REALTEK)  := 0x00108000
15762306a36Sopenharmony_ci# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
15862306a36Sopenharmony_ciifeq ($(CONFIG_ARCH_SA1100),y)
15962306a36Sopenharmony_citextofs-$(CONFIG_SA1111) := 0x00208000
16062306a36Sopenharmony_ciendif
16162306a36Sopenharmony_citextofs-$(CONFIG_ARCH_IPQ40XX) := 0x00208000
16262306a36Sopenharmony_citextofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
16362306a36Sopenharmony_citextofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
16462306a36Sopenharmony_citextofs-$(CONFIG_ARCH_MESON) := 0x00208000
16562306a36Sopenharmony_citextofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci# Machine directory name.  This list is sorted alphanumerically
16862306a36Sopenharmony_ci# by CONFIG_* macro name.
16962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ACTIONS)		+= actions
17062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_AIROHA)		+= airoha
17162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ALPINE)		+= alpine
17262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ARTPEC)		+= artpec
17362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ASPEED)           += aspeed
17462306a36Sopenharmony_cimachine-$(CONFIG_ARCH_AT91)		+= at91
17562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_AXXIA)		+= axxia
17662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_BCM)		+= bcm
17762306a36Sopenharmony_cimachine-$(CONFIG_ARCH_BERLIN)		+= berlin
17862306a36Sopenharmony_cimachine-$(CONFIG_ARCH_CLPS711X)		+= clps711x
17962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_DAVINCI)		+= davinci
18062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_DIGICOLOR)	+= digicolor
18162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_DOVE)		+= dove
18262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_EP93XX)		+= ep93xx
18362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_EXYNOS)		+= exynos
18462306a36Sopenharmony_cimachine-$(CONFIG_ARCH_FOOTBRIDGE)	+= footbridge
18562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_GEMINI)		+= gemini
18662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_HIGHBANK)		+= highbank
18762306a36Sopenharmony_cimachine-$(CONFIG_ARCH_HISI)		+= hisi
18862306a36Sopenharmony_cimachine-$(CONFIG_ARCH_HPE)		+= hpe
18962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_IXP4XX)		+= ixp4xx
19062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_KEYSTONE)		+= keystone
19162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_LPC18XX)		+= lpc18xx
19262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_LPC32XX)		+= lpc32xx
19362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MESON)		+= meson
19462306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MMP)		+= mmp
19562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MOXART)		+= moxart
19662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MV78XX0)		+= mv78xx0
19762306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MVEBU)		+= mvebu
19862306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MXC)		+= imx
19962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MEDIATEK)		+= mediatek
20062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MILBEAUT)		+= milbeaut
20162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MXS)		+= mxs
20262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_MSTARV7)		+= mstar
20362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_NOMADIK)		+= nomadik
20462306a36Sopenharmony_cimachine-$(CONFIG_ARCH_NPCM)		+= npcm
20562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_NSPIRE)		+= nspire
20662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_OMAP1)		+= omap1
20762306a36Sopenharmony_cimachine-$(CONFIG_ARCH_OMAP2PLUS)	+= omap2
20862306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ORION5X)		+= orion5x
20962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_PXA)		+= pxa
21062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_QCOM)		+= qcom
21162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_REALTEK)		+= realtek
21262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ROCKCHIP)		+= rockchip
21362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_RPC)		+= rpc
21462306a36Sopenharmony_cimachine-$(CONFIG_PLAT_SAMSUNG)		+= s3c
21562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_S5PV210)		+= s5pv210
21662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_SA1100)		+= sa1100
21762306a36Sopenharmony_cimachine-$(CONFIG_ARCH_RENESAS)	 	+= shmobile
21862306a36Sopenharmony_cimachine-$(CONFIG_ARCH_INTEL_SOCFPGA)	+= socfpga
21962306a36Sopenharmony_cimachine-$(CONFIG_ARCH_STI)		+= sti
22062306a36Sopenharmony_cimachine-$(CONFIG_ARCH_STM32)		+= stm32
22162306a36Sopenharmony_cimachine-$(CONFIG_ARCH_SUNPLUS)		+= sunplus
22262306a36Sopenharmony_cimachine-$(CONFIG_ARCH_SUNXI)		+= sunxi
22362306a36Sopenharmony_cimachine-$(CONFIG_ARCH_TEGRA)		+= tegra
22462306a36Sopenharmony_cimachine-$(CONFIG_ARCH_U8500)		+= ux500
22562306a36Sopenharmony_cimachine-$(CONFIG_ARCH_VT8500)		+= vt8500
22662306a36Sopenharmony_cimachine-$(CONFIG_ARCH_ZYNQ)		+= zynq
22762306a36Sopenharmony_cimachine-$(CONFIG_PLAT_VERSATILE)	+= versatile
22862306a36Sopenharmony_cimachine-$(CONFIG_PLAT_SPEAR)		+= spear
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci# legacy platforms provide their own mach/*.h headers globally,
23162306a36Sopenharmony_ci# these three are mutually exclusive
23262306a36Sopenharmony_cimachdirs-$(CONFIG_ARCH_FOOTBRIDGE)	+= arch/arm/mach-footbridge
23362306a36Sopenharmony_cimachdirs-$(CONFIG_ARCH_RPC)		+= arch/arm/mach-rpc
23462306a36Sopenharmony_cimachdirs-$(CONFIG_ARCH_SA1100)		+= arch/arm/mach-sa1100
23562306a36Sopenharmony_ciKBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%/include,$(machdirs-y))
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci# The byte offset of the kernel image in RAM from the start of RAM.
23862306a36Sopenharmony_ciTEXT_OFFSET := $(textofs-y)
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ciexport	TEXT_OFFSET GZFLAGS MMUEXT
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci# If we have a machine-specific directory, then include it in the build.
24362306a36Sopenharmony_cicore-y				+= $(patsubst %,arch/arm/mach-%/,$(machine-y))
24462306a36Sopenharmony_ci# For cleaning
24562306a36Sopenharmony_cicore-				+= $(patsubst %,arch/arm/mach-%/,$(machine-))
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_cicore-$(CONFIG_PLAT_ORION)	+= arch/arm/plat-orion/
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_cilibs-y				:= arch/arm/lib/ $(libs-y)
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci# Default target when executing plain make
25262306a36Sopenharmony_ciboot := arch/arm/boot
25362306a36Sopenharmony_ciifeq ($(CONFIG_XIP_KERNEL),y)
25462306a36Sopenharmony_ciKBUILD_IMAGE := $(boot)/xipImage
25562306a36Sopenharmony_cielse
25662306a36Sopenharmony_ciKBUILD_IMAGE := $(boot)/zImage
25762306a36Sopenharmony_ciendif
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ciifeq ($(CONFIG_STACKPROTECTOR_PER_TASK),y)
26062306a36Sopenharmony_ciprepare: stack_protector_prepare
26162306a36Sopenharmony_ciifeq ($(CONFIG_CC_HAVE_STACKPROTECTOR_TLS),y)
26262306a36Sopenharmony_cistack_protector_prepare: prepare0
26362306a36Sopenharmony_ci	$(eval KBUILD_CFLAGS += \
26462306a36Sopenharmony_ci		-mstack-protector-guard=tls \
26562306a36Sopenharmony_ci		-mstack-protector-guard-offset=$(shell	\
26662306a36Sopenharmony_ci			awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}'\
26762306a36Sopenharmony_ci				include/generated/asm-offsets.h))
26862306a36Sopenharmony_cielse
26962306a36Sopenharmony_cistack_protector_prepare: prepare0
27062306a36Sopenharmony_ci	$(eval SSP_PLUGIN_CFLAGS := \
27162306a36Sopenharmony_ci		-fplugin-arg-arm_ssp_per_task_plugin-offset=$(shell	\
27262306a36Sopenharmony_ci			awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}'\
27362306a36Sopenharmony_ci				include/generated/asm-offsets.h))
27462306a36Sopenharmony_ci	$(eval KBUILD_CFLAGS += $(SSP_PLUGIN_CFLAGS))
27562306a36Sopenharmony_ci	$(eval GCC_PLUGINS_CFLAGS += $(SSP_PLUGIN_CFLAGS))
27662306a36Sopenharmony_ciendif
27762306a36Sopenharmony_ciendif
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ciall:	$(notdir $(KBUILD_IMAGE))
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ciarchheaders:
28362306a36Sopenharmony_ci	$(Q)$(MAKE) $(build)=arch/arm/tools uapi
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ciarchprepare:
28662306a36Sopenharmony_ci	$(Q)$(MAKE) $(build)=arch/arm/tools kapi
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci# Convert bzImage to zImage
28962306a36Sopenharmony_cibzImage: zImage
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ciBOOT_TARGETS	= zImage Image xipImage bootpImage uImage
29262306a36Sopenharmony_ciINSTALL_TARGETS	= zinstall uinstall install
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ciPHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_cibootpImage uImage: zImage
29762306a36Sopenharmony_cizImage: Image
29862306a36Sopenharmony_ci
29962306a36Sopenharmony_ci$(BOOT_TARGETS): vmlinux
30062306a36Sopenharmony_ci	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
30162306a36Sopenharmony_ci	@$(kecho) '  Kernel: $(boot)/$@ is ready'
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci$(INSTALL_TARGETS): KBUILD_IMAGE = $(boot)/$(patsubst %install,%Image,$@)
30462306a36Sopenharmony_ci$(INSTALL_TARGETS):
30562306a36Sopenharmony_ci	$(call cmd,install)
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciPHONY += vdso_install
30862306a36Sopenharmony_civdso_install:
30962306a36Sopenharmony_ciifeq ($(CONFIG_VDSO),y)
31062306a36Sopenharmony_ci	$(Q)$(MAKE) $(build)=arch/arm/vdso $@
31162306a36Sopenharmony_ciendif
31262306a36Sopenharmony_ci
31362306a36Sopenharmony_ci# My testing targets (bypasses dependencies)
31462306a36Sopenharmony_cibp:;	$(Q)$(MAKE) $(build)=$(boot) $(boot)/bootpImage
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ciinclude $(srctree)/scripts/Makefile.defconf
31762306a36Sopenharmony_ciPHONY += multi_v7_lpae_defconfig
31862306a36Sopenharmony_cimulti_v7_lpae_defconfig:
31962306a36Sopenharmony_ci	$(call merge_into_defconfig,multi_v7_defconfig,lpae)
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_cidefine archhelp
32262306a36Sopenharmony_ci  echo  '* zImage        - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
32362306a36Sopenharmony_ci  echo  '  Image         - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
32462306a36Sopenharmony_ci  echo  '* xipImage      - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
32562306a36Sopenharmony_ci  echo  '  uImage        - U-Boot wrapped zImage'
32662306a36Sopenharmony_ci  echo  '  bootpImage    - Combined zImage and initial RAM disk'
32762306a36Sopenharmony_ci  echo  '                  (supply initrd image via make variable INITRD=<path>)'
32862306a36Sopenharmony_ci  echo  '  install       - Install uncompressed kernel'
32962306a36Sopenharmony_ci  echo  '  zinstall      - Install compressed kernel'
33062306a36Sopenharmony_ci  echo  '  uinstall      - Install U-Boot wrapped compressed kernel'
33162306a36Sopenharmony_ci  echo  '                  Install using (your) ~/bin/$(INSTALLKERNEL) or'
33262306a36Sopenharmony_ci  echo  '                  (distribution) /sbin/$(INSTALLKERNEL) or'
33362306a36Sopenharmony_ci  echo  '                  install to $$(INSTALL_PATH) and run lilo'
33462306a36Sopenharmony_ci  echo  '  vdso_install  - Install unstripped vdso.so to $$(INSTALL_MOD_PATH)/vdso'
33562306a36Sopenharmony_ci  echo
33662306a36Sopenharmony_ci  echo  '  multi_v7_lpae_defconfig     - multi_v7_defconfig with CONFIG_ARM_LPAE enabled'
33762306a36Sopenharmony_ciendef
338