# SPDX-License-Identifier:     GPL-2.0+
 #
 
+# This selects which instruction set is used.
+arch-$(CONFIG_CPU_ARM720T)     =-march=armv4
+arch-$(CONFIG_CPU_ARM920T)     =-march=armv4
+arch-$(CONFIG_CPU_ARM926EJS)   =-march=armv5te
+arch-$(CONFIG_CPU_ARM946ES)    =-march=armv4
+arch-$(CONFIG_CPU_SA1100)      =-march=armv4
+arch-$(CONFIG_CPU_PXA)         =
+arch-$(CONFIG_CPU_ARM1136)     =-march=armv5
+arch-$(CONFIG_CPU_ARM1176)     =-march=armv5t
+arch-$(CONFIG_CPU_V7)          =$(call cc-option, -march=armv7-a, -march=armv5)
+arch-$(CONFIG_ARM64)           =-march=armv8-a
+
+# Evaluate arch cc-option calls now
+arch-y := $(arch-y)
+
+# This selects how we optimise for the processor.
+tune-$(CONFIG_CPU_ARM720T)     =-mtune=arm7tdmi
+tune-$(CONFIG_CPU_ARM920T)     =
+tune-$(CONFIG_CPU_ARM926EJS)   =
+tune-$(CONFIG_CPU_ARM946ES)    =
+tune-$(CONFIG_CPU_SA1100)      =-mtune=strongarm1100
+tune-$(CONFIG_CPU_PXA)         =-mcpu=xscale
+tune-$(CONFIG_CPU_ARM1136)     =
+tune-$(CONFIG_CPU_ARM1176)     =
+tune-$(CONFIG_CPU_V7)          =
+tune-$(CONFIG_ARM64)           =
+
+# Evaluate tune cc-option calls now
+tune-y := $(tune-y)
+
+PLATFORM_CPPFLAGS += $(arch-y) $(tune-y)
+
 # Machine directory name.  This list is sorted alphanumerically
 # by CONFIG_* macro name.
 machine-$(CONFIG_ARCH_AT91)            += at91
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5t
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv5te
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS +=  -march=armv4
 
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-# If armv7-a is not supported by GCC fall-back to armv5, which is
-# supported by more tool-chains
-PF_CPPFLAGS_ARMV7 := $(call cc-option, -march=armv7-a, -march=armv5)
-PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_ARMV7)
-
 # On supported platforms we set the bit which causes us to trap on unaligned
 # memory access.  This is the opposite of what the compiler expects to be
 # the default so we must pass in -mno-unaligned-access so that it is aware
 
 #
 PLATFORM_RELFLAGS += -fno-common -ffixed-x18
 
-PF_CPPFLAGS_ARMV8 := $(call cc-option, -march=armv8-a)
 PF_NO_UNALIGNED := $(call cc-option, -mstrict-align)
-PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_ARMV8)
 PLATFORM_CPPFLAGS += $(PF_NO_UNALIGNED)
 
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-PLATFORM_CPPFLAGS += -mcpu=xscale
-
 #
 # !WARNING!
 # The PXA's OneNAND SPL uses .text.0 and .text.1 segments to allow booting from
 
+++ /dev/null
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <mgroeger@sysgo.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=strongarm1100