diff mbox series

toolchain/toolchain-external/toolchain-external-arm-arm: add dependency on NEON

Message ID 20201114104807.511480-1-thomas.petazzoni@bootlin.com
State Accepted
Headers show
Series toolchain/toolchain-external/toolchain-external-arm-arm: add dependency on NEON | expand

Commit Message

Thomas Petazzoni Nov. 14, 2020, 10:48 a.m. UTC
While testing Buildroot on a Cortex-A5 that doesn't provide NEON, we
found out that a system generated with the ARM toolchain from Arm
didn't boot. It turns out that this ARM toolchain is built with:

  --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb

So, it uses NEON as its FPU, which means it can only work on CPU cores
that have NEON support. This commit adds the appropriate dependency to
the toolchain-external-arm-arm package, and adjusts the Config.in help
text accordingly.

While at it, it also drops the part of the Config.in help text that
says the code is tuned for Cortex-A9, as it is not the case: it was
the case for the Linaro toolchain (built with --with-tune=cortex-a9),
but not for the ARM toolchain, for which no specific --with-tune is
passed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Romain Naour <romain.naour@gmail.com>
---
 .../toolchain-external-arm-arm/Config.in            | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Peter Korsgaard Nov. 14, 2020, 1:20 p.m. UTC | #1
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > While testing Buildroot on a Cortex-A5 that doesn't provide NEON, we
 > found out that a system generated with the ARM toolchain from Arm
 > didn't boot. It turns out that this ARM toolchain is built with:

 >   --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb

 > So, it uses NEON as its FPU, which means it can only work on CPU cores
 > that have NEON support. This commit adds the appropriate dependency to
 > the toolchain-external-arm-arm package, and adjusts the Config.in help
 > text accordingly.

 > While at it, it also drops the part of the Config.in help text that
 > says the code is tuned for Cortex-A9, as it is not the case: it was
 > the case for the Linaro toolchain (built with --with-tune=cortex-a9),
 > but not for the ARM toolchain, for which no specific --with-tune is
 > passed.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
 > Cc: Romain Naour <romain.naour@gmail.com>

Committed, thanks.
Peter Korsgaard Nov. 16, 2020, 3:05 p.m. UTC | #2
>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@bootlin.com> writes:

 > While testing Buildroot on a Cortex-A5 that doesn't provide NEON, we
 > found out that a system generated with the ARM toolchain from Arm
 > didn't boot. It turns out that this ARM toolchain is built with:

 >   --with-arch=armv7-a --with-fpu=neon --with-float=hard --with-mode=thumb

 > So, it uses NEON as its FPU, which means it can only work on CPU cores
 > that have NEON support. This commit adds the appropriate dependency to
 > the toolchain-external-arm-arm package, and adjusts the Config.in help
 > text accordingly.

 > While at it, it also drops the part of the Config.in help text that
 > says the code is tuned for Cortex-A9, as it is not the case: it was
 > the case for the Linaro toolchain (built with --with-tune=cortex-a9),
 > but not for the ARM toolchain, for which no specific --with-tune is
 > passed.

 > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
 > Cc: Romain Naour <romain.naour@gmail.com>

Committed to 2020.02.x and 2020.08.x, thanks.
diff mbox series

Patch

diff --git a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
index 4748ab53ae..29509635a3 100644
--- a/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
+++ b/toolchain/toolchain-external/toolchain-external-arm-arm/Config.in
@@ -1,12 +1,13 @@ 
-comment "Arm toolchains available for Cortex-A + EABIhf"
+comment "Arm toolchains available for Cortex-A with NEON + EABIhf"
 	depends on BR2_arm
-	depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF
+	depends on !BR2_ARM_CPU_ARMV7A || !BR2_ARM_EABIHF || !BR2_ARM_CPU_HAS_NEON
 	depends on !BR2_STATIC_LIBS
 
 config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
 	bool "Arm ARM 2019.12"
 	depends on BR2_arm
 	depends on BR2_ARM_CPU_ARMV7A || BR2_ARM_CPU_ARMV8A
+	depends on BR2_ARM_CPU_HAS_NEON
 	depends on BR2_HOSTARCH = "x86_64"
 	depends on BR2_ARM_EABIHF
 	depends on !BR2_STATIC_LIBS
@@ -20,10 +21,10 @@  config BR2_TOOLCHAIN_EXTERNAL_ARM_ARM
 	select BR2_TOOLCHAIN_HAS_OPENMP
 	help
 	  Arm toolchain for the ARM architecture. It uses GCC 9.2.1,
-	  GDB 8.3.0, glibc 2.30, Binutils 2.33.1. It generates code that
-	  runs on all Cortex-A profile devices, but tuned for the
-	  Cortex-A9. The code generated uses the hard floating point
-	  calling convention, and uses the VFPv3-D16 FPU instructions.
+	  GDB 8.3.0, glibc 2.30, Binutils 2.33.1. It generates code
+	  that runs on all Cortex-A profile devices. The code
+	  generated uses the hard floating point calling convention,
+	  and uses the NEON FPU instructions.
 
 	  This is the same toolchain that was previously distributed by
 	  Linaro.