Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/8] arch: merge Config.in.aarch64 into Config.in.arm
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 2/8] arch/Config.in.arm: prepare addition of 64 bits cores Yann E. MORIN
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

The 64 bits ARM processors are capable of running 32 bits ARM code, and
some platforms are indeed using this capability. Due to this, if we were
to keep the separation between Config.in.aarch64 and Config.in.arm, we
would have to duplicate the definition of all 64-bits capable ARM cores
into both files.

Instead of going down this route, let's take the same route as the x86
one: a single Config.in.x86 file, used for both x86 32 bits and x86 64
bits, with the appropriate logic to only show the relevant cores
depending on which architecture is selected.

In order to do this, we:

 - Make the "ARM instruction set" choice only visible on ARM 32 bits,
   since we currently don't support ARM vs. Thumb on AArch64.

 - Add the relevant values for the BR2_ARCH option.

 - Add the relevant values for the BR2_ENDIAN option.

 - Make the "aapcs-linux" BR2_GCC_TARGET_ABI value only used on ARM 32
   bits, since this ABI doesn't mean anything on AArch64.

 - Make the BR2_GCC_TARGET_FPU option depends on ARM 32 bits, since
   there is no -mfpu option on AArch64.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in         |  6 +-----
 arch/Config.in.aarch64 |  7 -------
 arch/Config.in.arm     | 14 +++++++++-----
 3 files changed, 10 insertions(+), 17 deletions(-)
 delete mode 100644 arch/Config.in.aarch64

diff --git a/arch/Config.in b/arch/Config.in
index df4db0b..d59cbd7 100644
--- a/arch/Config.in
+++ b/arch/Config.in
@@ -354,14 +354,10 @@ if BR2_arcle || BR2_arceb
 source "arch/Config.in.arc"
 endif
 
-if BR2_arm || BR2_armeb
+if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be
 source "arch/Config.in.arm"
 endif
 
-if BR2_aarch64 || BR2_aarch64_be
-source "arch/Config.in.aarch64"
-endif
-
 if BR2_bfin
 source "arch/Config.in.bfin"
 endif
diff --git a/arch/Config.in.aarch64 b/arch/Config.in.aarch64
deleted file mode 100644
index 34cd409..0000000
--- a/arch/Config.in.aarch64
+++ /dev/null
@@ -1,7 +0,0 @@
-config BR2_ARCH
-	default "aarch64"	if BR2_aarch64
-	default "aarch64_be"	if BR2_aarch64_be
-
-config BR2_ENDIAN
-	default "LITTLE" if BR2_aarch64
-	default "BIG"	 if BR2_aarch64_be
diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index ee612f5..002ed04 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -399,6 +399,7 @@ endchoice
 
 choice
 	prompt "ARM instruction set"
+	depends on BR2_arm || BR2_armeb
 
 config BR2_ARM_INSTRUCTIONS_ARM
 	bool "ARM"
@@ -434,12 +435,14 @@ config BR2_ARM_INSTRUCTIONS_THUMB2
 endchoice
 
 config BR2_ARCH
-	default "arm"	if BR2_arm
-	default "armeb"	if BR2_armeb
+	default "arm"		if BR2_arm
+	default "armeb"		if BR2_armeb
+	default "aarch64"	if BR2_aarch64
+	default "aarch64_be"	if BR2_aarch64_be
 
 config BR2_ENDIAN
-	default "LITTLE" if BR2_arm
-	default "BIG"	 if BR2_armeb
+	default "LITTLE" if (BR2_arm || BR2_aarch64)
+	default "BIG"	 if (BR2_armeb || BR2_aarch64_be)
 
 config BR2_GCC_TARGET_CPU
 	default "arm920t"	if BR2_arm920t
@@ -467,9 +470,10 @@ config BR2_GCC_TARGET_CPU
 	default "iwmmxt"	if BR2_iwmmxt
 
 config BR2_GCC_TARGET_ABI
-	default "aapcs-linux"
+	default "aapcs-linux"	if BR2_arm || BR2_armeb
 
 config BR2_GCC_TARGET_FPU
+	depends on BR2_arm || BR2_armeb
 	default "vfp"		if BR2_ARM_FPU_VFPV2
 	default "vfpv3"		if BR2_ARM_FPU_VFPV3
 	default "vfpv3-d16" 	if BR2_ARM_FPU_VFPV3D16
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 2/8] arch/Config.in.arm: prepare addition of 64 bits cores
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 1/8] arch: merge Config.in.aarch64 into Config.in.arm Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 3/8] arch/Config.in.arm: add BR2_ARM_CPU_ARMV8 Yann E. MORIN
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Until now the "Target Architecture Variant" choice was not visible on
AArch64. In order to prepare the addition of the 64 bits core to this
choice, this commit adds a "depends on !BR2_ARCH_IS_64" dependency to
all currently supported cores (that are 32 bits only).

Following this commit, the "Target Architecture Variant" choice appears
on AArch64, but is for now empty.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 002ed04..0ca6a14 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -57,7 +57,6 @@ config BR2_ARM_CPU_ARMV7M
 
 choice
 	prompt "Target Architecture Variant"
-	depends on BR2_arm || BR2_armeb
 	default BR2_arm926t
 	help
 	  Specific CPU variant to use
@@ -68,12 +67,14 @@ config BR2_arm920t
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV4
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm922t
 	bool "arm922t"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV4
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm926t
 	bool "arm926t"
 	select BR2_ARM_CPU_HAS_ARM
@@ -81,12 +82,14 @@ config BR2_arm926t
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV5
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm1136j_s
 	bool "arm1136j-s"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm1136jf_s
 	bool "arm1136jf-s"
 	select BR2_ARM_CPU_HAS_ARM
@@ -94,12 +97,14 @@ config BR2_arm1136jf_s
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm1176jz_s
 	bool "arm1176jz-s"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm1176jzf_s
 	bool "arm1176jzf-s"
 	select BR2_ARM_CPU_HAS_ARM
@@ -107,6 +112,7 @@ config BR2_arm1176jzf_s
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_arm11mpcore
 	bool "mpcore"
 	select BR2_ARM_CPU_HAS_ARM
@@ -114,6 +120,7 @@ config BR2_arm11mpcore
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV6
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a5
 	bool "cortex-A5"
 	select BR2_ARM_CPU_HAS_ARM
@@ -122,6 +129,7 @@ config BR2_cortex_a5
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a7
 	bool "cortex-A7"
 	select BR2_ARM_CPU_HAS_ARM
@@ -130,6 +138,7 @@ config BR2_cortex_a7
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a8
 	bool "cortex-A8"
 	select BR2_ARM_CPU_HAS_ARM
@@ -138,6 +147,7 @@ config BR2_cortex_a8
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a9
 	bool "cortex-A9"
 	select BR2_ARM_CPU_HAS_ARM
@@ -146,6 +156,7 @@ config BR2_cortex_a9
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a12
 	bool "cortex-A12"
 	select BR2_ARM_CPU_HAS_ARM
@@ -154,6 +165,7 @@ config BR2_cortex_a12
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a15
 	bool "cortex-A15"
 	select BR2_ARM_CPU_HAS_ARM
@@ -162,6 +174,7 @@ config BR2_cortex_a15
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_a17
 	bool "cortex-A17"
 	select BR2_ARM_CPU_HAS_ARM
@@ -170,41 +183,49 @@ config BR2_cortex_a17
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_m3
 	bool "cortex-M3"
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7M
+	depends on !BR2_ARCH_IS_64
 config BR2_cortex_m4
 	bool "cortex-M4"
 	select BR2_ARM_CPU_HAS_THUMB2
 	select BR2_ARM_CPU_ARMV7M
+	depends on !BR2_ARCH_IS_64
 config BR2_fa526
 	bool "fa526/626"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_ARMV4
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_pj4
 	bool "pj4"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_VFPV3
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_strongarm
 	bool "strongarm sa110/sa1100"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_ARMV4
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_xscale
 	bool "xscale"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_THUMB
 	select BR2_ARM_CPU_ARMV5
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 config BR2_iwmmxt
 	bool "iwmmxt"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_ARMV5
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+	depends on !BR2_ARCH_IS_64
 endchoice
 
 config BR2_ARM_ENABLE_NEON
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores
@ 2016-11-30 21:12 Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 1/8] arch: merge Config.in.aarch64 into Config.in.arm Yann E. MORIN
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

Hello All!

This series, originally written by Thomas, allows selecting a specific
AArch64 core anong the few currently existing cores. It also allows
selecting those cores in 32-bit mode.

The series now handles arm (aka AArch32) and AArch64 as a single
architecture, not unlike what we do for the i386 and x86-64.

We so far had no way to optimise for a specific AArch64 core, and would
just let gcc decide based on its default settings. Having a selection,
like we have for all architectures, allows to optimise the generated
code for the actual core on the target.

Furthermore, AArch64 cores are totally capable of running 32-bit code,
in 32-bit mode, like x86_64 cores do in 32-bit mode.

Then, we also allow to select the floating point strategy for those
cores. Unlike 32-bit cores, all current AArch64 core have a VFP unit
with NEON extensions; yet, we still allow selecting soft-float (e.g.
when in 32-bit mode, to keep compatibility with soft-float binary
blobs).

Finally, we add an entry for each of the three currently existing
AArch64 cores, Cortex-A53, A57 and A72.


Regards,
Yann E. MORIN.


The following changes since commit 0689e77eecb88dc204688e9db670d56e4366f83f

  uclibc: disable posix_madvise for noMMU (2016-11-30 16:14:47 +0100)


are available in the git repository at:

  git://git.buildroot.org/~ymorin/git/buildroot.git

for you to fetch changes up to 7cdaae6e62c3a98dceecd5b195ef16f425621cee

  arch/Config.in.arm: add Cortex-A57 and Cortex-A72 (2016-11-30 18:57:14 +0100)


----------------------------------------------------------------
Matt Flax (1):
      arch/Config.in.arm: Add Cortex-A53 CPU

Thomas Petazzoni (6):
      arch: merge Config.in.aarch64 into Config.in.arm
      arch/Config.in.arm: prepare addition of 64 bits cores
      arch/Config.in.arm: add BR2_ARM_CPU_ARMV8
      arch/Config.in.arm: add FPU related options for ARMv8 cores
      arch/Config.in.arm: specify ABI for ARM64
      arch/Config.in.arm: add Cortex-A57 and Cortex-A72

Yann E. MORIN (1):
      arch/arm: drop legacy dependency for floating point strategy

 arch/Config.in         |  6 +---
 arch/Config.in.aarch64 |  7 ----
 arch/Config.in.arm     | 93 ++++++++++++++++++++++++++++++++++++++++++++++----
 3 files changed, 87 insertions(+), 19 deletions(-)
 delete mode 100644 arch/Config.in.aarch64

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 3/8] arch/Config.in.arm: add BR2_ARM_CPU_ARMV8
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 1/8] arch: merge Config.in.aarch64 into Config.in.arm Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 2/8] arch/Config.in.arm: prepare addition of 64 bits cores Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 4/8] arch/arm: drop legacy dependency for floating point strategy Yann E. MORIN
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

In order to prepare the addition of ARM64 cores, add the blind
BR2_ARM_CPU_ARMV8 option.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 0ca6a14..9e5accc 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -55,6 +55,9 @@ config BR2_ARM_CPU_ARMV7A
 config BR2_ARM_CPU_ARMV7M
 	bool
 
+config BR2_ARM_CPU_ARMV8
+	bool
+
 choice
 	prompt "Target Architecture Variant"
 	default BR2_arm926t
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 4/8] arch/arm: drop legacy dependency for floating point strategy
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (2 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 3/8] arch/Config.in.arm: add BR2_ARM_CPU_ARMV8 Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 5/8] arch/Config.in.arm: add FPU related options for ARMv8 cores Yann E. MORIN
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

The floating point strategy currently depends on EABI || EABIHF. The
reason was that, wayback when we also supported OABI, we only exposed FP
for EABI or EABIHF, and hide it for OABI, which did not support FP.

It's been a while now that we do not support OABI, but the dependency
stuck all along.

Remove it as it is no longer needed, and is always true.

However, the choice is empty for AArch64, as we still have no entry for
their floating point strategy yet.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 arch/Config.in.arm | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 9e5accc..fa999d5 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -308,7 +308,6 @@ endchoice
 
 choice
 	prompt "Floating point strategy"
-	depends on BR2_ARM_EABI || BR2_ARM_EABIHF
 	default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
 	default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
 	default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 5/8] arch/Config.in.arm: add FPU related options for ARMv8 cores
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (3 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 4/8] arch/arm: drop legacy dependency for floating point strategy Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 6/8] arch/Config.in.arm: specify ABI for ARM64 Yann E. MORIN
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

The ARMv8 cores have a mandatory FPU unit called FP-ARMv8, so we:

 - add a new hidden Config.in option for the availability of this
   unit (BR2_ARM_CPU_HAS_FP_ARMV8)

 - allow the selection of a possible choice in the "Floating point
   strategy", and add two new choices: BR2_ARM_FPU_FP_ARMV8 and
   BR2_ARM_FPU_NEON_FP_ARMV8.

 - specify the -mfpu values for BR2_ARM_FPU_FP_ARMV8 and
   BR2_ARM_FPU_NEON_FP_ARMV8 cases, when used on ARM 32 bits (-mfpu
   doesn't exist on ARM64, instead -mcpu modifiers are used, so they
   will be added on a per-core basis).

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
[yann.morin.1998 at free.fr: drop the FP strategy dependency]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index fa999d5..1a3c36d 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -31,6 +31,10 @@ config BR2_ARM_CPU_HAS_VFPV4
 	bool
 	select BR2_ARM_CPU_HAS_VFPV3
 
+config BR2_ARM_CPU_HAS_FP_ARMV8
+	bool
+	select BR2_ARM_CPU_HAS_VFPV4
+
 config BR2_ARM_CPU_HAS_ARM
 	bool
 
@@ -308,6 +312,7 @@ endchoice
 
 choice
 	prompt "Floating point strategy"
+	default BR2_ARM_FPU_FP_ARMV8 if BR2_ARM_CPU_HAS_FP_ARMV8
 	default BR2_ARM_FPU_VFPV4D16 if BR2_ARM_CPU_HAS_VFPV4
 	default BR2_ARM_FPU_VFPV3D16 if BR2_ARM_CPU_HAS_VFPV3
 	default BR2_ARM_FPU_VFPV2 if BR2_ARM_CPU_HAS_VFPV2
@@ -418,6 +423,20 @@ config BR2_ARM_FPU_NEON_VFPV4
 	  example on Cortex-A5 and Cortex-A7, support for VFPv4 and
 	  NEON is optional.
 
+config BR2_ARM_FPU_FP_ARMV8
+	bool "FP-ARMv8"
+	depends on BR2_ARM_CPU_HAS_FP_ARMV8
+	help
+	  This option allows to use the ARMv8 floating point unit.
+
+config BR2_ARM_FPU_NEON_FP_ARMV8
+	bool "NEON/FP-ARMv8"
+	depends on BR2_ARM_CPU_HAS_FP_ARMV8
+	depends on BR2_ARM_CPU_HAS_NEON
+	help
+	  This option allows to use both the ARMv8 floating point unit
+	  and the NEON SIMD unit for floating point operations.
+
 endchoice
 
 choice
@@ -504,6 +523,8 @@ config BR2_GCC_TARGET_FPU
 	default "vfpv4-d16" 	if BR2_ARM_FPU_VFPV4D16
 	default "neon" 		if BR2_ARM_FPU_NEON
 	default "neon-vfpv4" 	if BR2_ARM_FPU_NEON_VFPV4
+	default "fp-armv8"	if BR2_ARM_FPU_FP_ARMV8
+	default "neon-fp-armv8"	if BR2_ARM_FPU_NEON_FP_ARMV8
 
 config BR2_GCC_TARGET_FLOAT_ABI
 	default "soft"		if BR2_ARM_SOFT_FLOAT
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 6/8] arch/Config.in.arm: specify ABI for ARM64
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (4 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 5/8] arch/Config.in.arm: add FPU related options for ARMv8 cores Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 7/8] arch/Config.in.arm: Add Cortex-A53 CPU Yann E. MORIN
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

There's currently only one widely supported ABI for ARM64, called lp64,
so we define BR2_GCC_TARGET_ABI to the appropriate value.

Note that there is another ABI for ARM64 being worked on, ilp32, but its
support is not fully upstream in the kernel, so we're not adding support
for it for the moment.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 1a3c36d..c98efcd 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -513,6 +513,7 @@ config BR2_GCC_TARGET_CPU
 
 config BR2_GCC_TARGET_ABI
 	default "aapcs-linux"	if BR2_arm || BR2_armeb
+	default "lp64"		if BR2_aarch64 || BR2_aarch64_be
 
 config BR2_GCC_TARGET_FPU
 	depends on BR2_arm || BR2_armeb
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 7/8] arch/Config.in.arm: Add Cortex-A53 CPU
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (5 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 6/8] arch/Config.in.arm: specify ABI for ARM64 Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-11-30 21:12 ` [Buildroot] [PATCH 8/8] arch/Config.in.arm: add Cortex-A57 and Cortex-A72 Yann E. MORIN
  2016-12-05 22:18 ` [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Thomas Petazzoni
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Matt Flax <flatmax@flatmax.org>

Adds the Cortex-A53 CPU to the target architecture variant choice. This
sets the toolchain to use Cortex-A53 as the target. The effect is that
various Cortex-A53 tunings are enabled for the compilation of packages.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index c98efcd..592b097 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -191,6 +191,13 @@ config BR2_cortex_a17
 	select BR2_ARM_CPU_ARMV7A
 	select BR2_ARCH_HAS_MMU_OPTIONAL
 	depends on !BR2_ARCH_IS_64
+config BR2_cortex_a53
+	bool "cortex-A53"
+	select BR2_ARM_CPU_HAS_ARM
+	select BR2_ARM_CPU_HAS_NEON
+	select BR2_ARM_CPU_HAS_FP_ARMV8
+	select BR2_ARM_CPU_ARMV8
+	select BR2_ARCH_HAS_MMU_OPTIONAL
 config BR2_cortex_m3
 	bool "cortex-M3"
 	select BR2_ARM_CPU_HAS_THUMB2
@@ -510,6 +517,9 @@ config BR2_GCC_TARGET_CPU
 	default "strongarm"	if BR2_strongarm
 	default "xscale"	if BR2_xscale
 	default "iwmmxt"	if BR2_iwmmxt
+	default "cortex-a53"		if (BR2_cortex_a53 && !BR2_ARCH_IS_64)
+	default "cortex-a53+fp"		if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8)
+	default "cortex-a53+fp+simd" 	if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8)
 
 config BR2_GCC_TARGET_ABI
 	default "aapcs-linux"	if BR2_arm || BR2_armeb
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 8/8] arch/Config.in.arm: add Cortex-A57 and Cortex-A72
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (6 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 7/8] arch/Config.in.arm: Add Cortex-A53 CPU Yann E. MORIN
@ 2016-11-30 21:12 ` Yann E. MORIN
  2016-12-05 22:18 ` [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Thomas Petazzoni
  8 siblings, 0 replies; 10+ messages in thread
From: Yann E. MORIN @ 2016-11-30 21:12 UTC (permalink / raw)
  To: buildroot

From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Add two popular ARM64 cores to the list of supported cores: Cortex-A57
and Cortex-A72.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
 arch/Config.in.arm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 592b097..743f6ca 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -198,6 +198,20 @@ config BR2_cortex_a53
 	select BR2_ARM_CPU_HAS_FP_ARMV8
 	select BR2_ARM_CPU_ARMV8
 	select BR2_ARCH_HAS_MMU_OPTIONAL
+config BR2_cortex_a57
+	bool "cortex-A57"
+	select BR2_ARM_CPU_HAS_ARM
+	select BR2_ARM_CPU_HAS_NEON
+	select BR2_ARM_CPU_HAS_FP_ARMV8
+	select BR2_ARM_CPU_ARMV8
+	select BR2_ARCH_HAS_MMU_OPTIONAL
+config BR2_cortex_a72
+	bool "cortex-A72"
+	select BR2_ARM_CPU_HAS_ARM
+	select BR2_ARM_CPU_HAS_NEON
+	select BR2_ARM_CPU_HAS_FP_ARMV8
+	select BR2_ARM_CPU_ARMV8
+	select BR2_ARCH_HAS_MMU_OPTIONAL
 config BR2_cortex_m3
 	bool "cortex-M3"
 	select BR2_ARM_CPU_HAS_THUMB2
@@ -520,6 +534,12 @@ config BR2_GCC_TARGET_CPU
 	default "cortex-a53"		if (BR2_cortex_a53 && !BR2_ARCH_IS_64)
 	default "cortex-a53+fp"		if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8)
 	default "cortex-a53+fp+simd" 	if (BR2_cortex_a53 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8)
+	default "cortex-a57"		if (BR2_cortex_a57 && !BR2_ARCH_IS_64)
+	default "cortex-a57+fp"		if (BR2_cortex_a57 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8)
+	default "cortex-a57+fp+simd" 	if (BR2_cortex_a57 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8)
+	default "cortex-a72"		if (BR2_cortex_a72 && !BR2_ARCH_IS_64)
+	default "cortex-a72+fp"		if (BR2_cortex_a72 && BR2_ARCH_IS_64 && BR2_ARM_FPU_FP_ARMV8)
+	default "cortex-a72+fp+simd" 	if (BR2_cortex_a72 && BR2_ARCH_IS_64 && BR2_ARM_FPU_NEON_FP_ARMV8)
 
 config BR2_GCC_TARGET_ABI
 	default "aapcs-linux"	if BR2_arm || BR2_armeb
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores
  2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
                   ` (7 preceding siblings ...)
  2016-11-30 21:12 ` [Buildroot] [PATCH 8/8] arch/Config.in.arm: add Cortex-A57 and Cortex-A72 Yann E. MORIN
@ 2016-12-05 22:18 ` Thomas Petazzoni
  8 siblings, 0 replies; 10+ messages in thread
From: Thomas Petazzoni @ 2016-12-05 22:18 UTC (permalink / raw)
  To: buildroot

Hello,

On Wed, 30 Nov 2016 22:12:06 +0100, Yann E. MORIN wrote:

> Matt Flax (1):
>       arch/Config.in.arm: Add Cortex-A53 CPU
> 
> Thomas Petazzoni (6):
>       arch: merge Config.in.aarch64 into Config.in.arm
>       arch/Config.in.arm: prepare addition of 64 bits cores
>       arch/Config.in.arm: add BR2_ARM_CPU_ARMV8
>       arch/Config.in.arm: add FPU related options for ARMv8 cores
>       arch/Config.in.arm: specify ABI for ARM64
>       arch/Config.in.arm: add Cortex-A57 and Cortex-A72
> 
> Yann E. MORIN (1):
>       arch/arm: drop legacy dependency for floating point strategy

Thanks, I've applied all 8 patches. I've added another patch that
allows selecting the Linaro ARM and ARMeb toolchains on ARMv8.

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-12-05 22:18 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-30 21:12 [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 1/8] arch: merge Config.in.aarch64 into Config.in.arm Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 2/8] arch/Config.in.arm: prepare addition of 64 bits cores Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 3/8] arch/Config.in.arm: add BR2_ARM_CPU_ARMV8 Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 4/8] arch/arm: drop legacy dependency for floating point strategy Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 5/8] arch/Config.in.arm: add FPU related options for ARMv8 cores Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 6/8] arch/Config.in.arm: specify ABI for ARM64 Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 7/8] arch/Config.in.arm: Add Cortex-A53 CPU Yann E. MORIN
2016-11-30 21:12 ` [Buildroot] [PATCH 8/8] arch/Config.in.arm: add Cortex-A57 and Cortex-A72 Yann E. MORIN
2016-12-05 22:18 ` [Buildroot] [PATCH 0/8] arch/arm: allow selecting AArch64 cores Thomas Petazzoni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox