^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