diff mbox

[3/3] arch/arm: Add ARMV8 (aarch32) toolchain config.

Message ID 1471860748-5126-1-git-send-email-flatmax@flatmax.org
State Changes Requested
Headers show

Commit Message

Matt Flax Aug. 22, 2016, 10:12 a.m. UTC
This commit configures the toolchain to use the ARMV8 hardware features.
This commit also cleans up and adds to the previous cortex-a53 commit.

This commit adds BR2_ARM_CPU_HAS_ARMV8 to arch/Config.in.arm and cleans up
the BR2_cortex_a53 config to remove redundant selections relating to VFPV4 and
ARMV7A. The commit also adds BR2_ARM_CPU_HAS_ARMV8 to BR2_ARM_EABIHF which
allows the selection of hard float (HF) activating the toolchain for whatever
specific ARMV8 hardware features are possible. It also adds the
BR2_ARM_FPU_NEON_ARMV8 HF tuning (crypto-neon-fp-armv8).

The cortex-a53 BR2_ARCH_HAS_MMU_OPTIONAL selection ensures that uclibc successfully
compiles without non-compliant swp assembly calls.

Signed-off-by: Matt Flax <flatmax@flatmax.org>
---
 arch/Config.in.arm | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

Comments

Thomas Petazzoni Aug. 22, 2016, 2:36 p.m. UTC | #1
Hello,

On Mon, 22 Aug 2016 20:12:28 +1000, Matt Flax wrote:

> @@ -174,8 +177,7 @@ config BR2_cortex_a53
>  	bool "cortex-A53"

It seems like this patch makes the assumption the previous Cortex-A53
patch has been applied.

Could you instead send a patch series that includes both patches
together. Don't *merge* the patches, just send them together in the
same series. It will also be less confusing than this standalone patch
labeled PATCH 3/3.

Also, I believe we need to merge arch/Config.in.aarch64 back into
arch/Config.in.arm in order to handle both 32 bits and 64 bits ARM
cores in the same Config.in.arm file, like we're doing for
Config.in.x86. Otherwise, we will end up duplicating all the ARM core
definitions for the 64 bits capable ones.

Thanks!

Thomas
Matt Flax Aug. 23, 2016, 12:39 a.m. UTC | #2
OK, will do.

I understand the difficulty in getting ARMV8 setup for both aarch32 and 
aarch64 and appreciate your openness to making that happen.


Matt


On 23/08/16 00:36, Thomas Petazzoni wrote:
> Hello,
>
> On Mon, 22 Aug 2016 20:12:28 +1000, Matt Flax wrote:
>
>> @@ -174,8 +177,7 @@ config BR2_cortex_a53
>>   	bool "cortex-A53"
> It seems like this patch makes the assumption the previous Cortex-A53
> patch has been applied.
>
> Could you instead send a patch series that includes both patches
> together. Don't *merge* the patches, just send them together in the
> same series. It will also be less confusing than this standalone patch
> labeled PATCH 3/3.
>
> Also, I believe we need to merge arch/Config.in.aarch64 back into
> arch/Config.in.arm in order to handle both 32 bits and 64 bits ARM
> cores in the same Config.in.arm file, like we're doing for
> Config.in.x86. Otherwise, we will end up duplicating all the ARM core
> definitions for the 64 bits capable ones.
>
> Thanks!
>
> Thomas
diff mbox

Patch

diff --git a/arch/Config.in.arm b/arch/Config.in.arm
index 72bb744..c01daf6 100644
--- a/arch/Config.in.arm
+++ b/arch/Config.in.arm
@@ -31,6 +31,9 @@  config BR2_ARM_CPU_HAS_VFPV4
 	bool
 	select BR2_ARM_CPU_HAS_VFPV3
 
+config BR2_ARM_CPU_HAS_ARMV8
+	bool
+
 config BR2_ARM_CPU_HAS_ARM
 	bool
 
@@ -174,8 +177,7 @@  config BR2_cortex_a53
 	bool "cortex-A53"
 	select BR2_ARM_CPU_HAS_ARM
 	select BR2_ARM_CPU_HAS_NEON
-	select BR2_ARM_CPU_HAS_VFPV4
-	select BR2_ARM_CPU_ARMV7A
+	select BR2_ARM_CPU_HAS_ARMV8
 	select BR2_ARCH_HAS_MMU_OPTIONAL
 config BR2_cortex_m3
 	bool "cortex-M3"
@@ -271,7 +273,7 @@  config BR2_ARM_EABI
 
 config BR2_ARM_EABIHF
 	bool "EABIhf"
-	depends on BR2_ARM_CPU_HAS_VFPV2
+	depends on BR2_ARM_CPU_HAS_VFPV2 || BR2_ARM_CPU_HAS_ARMV8
 	help
 	  The EABIhf is an extension of EABI which supports the 'hard'
 	  floating point model. This model uses the floating point
@@ -292,6 +294,7 @@  endchoice
 choice
 	prompt "Floating point strategy"
 	depends on BR2_ARM_EABI || BR2_ARM_EABIHF
+	default BR2_ARM_FPU_NEON_ARMV8 if BR2_ARM_CPU_HAS_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
@@ -366,6 +369,13 @@  config BR2_ARM_FPU_VFPV4
 	  cores, including the earlier Cortex-A{8, 9}, you should
 	  instead select VFPv3.
 
+config BR2_ARM_FPU_NEON_ARMV8
+	bool "ARMV8"
+	depends on BR2_ARM_CPU_HAS_ARMV8
+	help
+	  This option allows to use the ARMV8 floating point unit, as
+	  available in some ARMv8 processors (Cortex-A53).
+
 config BR2_ARM_FPU_VFPV4D16
 	bool "VFPv4-D16"
 	depends on BR2_ARM_CPU_HAS_VFPV4
@@ -485,6 +495,7 @@  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 "crypto-neon-fp-armv8" 	if BR2_ARM_FPU_NEON_ARMV8
 
 config BR2_GCC_TARGET_FLOAT_ABI
 	default "soft"		if BR2_ARM_SOFT_FLOAT