2005-04-17 02:20:36 +04:00
#
# arch/arm/Makefile
#
2006-03-06 01:14:10 +03:00
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies.
#
2005-04-17 02:20:36 +04:00
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 1995-2001 by Russell King
2020-12-08 03:34:16 +03:00
LDFLAGS_vmlinux := --no-undefined -X --pic-veneer -z norelro
2009-05-30 17:00:18 +04:00
i f e q ( $( CONFIG_CPU_ENDIAN_BE 8) , y )
LDFLAGS_vmlinux += --be8
2017-10-09 10:11:45 +03:00
KBUILD_LDFLAGS_MODULE += --be8
2009-05-30 17:00:18 +04:00
e n d i f
2009-09-20 14:28:22 +04:00
2005-04-17 02:20:36 +04:00
GZFLAGS := -9
2007-10-15 00:21:35 +04:00
#KBUILD_CFLAGS +=-pipe
2005-04-17 02:20:36 +04:00
2010-08-15 02:56:21 +04:00
# Never generate .eh_frame
KBUILD_CFLAGS += $( call cc-option,-fno-dwarf2-cfi-asm)
2022-08-13 00:24:25 +03:00
# Disable FDPIC ABI
KBUILD_CFLAGS += $( call cc-option,-mno-fdpic)
2015-12-19 01:44:23 +03:00
# This should work on most of the modern platforms
KBUILD_DEFCONFIG := multi_v7_defconfig
2005-04-17 02:20:36 +04:00
2009-07-23 10:31:31 +04:00
# defines filename extension depending memory management type.
2006-03-27 18:14:19 +04:00
i f e q ( $( CONFIG_MMU ) , )
MMUEXT := -nommu
2012-12-04 15:56:44 +04:00
KBUILD_CFLAGS += $( call cc-option,-mno-unaligned-access)
2006-03-27 18:14:19 +04:00
e n d i f
2005-04-17 02:20:36 +04:00
i f e q ( $( CONFIG_FRAME_POINTER ) , y )
2019-08-22 23:26:53 +03:00
KBUILD_CFLAGS += -fno-omit-frame-pointer
i f e q ( $( CONFIG_CC_IS_GCC ) , y )
KBUILD_CFLAGS += -mapcs -mno-sched-prolog
e n d i f
2005-04-17 02:20:36 +04:00
e n d i f
i f e q ( $( CONFIG_CPU_BIG_ENDIAN ) , y )
2007-10-16 00:17:25 +04:00
KBUILD_CPPFLAGS += -mbig-endian
2017-10-31 20:19:15 +03:00
CHECKFLAGS += -D__ARMEB__
2018-08-24 02:20:39 +03:00
KBUILD_LDFLAGS += -EB
2005-04-17 02:20:36 +04:00
e l s e
2007-10-16 00:17:25 +04:00
KBUILD_CPPFLAGS += -mlittle-endian
2017-10-31 20:19:15 +03:00
CHECKFLAGS += -D__ARMEL__
2018-08-24 02:20:39 +03:00
KBUILD_LDFLAGS += -EL
2005-04-17 02:20:36 +04:00
e n d i f
2015-09-03 15:24:40 +03:00
#
# The Scalar Replacement of Aggregates (SRA) optimization pass in GCC 4.9 and
# later may result in code being generated that handles signed short and signed
# char struct members incorrectly. So disable it.
# (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65932)
#
KBUILD_CFLAGS += $( call cc-option,-fno-ipa-sra)
2005-04-17 02:20:36 +04:00
# This selects which instruction set is used.
# Note that GCC does not numerically define an architecture version
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Naresh and Antonio ran into a build failure with latest Debian
armhf compilers, with lots of output like
tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
As it turns out, $(cc-option) fails early here when the FPU is not
selected before CPU architecture is selected, as the compiler
option check runs before enabling -msoft-float, which causes
a problem when testing a target architecture level without an FPU:
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
issue, but the fallback logic is already broken because all supported
compilers (gcc-5 and higher) are much more recent than these options,
and building with -march=armv5t as a fallback no longer works.
The best way forward that I see is to just remove all the checks, which
also has the nice side-effect of slightly improving the startup time for
'make'.
The -mtune=marvell-f option was apparently never supported by any mainline
compiler, and the custom Codesourcery gcc build that did support is
now too old to build kernels, so just use -mtune=xscale unconditionally
for those.
This should be safe to apply on all stable kernels, and will be required
in order to keep building them with gcc-11 and higher.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Matthias Klose <doko@debian.org>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2021-11-06 21:42:29 +03:00
arch-$(CONFIG_CPU_32v7M) = -D__LINUX_ARM_ARCH__= 7 -march= armv7-m
arch-$(CONFIG_CPU_32v7) = -D__LINUX_ARM_ARCH__= 7 -march= armv7-a
arch-$(CONFIG_CPU_32v6) = -D__LINUX_ARM_ARCH__= 6 -march= armv6
2007-05-09 01:45:26 +04:00
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7
i f e q ( $( CONFIG_CPU_ 32v 6) , y )
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Naresh and Antonio ran into a build failure with latest Debian
armhf compilers, with lots of output like
tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
As it turns out, $(cc-option) fails early here when the FPU is not
selected before CPU architecture is selected, as the compiler
option check runs before enabling -msoft-float, which causes
a problem when testing a target architecture level without an FPU:
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
issue, but the fallback logic is already broken because all supported
compilers (gcc-5 and higher) are much more recent than these options,
and building with -march=armv5t as a fallback no longer works.
The best way forward that I see is to just remove all the checks, which
also has the nice side-effect of slightly improving the startup time for
'make'.
The -mtune=marvell-f option was apparently never supported by any mainline
compiler, and the custom Codesourcery gcc build that did support is
now too old to build kernels, so just use -mtune=xscale unconditionally
for those.
This should be safe to apply on all stable kernels, and will be required
in order to keep building them with gcc-11 and higher.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Matthias Klose <doko@debian.org>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2021-11-06 21:42:29 +03:00
arch-$(CONFIG_CPU_32v6K) = -D__LINUX_ARM_ARCH__= 6 -march= armv6k
2007-05-09 01:45:26 +04:00
e n d i f
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Naresh and Antonio ran into a build failure with latest Debian
armhf compilers, with lots of output like
tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
As it turns out, $(cc-option) fails early here when the FPU is not
selected before CPU architecture is selected, as the compiler
option check runs before enabling -msoft-float, which causes
a problem when testing a target architecture level without an FPU:
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
issue, but the fallback logic is already broken because all supported
compilers (gcc-5 and higher) are much more recent than these options,
and building with -march=armv5t as a fallback no longer works.
The best way forward that I see is to just remove all the checks, which
also has the nice side-effect of slightly improving the startup time for
'make'.
The -mtune=marvell-f option was apparently never supported by any mainline
compiler, and the custom Codesourcery gcc build that did support is
now too old to build kernels, so just use -mtune=xscale unconditionally
for those.
This should be safe to apply on all stable kernels, and will be required
in order to keep building them with gcc-11 and higher.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Matthias Klose <doko@debian.org>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2021-11-06 21:42:29 +03:00
arch-$(CONFIG_CPU_32v5) = -D__LINUX_ARM_ARCH__= 5 -march= armv5te
2013-06-27 07:32:06 +04:00
arch-$(CONFIG_CPU_32v4T) = -D__LINUX_ARM_ARCH__= 4 -march= armv4t
arch-$(CONFIG_CPU_32v4) = -D__LINUX_ARM_ARCH__= 4 -march= armv4
2018-10-02 17:01:24 +03:00
arch-$(CONFIG_CPU_32v3) = -D__LINUX_ARM_ARCH__= 3 -march= armv3m
2013-06-27 07:32:06 +04:00
# Evaluate arch cc-option calls now
arch-y := $( arch-y)
2005-04-17 02:20:36 +04:00
# This selects how we optimise for the processor.
2013-06-27 07:32:06 +04:00
tune-$(CONFIG_CPU_ARM7TDMI) = -mtune= arm7tdmi
tune-$(CONFIG_CPU_ARM720T) = -mtune= arm7tdmi
tune-$(CONFIG_CPU_ARM740T) = -mtune= arm7tdmi
tune-$(CONFIG_CPU_ARM9TDMI) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM940T) = -mtune= arm9tdmi
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Naresh and Antonio ran into a build failure with latest Debian
armhf compilers, with lots of output like
tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
As it turns out, $(cc-option) fails early here when the FPU is not
selected before CPU architecture is selected, as the compiler
option check runs before enabling -msoft-float, which causes
a problem when testing a target architecture level without an FPU:
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
issue, but the fallback logic is already broken because all supported
compilers (gcc-5 and higher) are much more recent than these options,
and building with -march=armv5t as a fallback no longer works.
The best way forward that I see is to just remove all the checks, which
also has the nice side-effect of slightly improving the startup time for
'make'.
The -mtune=marvell-f option was apparently never supported by any mainline
compiler, and the custom Codesourcery gcc build that did support is
now too old to build kernels, so just use -mtune=xscale unconditionally
for those.
This should be safe to apply on all stable kernels, and will be required
in order to keep building them with gcc-11 and higher.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Matthias Klose <doko@debian.org>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2021-11-06 21:42:29 +03:00
tune-$(CONFIG_CPU_ARM946E) = -mtune= arm9e
2013-06-27 07:32:06 +04:00
tune-$(CONFIG_CPU_ARM920T) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM922T) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM925T) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_ARM926T) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_FA526) = -mtune= arm9tdmi
tune-$(CONFIG_CPU_SA110) = -mtune= strongarm110
tune-$(CONFIG_CPU_SA1100) = -mtune= strongarm1100
ARM: 9156/1: drop cc-option fallbacks for architecture selection
Naresh and Antonio ran into a build failure with latest Debian
armhf compilers, with lots of output like
tmp/ccY3nOAs.s:2215: Error: selected processor does not support `cpsid i' in ARM mode
As it turns out, $(cc-option) fails early here when the FPU is not
selected before CPU architecture is selected, as the compiler
option check runs before enabling -msoft-float, which causes
a problem when testing a target architecture level without an FPU:
cc1: error: '-mfloat-abi=hard': selected architecture lacks an FPU
Passing e.g. -march=armv6k+fp in place of -march=armv6k would avoid this
issue, but the fallback logic is already broken because all supported
compilers (gcc-5 and higher) are much more recent than these options,
and building with -march=armv5t as a fallback no longer works.
The best way forward that I see is to just remove all the checks, which
also has the nice side-effect of slightly improving the startup time for
'make'.
The -mtune=marvell-f option was apparently never supported by any mainline
compiler, and the custom Codesourcery gcc build that did support is
now too old to build kernels, so just use -mtune=xscale unconditionally
for those.
This should be safe to apply on all stable kernels, and will be required
in order to keep building them with gcc-11 and higher.
Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=996419
Reported-by: Antonio Terceiro <antonio.terceiro@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Tested-by: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Matthias Klose <doko@debian.org>
Cc: stable@vger.kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
2021-11-06 21:42:29 +03:00
tune-$(CONFIG_CPU_XSCALE) = -mtune= xscale
tune-$(CONFIG_CPU_XSC3) = -mtune= xscale
tune-$(CONFIG_CPU_FEROCEON) = -mtune= xscale
tune-$(CONFIG_CPU_V6) = -mtune= arm1136j-s
tune-$(CONFIG_CPU_V6K) = -mtune= arm1136j-s
2013-06-27 07:32:06 +04:00
# Evaluate tune cc-option calls now
tune-y := $( tune-y)
2005-04-17 02:20:36 +04:00
2006-01-14 19:33:50 +03:00
i f e q ( $( CONFIG_AEABI ) , y )
2018-05-09 00:49:49 +03:00
CFLAGS_ABI := -mabi= aapcs-linux -mfpu= vfp
2006-01-14 19:33:50 +03:00
e l s e
2005-06-30 20:04:14 +04:00
CFLAGS_ABI := $( call cc-option,-mapcs-32,-mabi= apcs-gnu) $( call cc-option,-mno-thumb-interwork,)
2006-01-14 19:33:50 +03:00
e n d i f
2009-02-12 15:56:34 +03:00
i f e q ( $( CONFIG_ARM_UNWIND ) , y )
CFLAGS_ABI += -funwind-tables
e n d i f
2019-09-04 03:13:15 +03:00
i f e q ( $( CONFIG_CC_IS_CLANG ) , y )
CFLAGS_ABI += -meabi gnu
e n d i f
ARM: smp: Store current pointer in TPIDRURO register if available
Now that the user space TLS register is assigned on every return to user
space, we can use it to keep the 'current' pointer while running in the
kernel. This removes the need to access it via thread_info, which is
located at the base of the stack, but will be moved out of there in a
subsequent patch.
Use the __builtin_thread_pointer() helper when available - this will
help GCC understand that reloading the value within the same function is
not necessary, even when using the per-task stack protector (which also
generates accesses via the TLS register). For example, the generated
code below loads TPIDRURO only once, and uses it to access both the
stack canary and the preempt_count fields.
<do_one_initcall>:
e92d 41f0 stmdb sp!, {r4, r5, r6, r7, r8, lr}
ee1d 4f70 mrc 15, 0, r4, cr13, cr0, {3}
4606 mov r6, r0
b094 sub sp, #80 ; 0x50
f8d4 34e8 ldr.w r3, [r4, #1256] ; 0x4e8 <- stack canary
9313 str r3, [sp, #76] ; 0x4c
f8d4 8004 ldr.w r8, [r4, #4] <- preempt count
Co-developed-by: Keith Packard <keithpac@amazon.com>
Signed-off-by: Keith Packard <keithpac@amazon.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Amit Daniel Kachhap <amit.kachhap@arm.com>
2021-09-18 11:44:37 +03:00
i f e q ( $( CONFIG_CURRENT_POINTER_IN_TPIDRURO ) , y )
CFLAGS_ABI += -mtp= cp15
e n d i f
2017-11-29 09:52:52 +03:00
# Accept old syntax despite ".syntax unified"
AFLAGS_NOWARN := $( call as-option,-Wa$( comma) -mno-warn-deprecated,-Wa$( comma) -W)
2009-07-24 15:33:02 +04:00
i f e q ( $( CONFIG_THUMB 2_KERNEL ) , y )
2019-05-16 01:17:17 +03:00
CFLAGS_ISA := -mthumb -Wa,-mimplicit-it= always $( AFLAGS_NOWARN)
2012-08-10 15:12:20 +04:00
AFLAGS_ISA := $( CFLAGS_ISA) -Wa$( comma) -mthumb
e l s e
2017-11-29 09:52:52 +03:00
CFLAGS_ISA := $( call cc-option,-marm,) $( AFLAGS_NOWARN)
2012-08-10 15:12:20 +04:00
AFLAGS_ISA := $( CFLAGS_ISA)
2009-07-24 15:33:02 +04:00
e n d i f
2006-01-14 19:33:50 +03:00
# Need -Uarm for gcc < 3.x
2012-08-10 15:12:20 +04:00
KBUILD_CFLAGS += $( CFLAGS_ABI) $( CFLAGS_ISA) $( arch-y) $( tune-y) $( call cc-option,-mshort-load-bytes,$( call cc-option,-malignment-traps,) ) -msoft-float -Uarm
KBUILD_AFLAGS += $( CFLAGS_ABI) $( AFLAGS_ISA) $( arch-y) $( tune-y) -include asm/unified.h -msoft-float
2005-04-17 02:20:36 +04:00
2018-05-30 23:48:38 +03:00
CHECKFLAGS += -D__arm__
2005-04-17 02:20:36 +04:00
2014-07-08 16:50:50 +04:00
# Text offset. This list is sorted numerically by address in order to
# provide a means to avoid/resolve conflicts in multi-arch kernels.
2018-04-03 14:02:28 +03:00
# Note: the 32kB below this value is reserved for use by the kernel
# during boot, and this offset is critical to the functioning of
# kexec-tools.
2006-01-03 20:28:33 +03:00
textofs-y := 0x00008000
2010-05-11 10:55:09 +04:00
# We don't want the htc bootloader to corrupt kernel during resume
textofs-$(CONFIG_PM_H1940) := 0x00108000
2017-10-05 04:59:15 +03:00
# RTD1195 has Boot ROM at start of address space
textofs-$(CONFIG_ARCH_REALTEK) := 0x00108000
2005-04-17 02:20:36 +04:00
# SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory
2009-04-26 17:22:29 +04:00
i f e q ( $( CONFIG_ARCH_SA 1100) , y )
textofs-$(CONFIG_SA1111) := 0x00208000
2005-04-17 02:20:36 +04:00
e n d i f
2020-01-06 16:57:15 +03:00
textofs-$(CONFIG_ARCH_IPQ40XX) := 0x00208000
2011-08-12 03:14:28 +04:00
textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000
textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000
2017-09-17 19:45:21 +03:00
textofs-$(CONFIG_ARCH_MESON) := 0x00208000
2014-05-23 13:08:35 +04:00
textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000
2009-04-26 17:22:29 +04:00
# Machine directory name. This list is sorted alphanumerically
# by CONFIG_* macro name.
2017-02-15 13:03:22 +03:00
machine-$(CONFIG_ARCH_ACTIONS) += actions
2022-01-30 17:51:06 +03:00
machine-$(CONFIG_ARCH_AIROHA) += airoha
2015-03-12 14:53:00 +03:00
machine-$(CONFIG_ARCH_ALPINE) += alpine
2016-02-11 19:06:19 +03:00
machine-$(CONFIG_ARCH_ARTPEC) += artpec
2019-08-21 08:55:27 +03:00
machine-$(CONFIG_ARCH_ASPEED) += aspeed
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_AT91) += at91
2014-05-23 13:08:35 +04:00
machine-$(CONFIG_ARCH_AXXIA) += axxia
2012-11-19 21:46:10 +04:00
machine-$(CONFIG_ARCH_BCM) += bcm
2013-09-09 16:36:19 +04:00
machine-$(CONFIG_ARCH_BERLIN) += berlin
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_CLPS711X) += clps711x
machine-$(CONFIG_ARCH_CNS3XXX) += cns3xxx
machine-$(CONFIG_ARCH_DAVINCI) += davinci
2015-03-09 12:05:14 +03:00
machine-$(CONFIG_ARCH_DIGICOLOR) += digicolor
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_DOVE) += dove
machine-$(CONFIG_ARCH_EP93XX) += ep93xx
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_EXYNOS) += exynos
2014-09-24 12:01:19 +04:00
machine-$(CONFIG_ARCH_FOOTBRIDGE) += footbridge
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_GEMINI) += gemini
machine-$(CONFIG_ARCH_HIGHBANK) += highbank
2014-04-01 07:01:09 +04:00
machine-$(CONFIG_ARCH_HISI) += hisi
2022-05-16 19:33:39 +03:00
machine-$(CONFIG_ARCH_HPE) += hpe
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_IOP32X) += iop32x
machine-$(CONFIG_ARCH_IXP4XX) += ixp4xx
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_KEYSTONE) += keystone
2015-05-12 01:00:47 +03:00
machine-$(CONFIG_ARCH_LPC18XX) += lpc18xx
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_LPC32XX) += lpc32xx
2014-09-11 00:16:59 +04:00
machine-$(CONFIG_ARCH_MESON) += meson
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_MMP) += mmp
2013-12-18 16:58:45 +04:00
machine-$(CONFIG_ARCH_MOXART) += moxart
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_MVEBU) += mvebu
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_MXC) += imx
2014-05-13 03:06:13 +04:00
machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
2019-02-27 07:52:33 +03:00
machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_MXS) += mxs
2020-07-10 12:45:38 +03:00
machine-$(CONFIG_ARCH_MSTARV7) += mstar
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_NOMADIK) += nomadik
2017-08-16 22:18:39 +03:00
machine-$(CONFIG_ARCH_NPCM) += npcm
2013-06-11 12:40:17 +04:00
machine-$(CONFIG_ARCH_NSPIRE) += nspire
2016-09-09 13:23:45 +03:00
machine-$(CONFIG_ARCH_OXNAS) += oxnas
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_OMAP1) += omap1
machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2
machine-$(CONFIG_ARCH_ORION5X) += orion5x
machine-$(CONFIG_ARCH_PXA) += pxa
2014-01-22 03:14:10 +04:00
machine-$(CONFIG_ARCH_QCOM) += qcom
2018-12-18 18:02:30 +03:00
machine-$(CONFIG_ARCH_RDA) += rda
2017-10-05 04:59:15 +03:00
machine-$(CONFIG_ARCH_REALTEK) += realtek
2013-06-03 01:09:41 +04:00
machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_RPC) += rpc
2019-09-02 18:47:55 +03:00
machine-$(CONFIG_PLAT_SAMSUNG) += s3c
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_S5PV210) += s5pv210
machine-$(CONFIG_ARCH_SA1100) += sa1100
2018-04-20 16:28:27 +03:00
machine-$(CONFIG_ARCH_RENESAS) += shmobile
2021-03-11 18:25:32 +03:00
machine-$(CONFIG_ARCH_INTEL_SOCFPGA) += socfpga
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_STI) += sti
2015-05-09 10:53:54 +03:00
machine-$(CONFIG_ARCH_STM32) += stm32
2022-06-28 09:26:49 +03:00
machine-$(CONFIG_ARCH_SUNPLUS) += sunplus
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_SUNXI) += sunxi
ARM: initial multiplatform support
This lets us build a multiplatform kernel for experimental purposes.
However, it will not be useful for any real work, because it relies
on a number of useful things to be disabled for now:
* SMP support must be turned off because of conflicting symbols.
Marc Zyngier has proposed a solution by adding a new SOC
operations structure to hold indirect function pointers
for these, but that work is currently stalled
* We turn on SPARSE_IRQ unconditionally, which is not supported
on most platforms. Each of them is currently in a different
state, but most are being worked on.
* A common clock framework is in place since v3.4 but not yet
being used. Work on this is on its way.
* DEBUG_LL for early debugging is currently disabled.
* THUMB2_KERNEL does not work with allyesconfig because the
kernel gets too big
[Rob Herring]: Rebased to not be dependent on the mass mach header rename.
As a result, omap2plus, imx, mxs and ux500 are not converted. Highbank,
picoxcell, mvebu, and socfpga are converted.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Andrew Lunn <andrew@lunn.ch>
Acked-by: Jamie Iles <jamie@jamieiles.com>
Cc: Dinh Nguyen <dinguyen@altera.com>
2012-09-06 22:41:12 +04:00
machine-$(CONFIG_ARCH_TEGRA) += tegra
machine-$(CONFIG_ARCH_U8500) += ux500
machine-$(CONFIG_ARCH_VT8500) += vt8500
2013-07-27 03:45:45 +04:00
machine-$(CONFIG_ARCH_ZYNQ) += zynq
2022-04-01 15:35:42 +03:00
machine-$(CONFIG_PLAT_VERSATILE) += versatile
2012-12-02 18:12:47 +04:00
machine-$(CONFIG_PLAT_SPEAR) += spear
2009-04-26 17:22:29 +04:00
2022-07-27 12:53:02 +03:00
# legacy platforms provide their own mach/*.h headers globally,
# these three are mutually exclusive
machdirs-$(CONFIG_ARCH_FOOTBRIDGE) += arch/arm/mach-footbridge
machdirs-$(CONFIG_ARCH_RPC) += arch/arm/mach-rpc
machdirs-$(CONFIG_ARCH_SA1100) += arch/arm/mach-sa1100
KBUILD_CPPFLAGS += $( patsubst %,-I$( srctree) /%/include,$( machdirs-y) )
2005-04-17 02:20:36 +04:00
2006-01-03 20:28:33 +03:00
# The byte offset of the kernel image in RAM from the start of RAM.
TEXT_OFFSET := $( textofs-y)
2005-04-17 02:20:36 +04:00
2006-03-27 18:14:19 +04:00
export TEXT_OFFSET GZFLAGS MMUEXT
2005-04-17 02:20:36 +04:00
2010-09-01 17:37:05 +04:00
# If we have a machine-specific directory, then include it in the build.
2022-07-27 12:53:02 +03:00
core-y += $( patsubst %,arch/arm/mach-%/,$( machine-y) )
2019-07-18 19:35:23 +03:00
# For cleaning
2022-07-27 12:53:02 +03:00
core- += $( patsubst %,arch/arm/mach-%/,$( machine-) )
core-$(CONFIG_PLAT_ORION) += arch/arm/plat-orion/
2019-07-18 19:35:23 +03:00
2005-11-04 20:17:30 +03:00
libs-y := arch/arm/lib/ $( libs-y)
2005-04-17 02:20:36 +04:00
# Default target when executing plain make
2016-11-23 00:34:30 +03:00
boot := arch/arm/boot
2005-04-17 02:20:36 +04:00
i f e q ( $( CONFIG_XIP_KERNEL ) , y )
2016-11-23 00:34:30 +03:00
KBUILD_IMAGE := $( boot) /xipImage
2005-04-17 02:20:36 +04:00
e l s e
2016-11-23 00:34:30 +03:00
KBUILD_IMAGE := $( boot) /zImage
2005-04-17 02:20:36 +04:00
e n d i f
2018-12-06 11:32:57 +03:00
i f e q ( $( CONFIG_STACKPROTECTOR_PER_TASK ) , y )
prepare : stack_protector_prepare
2021-10-21 17:16:47 +03:00
i f e q ( $( CONFIG_CC_HAVE_STACKPROTECTOR_TLS ) , y )
stack_protector_prepare : prepare 0
$( eval KBUILD_CFLAGS += \
-mstack-protector-guard= tls \
-mstack-protector-guard-offset= $( shell \
awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}' \
include/generated/asm-offsets.h) )
e l s e
2018-12-06 11:32:57 +03:00
stack_protector_prepare : prepare 0
ARM: 8961/2: Fix Kbuild issue caused by per-task stack protector GCC plugin
When using plugins, GCC requires that the -fplugin= options precedes
any of its plugin arguments appearing on the command line as well.
This is usually not a concern, but as it turns out, this requirement
is causing some issues with ARM's per-task stack protector plugin
and Kbuild's implementation of $(cc-option).
When the per-task stack protector plugin is enabled, and we tweak
the implementation of cc-option not to pipe the stderr output of
GCC to /dev/null, the following output is generated when GCC is
executed in the context of cc-option:
cc1: error: plugin arm_ssp_per_task_plugin should be specified before \
-fplugin-arg-arm_ssp_per_task_plugin-tso=1 in the command line
cc1: error: plugin arm_ssp_per_task_plugin should be specified before \
-fplugin-arg-arm_ssp_per_task_plugin-offset=24 in the command line
These errors will cause any option passed to cc-option to be treated
as unsupported, which is obviously incorrect.
The cause of this issue is the fact that the -fplugin= argument is
added to GCC_PLUGINS_CFLAGS, whereas the arguments above are added
to KBUILD_CFLAGS, and the contents of the former get filtered out of
the latter before being passed to the GCC running the cc-option test,
and so the -fplugin= option does not appear at all on the GCC command
line.
Adding the arguments to GCC_PLUGINS_CFLAGS instead of KBUILD_CFLAGS
would be the correct approach here, if it weren't for the fact that we
are using $(eval) to defer the moment that they are added until after
asm-offsets.h is generated, which is after the point where the contents
of GCC_PLUGINS_CFLAGS are added to KBUILD_CFLAGS. So instead, we have
to add our plugin arguments to both.
For similar reasons, we cannot append DISABLE_ARM_SSP_PER_TASK_PLUGIN
to KBUILD_CFLAGS, as it will be passed to GCC when executing in the
context of cc-option, whereas the other plugin arguments will have
been filtered out, resulting in a similar error and false negative
result as above. So add it to ccflags-y instead.
Fixes: 189af4657186da08 ("ARM: smp: add support for per-task stack canaries")
Reported-by: Merlijn Wajer <merlijn@wizzup.org>
Tested-by: Tony Lindgren <tony@atomide.com>
Acked-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2020-02-18 11:15:34 +03:00
$( eval SSP_PLUGIN_CFLAGS := \
2018-12-06 11:32:57 +03:00
-fplugin-arg-arm_ssp_per_task_plugin-offset= $( shell \
2021-09-18 11:44:34 +03:00
awk '{if ($$2 == "TSK_STACK_CANARY") print $$3;}' \
2018-12-06 11:32:57 +03:00
include/generated/asm-offsets.h) )
ARM: 8961/2: Fix Kbuild issue caused by per-task stack protector GCC plugin
When using plugins, GCC requires that the -fplugin= options precedes
any of its plugin arguments appearing on the command line as well.
This is usually not a concern, but as it turns out, this requirement
is causing some issues with ARM's per-task stack protector plugin
and Kbuild's implementation of $(cc-option).
When the per-task stack protector plugin is enabled, and we tweak
the implementation of cc-option not to pipe the stderr output of
GCC to /dev/null, the following output is generated when GCC is
executed in the context of cc-option:
cc1: error: plugin arm_ssp_per_task_plugin should be specified before \
-fplugin-arg-arm_ssp_per_task_plugin-tso=1 in the command line
cc1: error: plugin arm_ssp_per_task_plugin should be specified before \
-fplugin-arg-arm_ssp_per_task_plugin-offset=24 in the command line
These errors will cause any option passed to cc-option to be treated
as unsupported, which is obviously incorrect.
The cause of this issue is the fact that the -fplugin= argument is
added to GCC_PLUGINS_CFLAGS, whereas the arguments above are added
to KBUILD_CFLAGS, and the contents of the former get filtered out of
the latter before being passed to the GCC running the cc-option test,
and so the -fplugin= option does not appear at all on the GCC command
line.
Adding the arguments to GCC_PLUGINS_CFLAGS instead of KBUILD_CFLAGS
would be the correct approach here, if it weren't for the fact that we
are using $(eval) to defer the moment that they are added until after
asm-offsets.h is generated, which is after the point where the contents
of GCC_PLUGINS_CFLAGS are added to KBUILD_CFLAGS. So instead, we have
to add our plugin arguments to both.
For similar reasons, we cannot append DISABLE_ARM_SSP_PER_TASK_PLUGIN
to KBUILD_CFLAGS, as it will be passed to GCC when executing in the
context of cc-option, whereas the other plugin arguments will have
been filtered out, resulting in a similar error and false negative
result as above. So add it to ccflags-y instead.
Fixes: 189af4657186da08 ("ARM: smp: add support for per-task stack canaries")
Reported-by: Merlijn Wajer <merlijn@wizzup.org>
Tested-by: Tony Lindgren <tony@atomide.com>
Acked-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
2020-02-18 11:15:34 +03:00
$( eval KBUILD_CFLAGS += $( SSP_PLUGIN_CFLAGS) )
$( eval GCC_PLUGINS_CFLAGS += $( SSP_PLUGIN_CFLAGS) )
2018-12-06 11:32:57 +03:00
e n d i f
2021-10-21 17:16:47 +03:00
e n d i f
2018-12-06 11:32:57 +03:00
2018-01-11 00:19:37 +03:00
all : $( notdir $ ( KBUILD_IMAGE ) )
2006-10-29 15:51:05 +03:00
2005-04-17 02:20:36 +04:00
2016-10-18 21:57:01 +03:00
archheaders :
$( Q) $( MAKE) $( build) = arch/arm/tools uapi
2009-04-20 21:59:58 +04:00
archprepare :
2016-10-18 22:11:23 +03:00
$( Q) $( MAKE) $( build) = arch/arm/tools kapi
2005-04-17 02:20:36 +04:00
# Convert bzImage to zImage
bzImage : zImage
2013-07-17 20:05:06 +04:00
BOOT_TARGETS = zImage Image xipImage bootpImage uImage
INSTALL_TARGETS = zinstall uinstall install
PHONY += bzImage $( BOOT_TARGETS) $( INSTALL_TARGETS)
ARM: 8418/1: add boot image dependencies to not generate invalid images
U-Boot is often used to boot the kernel on ARM boards, but uImage
is not built by "make all", so we are often inclined to do
"make all uImage" to generate DTBs, modules and uImage in a single
command, but we should notice a pitfall behind it. In fact,
"make all uImage" could generate an invalid uImage if it is run with
the parallel option (-j).
You can reproduce this problem with the following procedure:
[1] First, build "all" and "uImage" separately.
You will get a valid uImage
$ git clean -f -x -d
$ export CROSS_COMPILE=<your-tools-prefix>
$ make -s -j8 ARCH=arm multi_v7_defconfig
$ make -s -j8 ARCH=arm all
$ make -j8 ARCH=arm UIMAGE_LOADADDR=0x80208000 uImage
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CHK include/generated/timeconst.h
CHK include/generated/bounds.h
CHK include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-4.2.0-rc5-00156-gdd2384a-d
Created: Sat Aug 8 23:21:35 2015
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 6138648 Bytes = 5994.77 kB = 5.85 MB
Load Address: 80208000
Entry Point: 80208000
Image arch/arm/boot/uImage is ready
$ ls -l arch/arm/boot/*Image
-rwxrwxr-x 1 masahiro masahiro 13766656 Aug 8 23:20 arch/arm/boot/Image
-rw-rw-r-- 1 masahiro masahiro 6138712 Aug 8 23:21 arch/arm/boot/uImage
-rwxrwxr-x 1 masahiro masahiro 6138648 Aug 8 23:20 arch/arm/boot/zImage
[2] Update some source file(s)
$ touch init/main.c
[3] Then, re-build "all" and "uImage" simultaneously.
You will get an invalid uImage at random.
$ make -j8 ARCH=arm UIMAGE_LOADADDR=0x80208000 all uImage
CHK include/config/kernel.release
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
CHK include/generated/timeconst.h
CHK include/generated/bounds.h
CHK include/generated/asm-offsets.h
CALL scripts/checksyscalls.sh
CC init/main.o
CHK include/generated/compile.h
LD init/built-in.o
LINK vmlinux
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
KSYM .tmp_kallsyms1.o
KSYM .tmp_kallsyms2.o
LD vmlinux
SORTEX vmlinux
SYSMAP System.map
OBJCOPY arch/arm/boot/Image
Building modules, stage 2.
Kernel: arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
Kernel: arch/arm/boot/Image is ready
LD arch/arm/boot/compressed/vmlinux
GZIP arch/arm/boot/compressed/piggy.gzip
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-4.2.0-rc5-00156-gdd2384a-d
Created: Sat Aug 8 23:23:14 2015
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 26472 Bytes = 25.85 kB = 0.03 MB
Load Address: 80208000
Entry Point: 80208000
Image arch/arm/boot/uImage is ready
MODPOST 192 modules
AS arch/arm/boot/compressed/piggy.gzip.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
$ ls -l arch/arm/boot/*Image
-rwxrwxr-x 1 masahiro masahiro 13766656 Aug 8 23:23 arch/arm/boot/Image
-rw-rw-r-- 1 masahiro masahiro 26536 Aug 8 23:23 arch/arm/boot/uImage
-rwxrwxr-x 1 masahiro masahiro 6138648 Aug 8 23:23 arch/arm/boot/zImage
Please notice the uImage is extremely small when this issue is
encountered. Besides, "Kernel: arch/arm/boot/zImage is ready" is
displayed twice, before and after the uImage log.
The root cause of this is the race condition between zImage and
uImage. Actually, uImage depends on zImage, but the dependency
between the two is only described in arch/arm/boot/Makefile.
Because arch/arm/boot/Makefile is not included from the top-level
Makefile, it cannot know the dependency between zImage and uImage.
Consequently, when we run make with the parallel option, Kbuild
updates vmlinux first, and then two different threads descends into
the arch/arm/boot/Makefile almost at the same time, one for updating
zImage and the other for uImage. While one thread is re-generating
zImage, the other also tries to update zImage before creating uImage
on top of that. zImage is overwritten by the slower thread and then
uImage is created based on the half-written zImage.
This is the reason why "Kernel: arch/arm/boot/zImage is ready" is
displayed twice, and a broken uImage is created.
The same problem could happen on bootpImage.
This commit adds dependencies among Image, zImage, uImage, and
bootpImage to arch/arm/Makefile, which is included from the
top-level Makefile.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2015-08-17 06:03:33 +03:00
bootpImage uImage : zImage
zImage : Image
2013-07-17 20:05:06 +04:00
$(BOOT_TARGETS) : vmlinux
2022-07-27 10:26:45 +03:00
$( Q) $( MAKE) $( build) = $( boot) $( boot) /$@
2016-05-30 05:01:23 +03:00
@$( kecho) ' Kernel: $(boot)/$@ is ready'
2005-04-17 02:20:36 +04:00
2022-05-03 05:47:16 +03:00
$(INSTALL_TARGETS) : KBUILD_IMAGE = $( boot ) /$( patsubst %install ,%Image ,$ @)
2013-07-17 20:05:06 +04:00
$(INSTALL_TARGETS) :
2022-05-03 05:47:16 +03:00
$( call cmd,install)
2005-04-17 02:20:36 +04:00
2015-03-25 21:16:05 +03:00
PHONY += vdso_install
vdso_install :
i f e q ( $( CONFIG_VDSO ) , y )
$( Q) $( MAKE) $( build) = arch/arm/vdso $@
e n d i f
2005-04-17 02:20:36 +04:00
# My testing targets (bypasses dependencies)
2022-07-27 10:26:45 +03:00
bp : ; $( Q ) $( MAKE ) $( build ) =$( boot ) $( boot ) /bootpImage
2005-04-17 02:20:36 +04:00
d e f i n e a r c h h e l p
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
2008-03-06 18:22:17 +03:00
echo ' uImage - U-Boot wrapped zImage'
2013-05-03 11:13:55 +04:00
echo ' bootpImage - Combined zImage and initial RAM disk'
2005-04-17 02:20:36 +04:00
echo ' (supply initrd image via make variable INITRD=<path>)'
echo ' install - Install uncompressed kernel'
echo ' zinstall - Install compressed kernel'
2011-01-08 19:18:51 +03:00
echo ' uinstall - Install U-Boot wrapped compressed kernel'
2009-07-20 23:37:11 +04:00
echo ' Install using (your) ~/bin/$(INSTALLKERNEL) or'
echo ' (distribution) /sbin/$(INSTALLKERNEL) or'
2005-04-17 02:20:36 +04:00
echo ' install to $$(INSTALL_PATH) and run lilo'
2015-03-25 21:16:05 +03:00
echo ' vdso_install - Install unstripped vdso.so to $$(INSTALL_MOD_PATH)/vdso'
2005-04-17 02:20:36 +04:00
e n d e f