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 |
>>>>> "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.
>>>>> "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 --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.
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(-)