golang: Blacklist older (or no) FPUs rather than whitelist newer FPUs
authorJeffery To <jeffery.to@gmail.com>
Tue, 12 May 2020 18:35:28 +0000 (02:35 +0800)
committerJeffery To <jeffery.to@gmail.com>
Wed, 13 May 2020 08:07:27 +0000 (16:07 +0800)
This should be more future-proof (presumably all future ARM FPUs will be
at least VFPv3).

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
lang/golang/golang-values.mk

index 9792cd8aa412fef61243e92e4669edc3bfdbbb55..d52ad481f1312ecc2df744ef11f2f0a112a396b5 100644 (file)
@@ -156,32 +156,15 @@ ifeq ($(GO_ARCH),386)
 else ifeq ($(GO_ARCH),arm)
   GO_TARGET_FPU:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE))))
 
-  # FPU names from https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/ARM-Options.html#index-mfpu-1
-  # see also https://github.com/gcc-mirror/gcc/blob/gcc-8_3_0-release/gcc/config/arm/arm-cpus.in
-  #
-  # Assumptions:
-  #
-  # * -d16 variants (16 instead of 32 double-precision registers) acceptable
-  #   Go doesn't appear to check the HWCAP_VFPv3D16 flag in
-  #   https://github.com/golang/go/blob/release-branch.go1.13/src/runtime/os_linux_arm.go
-  #
-  # * Double-precision required
-  #   Based on no evidence(!)
-  #   Excludes vfpv3xd, vfpv3xd-fp16, fpv4-sp-d16, fpv5-sp-d16
-
-  GO_ARM_7_FPUS:= \
-    vfpv3 vfpv3-fp16 vfpv3-d16 vfpv3-d16-fp16 neon neon-vfpv3 neon-fp16 \
-    vfpv4 vfpv4-d16 neon-vfpv4 \
-    fpv5-d16 fp-armv8 neon-fp-armv8 crypto-neon-fp-armv8
-
-  GO_ARM_6_FPUS:=vfp vfpv2
-
-  ifneq ($(filter $(GO_TARGET_FPU),$(GO_ARM_7_FPUS)),)
-    GO_ARM:=7
-  else ifneq ($(filter $(GO_TARGET_FPU),$(GO_ARM_6_FPUS)),)
+  # FPU names from https://gcc.gnu.org/onlinedocs/gcc-8.4.0/gcc/ARM-Options.html#index-mfpu-1
+  # see also https://github.com/gcc-mirror/gcc/blob/releases/gcc-8.4.0/gcc/config/arm/arm-cpus.in
+
+  ifeq ($(GO_TARGET_FPU),)
+    GO_ARM:=5
+  else ifneq ($(filter $(GO_TARGET_FPU),vfp vfpv2),)
     GO_ARM:=6
   else
-    GO_ARM:=5
+    GO_ARM:=7
   endif
 
 else ifneq ($(filter $(GO_ARCH),mips mipsle),)