Skip to contentSkip to conversation

ARM: move -march=* and -mtune= options to arch/arm/Makefile

PATCH Superseded Masahiro Yamada 5 participants 7 messages Feb 10, 2015 – Apr 2, 2015 Arm (32-bit)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

My main motivation for this commit:

[1] Follow the arch/arm/Makefile style of Linux Kernel

[2] Maintain compiler options systematically
Currently, we give -march=* and -mtune=* options inconsistently:
Only some of the CPUs pass -march=* and -mtune=* options. By collecting flags into the arch/arm/Makefile, we can tell which options are missing at a glance.

[3] Prepare for deprecating arch/*/cpu/*/config.mk

Note:
This commit just moves the compiler options so as not to change the behavior at all. It does not care the correctness of the given options. Fox example, "-march=armv5te" might be better than "-march=armv4" for ARM946EJS, but it is beyond the scope this commit. Also, filling the missing -march=* and -tune=* is left to follow-up patches.

---

 arch/arm/Makefile                | 32 ++++++++++++++++++++++++++++++++
 arch/arm/cpu/arm1136/config.mk   |  9 ---------
 arch/arm/cpu/arm1176/config.mk   |  9 ---------
 arch/arm/cpu/arm720t/config.mk   |  9 ---------
 arch/arm/cpu/arm920t/config.mk   |  8 --------
 arch/arm/cpu/arm926ejs/config.mk |  8 --------
 arch/arm/cpu/arm946es/config.mk  |  8 --------
 arch/arm/cpu/armv7/config.mk     |  5 -----
 arch/arm/cpu/armv8/config.mk     |  2 --
 arch/arm/cpu/pxa/config.mk       |  2 --
 arch/arm/cpu/sa1100/config.mk    |  9 ---------
 11 files changed, 32 insertions(+), 69 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1136/config.mk
 delete mode 100644 arch/arm/cpu/arm1176/config.mk
 delete mode 100644 arch/arm/cpu/arm720t/config.mk
 delete mode 100644 arch/arm/cpu/arm920t/config.mk
 delete mode 100644 arch/arm/cpu/arm926ejs/config.mk
 delete mode 100644 arch/arm/cpu/arm946es/config.mk
 delete mode 100644 arch/arm/cpu/sa1100/config.mk
arch/arm/Makefile +32 -0
index ebb7dc3..b63544f 100644
@@ -2,6 +2,38 @@
 # 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)
+
 head-y := arch/arm/cpu/$(CPU)/start.o
 
 ifeq ($(CONFIG_SPL_BUILD),y)
arch/arm/cpu/arm1136/config.mk deleted +0 -9
deleted file mode 100644
index a82c6ce..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5
arch/arm/cpu/arm1176/config.mk deleted +0 -9
deleted file mode 100644
index 5dc2ebb..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5t
arch/arm/cpu/arm720t/config.mk deleted +0 -9
deleted file mode 100644
index 772fb41..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi
arch/arm/cpu/arm920t/config.mk deleted +0 -8
deleted file mode 100644
index 799afff..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4
arch/arm/cpu/arm926ejs/config.mk deleted +0 -8
deleted file mode 100644
index bdb3da1..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv5te
arch/arm/cpu/arm946es/config.mk deleted +0 -8
deleted file mode 100644
index 438668d..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS +=  -march=armv4
arch/arm/cpu/armv7/config.mk +0 -5
index 6c82c3b..63591d4 100644
@@ -5,11 +5,6 @@
 # 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
arch/arm/cpu/armv8/config.mk +0 -2
index f5b9559..6850258 100644
@@ -6,7 +6,5 @@
 #
 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)
arch/arm/cpu/pxa/config.mk +0 -2
index 525f5d3..7fb5316 100644
@@ -6,8 +6,6 @@
 # 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
arch/arm/cpu/sa1100/config.mk deleted +0 -9
deleted file mode 100644
index 3afa685..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=strongarm1100
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

Quoted 20 lines · Masahiro Yamada

My main motivation for this commit:

[1] Follow the arch/arm/Makefile style of Linux Kernel

[2] Maintain compiler options systematically
Currently, we give -march=* and -mtune=* options inconsistently:
Only some of the CPUs pass -march=* and -mtune=* options. By collecting flags into the arch/arm/Makefile, we can tell which options are missing at a glance.

[3] Prepare for deprecating arch/*/cpu/*/config.mk

Note:
This commit just moves the compiler options so as not to change the behavior at all. It does not care the correctness of the given options. Fox example, "-march=armv5te" might be better than "-march=armv4" for ARM946EJS, but it is beyond the scope this commit. Also, filling the missing -march=* and -tune=* is left to follow-up patches.

Quoted 1 line

Very nice,

Best regards,
Marek Vasut

#2 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

In reply to Masahiro Yamada
Quoted 20 lines · Masahiro Yamada

My main motivation for this commit:

[1] Follow the arch/arm/Makefile style of Linux Kernel

[2] Maintain compiler options systematically
Currently, we give -march=* and -mtune=* options inconsistently:
Only some of the CPUs pass -march=* and -mtune=* options. By collecting flags into the arch/arm/Makefile, we can tell which options are missing at a glance.

[3] Prepare for deprecating arch/*/cpu/*/config.mk

Note:
This commit just moves the compiler options so as not to change the behavior at all. It does not care the correctness of the given options. Fox example, "-march=armv5te" might be better than "-march=armv4" for ARM946EJS, but it is beyond the scope this commit. Also, filling the missing -march=* and -tune=* is left to follow-up patches.

Quoted 1 line

Great!

Thanks,
Stefan

#3 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

In reply to Masahiro Yamada

Hello Masahiro,

Quoted 20 lines · Masahiro Yamada

My main motivation for this commit:

[1] Follow the arch/arm/Makefile style of Linux Kernel

[2] Maintain compiler options systematically
Currently, we give -march=* and -mtune=* options inconsistently:
Only some of the CPUs pass -march=* and -mtune=* options. By collecting flags into the arch/arm/Makefile, we can tell which options are missing at a glance.

[3] Prepare for deprecating arch/*/cpu/*/config.mk

Note:
This commit just moves the compiler options so as not to change the behavior at all. It does not care the correctness of the given options. Fox example, "-march=armv5te" might be better than "-march=armv4" for ARM946EJS, but it is beyond the scope this commit. Also, filling the missing -march=* and -tune=* is left to follow-up patches.

Quoted 2 lines

---

I'm fine with the patch's goal and principle, but it does not seem to apply properly to u-boot-arm/master. Can you have a look?

Amicalement,

Signature · 1 line
Albert.
#4 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

Hi Albert,

2015-02-26 6:14 GMT+09:00 Albert ARIBAUD <[email protected]>:

Quoted 3 lines

I'm fine with the patch's goal and principle, but it does not seem to apply properly to u-boot-arm/master. Can you have a look?

Sure.

I've just posted v2:
http://patchwork.ozlabs.org/patch/444028/

It should apply cleanly to u-boot-arm.

Signature · 2 lines
Best Regards
Masahiro Yamada
#5 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

Albert,

2015-02-27 2:43 GMT+09:00 Masahiro YAMADA <[email protected]>:

Quoted 8 lines

Hi Albert,

2015-02-26 6:14 GMT+09:00 Albert ARIBAUD <[email protected]>:

Quoted 3 lines

I'm fine with the patch's goal and principle, but it does not seem to apply properly to u-boot-arm/master. Can you have a look?

Quoted 7 lines

Sure.

I've just posted v2:
http://patchwork.ozlabs.org/patch/444028/

It should apply cleanly to u-boot-arm.

Ping.

I posted v2 as requested by you.

Signature · 2 lines
Best Regards
Masahiro Yamada
#6 lore raw

PATCH 1/1 ARM: move -march=* and -mtune= options to arch/arm/Makefile

In reply to Masahiro Yamada

Hello Masahiro,

Quoted 232 lines · Masahiro Yamada

My main motivation for this commit:

[1] Follow the arch/arm/Makefile style of Linux Kernel

[2] Maintain compiler options systematically
Currently, we give -march=* and -mtune=* options inconsistently:
Only some of the CPUs pass -march=* and -mtune=* options. By collecting flags into the arch/arm/Makefile, we can tell which options are missing at a glance.

[3] Prepare for deprecating arch/*/cpu/*/config.mk

Note:
This commit just moves the compiler options so as not to change the behavior at all. It does not care the correctness of the given options. Fox example, "-march=armv5te" might be better than "-march=armv4" for ARM946EJS, but it is beyond the scope this commit. Also, filling the missing -march=* and -tune=* is left to follow-up patches.

---

 arch/arm/Makefile                | 32 ++++++++++++++++++++++++++++++++
 arch/arm/cpu/arm1136/config.mk   |  9 ---------
 arch/arm/cpu/arm1176/config.mk   |  9 ---------
 arch/arm/cpu/arm720t/config.mk   |  9 ---------
 arch/arm/cpu/arm920t/config.mk   |  8 --------
 arch/arm/cpu/arm926ejs/config.mk |  8 --------
 arch/arm/cpu/arm946es/config.mk  |  8 --------
 arch/arm/cpu/armv7/config.mk     |  5 -----
 arch/arm/cpu/armv8/config.mk     |  2 --
 arch/arm/cpu/pxa/config.mk       |  2 --
 arch/arm/cpu/sa1100/config.mk    |  9 ---------
 11 files changed, 32 insertions(+), 69 deletions(-)
 delete mode 100644 arch/arm/cpu/arm1136/config.mk
 delete mode 100644 arch/arm/cpu/arm1176/config.mk
 delete mode 100644 arch/arm/cpu/arm720t/config.mk
 delete mode 100644 arch/arm/cpu/arm920t/config.mk
 delete mode 100644 arch/arm/cpu/arm926ejs/config.mk
 delete mode 100644 arch/arm/cpu/arm946es/config.mk
 delete mode 100644 arch/arm/cpu/sa1100/config.mk
arch/arm/Makefile +32 -0
index ebb7dc3..b63544f 100644
@@ -2,6 +2,38 @@
 # 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)
+
 head-y := arch/arm/cpu/$(CPU)/start.o
 
 ifeq ($(CONFIG_SPL_BUILD),y)
arch/arm/cpu/arm1136/config.mk deleted +0 -9
deleted file mode 100644
index a82c6ce..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5
arch/arm/cpu/arm1176/config.mk deleted +0 -9
deleted file mode 100644
index 5dc2ebb..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-# Make ARMv5 to allow more compilers to work, even though its v6.
-PLATFORM_CPPFLAGS += -march=armv5t
arch/arm/cpu/arm720t/config.mk deleted +0 -9
deleted file mode 100644
index 772fb41..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=arm7tdmi
arch/arm/cpu/arm920t/config.mk deleted +0 -8
deleted file mode 100644
index 799afff..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4
arch/arm/cpu/arm926ejs/config.mk deleted +0 -8
deleted file mode 100644
index bdb3da1..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv5te
arch/arm/cpu/arm946es/config.mk deleted +0 -8
deleted file mode 100644
index 438668d..0000000
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS +=  -march=armv4
arch/arm/cpu/armv7/config.mk +0 -5
index 6c82c3b..63591d4 100644
@@ -5,11 +5,6 @@
 # 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
arch/arm/cpu/armv8/config.mk +0 -2
index f5b9559..6850258 100644
@@ -6,7 +6,5 @@
 #
 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)
arch/arm/cpu/pxa/config.mk +0 -2
index 525f5d3..7fb5316 100644
@@ -6,8 +6,6 @@
 # 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
arch/arm/cpu/sa1100/config.mk deleted +0 -9
deleted file mode 100644
index 3afa685..0000000
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002
-# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
-# Marius Groeger <[email protected]>
-#
-# SPDX-License-Identifier:	GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -march=armv4 -mtune=strongarm1100
Signature · 1 line
1.9.1

Applied to u-boot-arm/master, thanks!

Amicalement,

Signature · 1 line
Albert.