Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) # This file is included by the global makefile so that you can add your own
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) # architecture-specific flags and dependencies. Remember to do have actions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) # for "archclean" and "archdep" for cleaning up and making dependencies for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) # this architecture.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) # This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) # License.  See the file "COPYING" in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) # for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) # Copyright (C) 1994 by Linus Torvalds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) # Changes for PPC by Gary Thomas
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) # Rewritten by Cort Dougan and Paul Mackerras
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) HAS_BIARCH	:= $(call cc-option-yn, -m32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) # Set default 32 bits cross compilers for vdso and boot wrapper
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) CROSS32_COMPILE ?=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) ifeq ($(HAS_BIARCH),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) ifeq ($(CROSS32_COMPILE),)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) # These options will be overridden by any -mcpu option that the CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) # or platform code sets later on the command line, but they are needed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) # to set a sane 32-bit cpu target for the 64-bit cross compiler which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) # may default to the wrong ISA.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) KBUILD_CFLAGS		+= -mcpu=powerpc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) KBUILD_AFLAGS		+= -mcpu=powerpc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) ifdef CONFIG_PPC_BOOK3S_32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) KBUILD_CFLAGS		+= -mcpu=powerpc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) # If we're on a ppc/ppc64/ppc64le machine use that defconfig, otherwise just use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) # ppc64_defconfig because we have nothing better to go on.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) uname := $(shell uname -m)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) KBUILD_DEFCONFIG := $(if $(filter ppc%,$(uname)),$(uname),ppc64)_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) new_nm := $(shell if $(NM) --help 2>&1 | grep -- '--synthetic' > /dev/null; then echo y; else echo n; fi)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) ifeq ($(new_nm),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) NM		:= $(NM) --synthetic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) # BITS is used as extension for files which are available in a 32 bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) # and a 64 bit version to simplify shared Makefiles.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) # e.g.: obj-y += foo_$(BITS).o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) export BITS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54)         BITS := 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56)         BITS := 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) machine-y = ppc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) machine-$(CONFIG_PPC64) += 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) UTS_MACHINE := $(subst $(space),,$(machine-y))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) # XXX This needs to be before we override LD below
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) # Have the linker provide sfpr if possible.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) # There is a corresponding test in arch/powerpc/lib/Makefile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) KBUILD_LDFLAGS_MODULE += --save-restore-funcs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) ifdef CONFIG_CPU_LITTLE_ENDIAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) KBUILD_CFLAGS	+= -mlittle-endian
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) KBUILD_LDFLAGS	+= -EL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) LDEMULATION	:= lppc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) GNUTARGET	:= powerpcle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) MULTIPLEWORD	:= -mno-multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) KBUILD_CFLAGS_MODULE += $(call cc-option,-mno-save-toc-indirect)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) KBUILD_CFLAGS += $(call cc-option,-mbig-endian)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) KBUILD_LDFLAGS	+= -EB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) LDEMULATION	:= ppc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) GNUTARGET	:= powerpc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) MULTIPLEWORD	:= -mmultiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) ifndef CONFIG_CC_IS_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(call cc-option,-mabi=elfv1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(call cc-option,-mcall-aixdesc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) aflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(call cc-option,-mabi=elfv1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) aflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -mabi=elfv2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) ifndef CONFIG_CC_IS_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)   cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -mno-strict-align
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) cflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(call cc-option,-mbig-endian)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) cflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -mlittle-endian
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) aflags-$(CONFIG_CPU_BIG_ENDIAN)		+= $(call cc-option,-mbig-endian)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) aflags-$(CONFIG_CPU_LITTLE_ENDIAN)	+= -mlittle-endian
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ifeq ($(HAS_BIARCH),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) KBUILD_CFLAGS	+= -m$(BITS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) KBUILD_AFLAGS	+= -m$(BITS) -Wl,-a$(BITS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) KBUILD_LDFLAGS	+= -m elf$(BITS)$(LDEMULATION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) cflags-$(CONFIG_STACKPROTECTOR)	+= -mstack-protector-guard=tls
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) cflags-$(CONFIG_STACKPROTECTOR)	+= -mstack-protector-guard-reg=r13
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) cflags-$(CONFIG_STACKPROTECTOR)	+= -mstack-protector-guard-reg=r2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) LDFLAGS_vmlinux-y := -Bstatic
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) LDFLAGS_vmlinux	:= $(LDFLAGS_vmlinux-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) ifeq ($(call cc-option-yn,-mcmodel=medium),y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	# -mcmodel=medium breaks modules because it uses 32bit offsets from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	# the TOC pointer to create pointers where possible. Pointers into the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	# percpu data area are created by this method.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	#
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	# The kernel module loader relocates the percpu data section from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	# original location (starting with 0xd...) to somewhere in the base
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	# kernel percpu data space (starting with 0xc...). We need a full
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	# 64bit relocation for this to work, hence -mcmodel=large.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	KBUILD_CFLAGS_MODULE += -mcmodel=large
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	export NO_MINIMAL_TOC := -mno-minimal-toc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) CFLAGS-$(CONFIG_PPC64)	:= $(call cc-option,-mtraceback=no)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) ifndef CONFIG_CC_IS_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ifdef CONFIG_CPU_LITTLE_ENDIAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mabi=elfv2,$(call cc-option,-mcall-aixdesc))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) AFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mabi=elfv2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mabi=elfv1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mcall-aixdesc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) AFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mabi=elfv1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) CFLAGS-$(CONFIG_PPC64)	+= $(call cc-option,-mno-pointers-to-nested-functions)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) # Clang unconditionally reserves r2 on ppc32 and does not support the flag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) # https://bugs.llvm.org/show_bug.cgi?id=39555
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) CFLAGS-$(CONFIG_PPC32)	:= $(call cc-option, -ffixed-r2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) # Clang doesn't support -mmultiple / -mno-multiple
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) # https://bugs.llvm.org/show_bug.cgi?id=39556
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option, $(MULTIPLEWORD))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) CFLAGS-$(CONFIG_PPC32)	+= $(call cc-option,-mno-readonly-in-sdata)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ifdef CONFIG_PPC_BOOK3S_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) ifdef CONFIG_CPU_LITTLE_ENDIAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power9,-mtune=power8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,$(call cc-option,-mtune=power5))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mcpu=power5,-mcpu=power4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) else ifdef CONFIG_PPC_BOOK3E_64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) ifdef CONFIG_FUNCTION_TRACER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) CC_FLAGS_FTRACE := -pg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) ifdef CONFIG_MPROFILE_KERNEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) CC_FLAGS_FTRACE += -mprofile-kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) # Work around gcc code-gen bugs with -pg / -fno-omit-frame-pointer in gcc <= 4.8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=44199
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52828
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) ifndef CONFIG_CC_IS_CLANG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) CC_FLAGS_FTRACE	+= $(call cc-ifversion, -lt, 0409, -mno-sched-epilog)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) # Altivec option not allowed with e500mc64 in GCC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) ifdef CONFIG_ALTIVEC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) E5500_CPU := -mcpu=powerpc64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) E5500_CPU := $(call cc-option,-mcpu=e500mc64,-mcpu=powerpc64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) CFLAGS-$(CONFIG_E5500_CPU) += $(E5500_CPU)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) ifdef CONFIG_PPC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) ifdef CONFIG_PPC_E500MC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) CFLAGS-y += $(call cc-option,-mcpu=e500mc,-mcpu=powerpc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) CFLAGS-$(CONFIG_E500) += $(call cc-option,-mcpu=8540 -msoft-float,-mcpu=powerpc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) KBUILD_CPPFLAGS	+= -I $(srctree)/arch/$(ARCH) $(asinstr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) KBUILD_AFLAGS	+= $(AFLAGS-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) KBUILD_CFLAGS	+= $(call cc-option,-msoft-float)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) KBUILD_CFLAGS	+= -pipe $(CFLAGS-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) CPP		= $(CC) -E $(KBUILD_CFLAGS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) CHECKFLAGS	+= -m$(BITS) -D__powerpc__ -D__powerpc$(BITS)__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) ifdef CONFIG_CPU_BIG_ENDIAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) CHECKFLAGS	+= -D__BIG_ENDIAN__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) CHECKFLAGS	+= -D__LITTLE_ENDIAN__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) ifdef CONFIG_476FPE_ERR46
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 	KBUILD_LDFLAGS_MODULE += --ppc476-workaround \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 		-T $(srctree)/arch/powerpc/platforms/44x/ppc476_modules.lds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) # No AltiVec or VSX instructions when building kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) KBUILD_CFLAGS += $(call cc-option,-mno-altivec)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) KBUILD_CFLAGS += $(call cc-option,-mno-vsx)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) # No SPE instruction when building kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) # (We use all available options to help semi-broken compilers)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) KBUILD_CFLAGS += $(call cc-option,-mno-spe)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) KBUILD_CFLAGS += $(call cc-option,-mspe=no)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) # Don't emit .eh_frame since we have no use for it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) # Never use string load/store instructions as they are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) # often slow when they are implemented at all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) KBUILD_CFLAGS		+= $(call cc-option,-mno-string)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) cpu-as-$(CONFIG_40x)		+= -Wa,-m405
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) cpu-as-$(CONFIG_44x)		+= -Wa,-m440
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) cpu-as-$(CONFIG_ALTIVEC)	+= $(call as-option,-Wa$(comma)-maltivec)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) cpu-as-$(CONFIG_E500)		+= -Wa,-me500
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) # When using '-many -mpower4' gas will first try and find a matching power4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) # mnemonic and failing that it will allow any valid mnemonic that GAS knows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) # about. GCC will pass -many to GAS when assembling, clang does not.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) cpu-as-$(CONFIG_PPC_BOOK3S_64)	+= -Wa,-mpower4 -Wa,-many
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) cpu-as-$(CONFIG_PPC_E500MC)	+= $(call as-option,-Wa$(comma)-me500mc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) KBUILD_AFLAGS += $(cpu-as-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) KBUILD_CFLAGS += $(cpu-as-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) KBUILD_AFLAGS += $(aflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) KBUILD_CFLAGS += $(cflags-y)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) head-$(CONFIG_PPC64)		:= arch/powerpc/kernel/head_64.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) head-$(CONFIG_PPC_BOOK3S_32)	:= arch/powerpc/kernel/head_book3s_32.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) head-$(CONFIG_PPC_8xx)		:= arch/powerpc/kernel/head_8xx.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) head-$(CONFIG_40x)		:= arch/powerpc/kernel/head_40x.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) head-$(CONFIG_44x)		:= arch/powerpc/kernel/head_44x.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) head-$(CONFIG_FSL_BOOKE)	:= arch/powerpc/kernel/head_fsl_booke.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) head-$(CONFIG_PPC64)		+= arch/powerpc/kernel/entry_64.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) head-$(CONFIG_PPC_FPU)		+= arch/powerpc/kernel/fpu.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) head-$(CONFIG_ALTIVEC)		+= arch/powerpc/kernel/vector.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) head-$(CONFIG_PPC_OF_BOOT_TRAMPOLINE)  += arch/powerpc/kernel/prom_init.o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) # See arch/powerpc/Kbuild for content of core part of the kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) core-y += arch/powerpc/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) drivers-$(CONFIG_OPROFILE)	+= arch/powerpc/oprofile/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) # Default to zImage, override when needed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) all: zImage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) # With make 3.82 we cannot mix normal and wildcard targets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) BOOT_TARGETS1 := zImage zImage.initrd uImage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.% uImage.%
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) boot := arch/$(ARCH)/boot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) $(BOOT_TARGETS1): vmlinux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 	$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) $(BOOT_TARGETS2): vmlinux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 	$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) PHONY += bootwrapper_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) bootwrapper_install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) 	$(Q)$(MAKE) $(build)=$(boot) $(patsubst %,$(boot)/%,$@)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) # Used to create 'merged defconfigs'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) # To use it $(call) it with the first argument as the base defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) # and the second argument as a space separated list of .config files to merge,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) # without the .config suffix.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) define merge_into_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 		-m -O $(objtree) $(srctree)/arch/$(ARCH)/configs/$(1) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) 		$(foreach config,$(2),$(srctree)/arch/$(ARCH)/configs/$(config).config)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 	+$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) PHONY += pseries_le_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) pseries_le_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) 	$(call merge_into_defconfig,pseries_defconfig,le)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) PHONY += ppc64le_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) ppc64le_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 	$(call merge_into_defconfig,ppc64_defconfig,le)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) PHONY += ppc64le_guest_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) ppc64le_guest_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) 	$(call merge_into_defconfig,ppc64_defconfig,le guest)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) PHONY += ppc64_guest_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) ppc64_guest_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) 	$(call merge_into_defconfig,ppc64_defconfig,be guest)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) PHONY += powernv_be_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) powernv_be_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 	$(call merge_into_defconfig,powernv_defconfig,be)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) PHONY += mpc85xx_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) mpc85xx_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 	$(call merge_into_defconfig,mpc85xx_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 		85xx-32bit 85xx-hw fsl-emb-nonhw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) PHONY += mpc85xx_smp_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) mpc85xx_smp_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) 	$(call merge_into_defconfig,mpc85xx_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 		85xx-32bit 85xx-smp 85xx-hw fsl-emb-nonhw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) PHONY += corenet32_smp_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) corenet32_smp_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) 	$(call merge_into_defconfig,corenet_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 		85xx-32bit 85xx-smp 85xx-hw fsl-emb-nonhw dpaa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) PHONY += corenet64_smp_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) corenet64_smp_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 	$(call merge_into_defconfig,corenet_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) 		85xx-64bit 85xx-smp altivec 85xx-hw fsl-emb-nonhw dpaa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) PHONY += mpc86xx_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) mpc86xx_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) 	$(call merge_into_defconfig,mpc86xx_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) 		86xx-hw fsl-emb-nonhw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) PHONY += mpc86xx_smp_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) mpc86xx_smp_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) 	$(call merge_into_defconfig,mpc86xx_base.config,\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) 		86xx-smp 86xx-hw fsl-emb-nonhw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) PHONY += ppc32_allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) ppc32_allmodconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) 	$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/book3s_32.config \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) 		-f $(srctree)/Makefile allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) PHONY += ppc_defconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) ppc_defconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) 	$(call merge_into_defconfig,book3s_32.config,)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) PHONY += ppc64le_allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) ppc64le_allmodconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) 	$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/le.config \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) 		-f $(srctree)/Makefile allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) PHONY += ppc64_book3e_allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) ppc64_book3e_allmodconfig:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) 	$(Q)$(MAKE) KCONFIG_ALLCONFIG=$(srctree)/arch/powerpc/configs/85xx-64bit.config \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) 		-f $(srctree)/Makefile allmodconfig
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) define archhelp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)   @echo '* zImage          - Build default images selected by kernel config'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384)   @echo '  zImage.*        - Compressed kernel image (arch/$(ARCH)/boot/zImage.*)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)   @echo '  uImage          - U-Boot native image format'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)   @echo '  cuImage.<dt>    - Backwards compatible U-Boot image for older'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387)   @echo '                    versions which do not support device trees'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388)   @echo '  dtbImage.<dt>   - zImage with an embedded device tree blob'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)   @echo '  simpleImage.<dt> - Firmware independent image.'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390)   @echo '  treeImage.<dt>  - Support for older IBM 4xx firmware (not U-Boot)'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391)   @echo '  install         - Install kernel using'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)   @echo '                    (your) ~/bin/$(INSTALLKERNEL) or'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393)   @echo '                    (distribution) /sbin/$(INSTALLKERNEL) or'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394)   @echo '                    install to $$(INSTALL_PATH) and run lilo'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395)   @echo '  *_defconfig     - Select default config from arch/$(ARCH)/configs'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396)   @echo ''
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397)   @echo '  Targets with <dt> embed a device tree blob inside the image'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398)   @echo '  These targets support board with firmware that does not'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399)   @echo '  support passing a device tree directly.  Replace <dt> with the'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400)   @echo '  name of a dts file from the arch/$(ARCH)/boot/dts/ directory'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)   @echo '  (minus the .dts extension).'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) endef
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) PHONY += install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) 	$(Q)$(MAKE) $(build)=$(boot) install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) PHONY += vdso_install
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) vdso_install:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) 	$(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso64 $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) ifdef CONFIG_VDSO32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) 	$(Q)$(MAKE) $(build)=arch/$(ARCH)/kernel/vdso32 $@
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) archclean:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) 	$(Q)$(MAKE) $(clean)=$(boot)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) archprepare: checkbin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) archheaders:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) 	$(Q)$(MAKE) $(build)=arch/powerpc/kernel/syscalls all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) ifdef CONFIG_STACKPROTECTOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) prepare: stack_protector_prepare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) PHONY += stack_protector_prepare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) stack_protector_prepare: prepare0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) ifdef CONFIG_PPC64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) 	$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) 	$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) ifdef CONFIG_SMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) prepare: task_cpu_prepare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) PHONY += task_cpu_prepare
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) task_cpu_prepare: prepare0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) 	$(eval KBUILD_CFLAGS += -D_TASK_CPU=$(shell awk '{if ($$2 == "TASK_CPU") print $$3;}' include/generated/asm-offsets.h))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) PHONY += checkbin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) # Check toolchain versions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) # - gcc-4.6 is the minimum kernel-wide version so nothing required.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) checkbin:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) 	@if test "x${CONFIG_CPU_LITTLE_ENDIAN}" = "xy" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) 	    && $(LD) --version | head -1 | grep ' 2\.24$$' >/dev/null ; then \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) 		echo -n '*** binutils 2.24 miscompiles weak symbols ' ; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) 		echo 'in some circumstances.' ; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) 		echo -n '*** Please use a different binutils version.' ; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) 		false ; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) 	fi