pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang/gcc10



Module Name:    pkgsrc
Committed By:   mrg
Date:           Sat Apr 24 09:35:31 UTC 2021

Modified Files:
        pkgsrc/lang/gcc10: distinfo
Added Files:
        pkgsrc/lang/gcc10/patches: patch-gcc_config.gcc
            patch-gcc_config_aarch64_aarch64-netbsd.h
            patch-gcc_config_aarch64_driver-aarch64.c

Log Message:
pull in fixes for arm64eb from netbsd src.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 pkgsrc/lang/gcc10/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/gcc10/patches/patch-gcc_config.gcc \
    pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_aarch64-netbsd.h \
    pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_driver-aarch64.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/lang/gcc10/distinfo
diff -u pkgsrc/lang/gcc10/distinfo:1.7 pkgsrc/lang/gcc10/distinfo:1.8
--- pkgsrc/lang/gcc10/distinfo:1.7      Fri Apr 16 15:03:42 2021
+++ pkgsrc/lang/gcc10/distinfo  Sat Apr 24 09:35:31 2021
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.7 2021/04/16 15:03:42 ryoon Exp $
+$NetBSD: distinfo,v 1.8 2021/04/24 09:35:31 mrg Exp $
 
 SHA1 (gcc-10.3.0.tar.xz) = fb51ed1660c065898c75951fb38e1ebad7d49feb
 RMD160 (gcc-10.3.0.tar.xz) = 8edb715cf1159fd8de773d0d5208d2e83ca36402
@@ -11,8 +11,11 @@ Size (isl-0.16.1.tar.bz2) = 1626446 byte
 SHA1 (patch-contrib_download__prerequisites) = 9cdcde21ab174052911447d20762ddfd40aa8791
 SHA1 (patch-fixincludes_inclhack.def) = 7b00974d3f52a8364190a607f52a5d7e8a6db41a
 SHA1 (patch-gcc_Makefile.in) = c0f97c75ba1d37eae894141edd58bb36b734f651
+SHA1 (patch-gcc_config.gcc) = 6523fd234687e13abd54009a770f1c0acbcd62c7
 SHA1 (patch-gcc_config.host) = 8920ce841f6088b365c9b590e3ea9535bd880b40
 SHA1 (patch-gcc_config_aarch64_aarch64-builtins.c) = 87185f5c2e2dbe4195cb19fe6213d2d616d5519b
+SHA1 (patch-gcc_config_aarch64_aarch64-netbsd.h) = abf19e2445bce1773162bddef16cd7f41eb36827
+SHA1 (patch-gcc_config_aarch64_driver-aarch64.c) = 7e17b49924ddd9ff33d049d6539e4df77d14d3e5
 SHA1 (patch-gcc_config_sparc_sparc.c) = e9cb956f3769642bcd0ba4a477d16c73dea46014
 SHA1 (patch-gcc_configure) = 6a2d8eeeed2bf08c3c81291178e669dc91c913ce
 SHA1 (patch-gcc_ggc-common.c) = 3e325767922ab7d2079fdb9a3d6b6aa531a2fea5

Added files:

Index: pkgsrc/lang/gcc10/patches/patch-gcc_config.gcc
diff -u /dev/null pkgsrc/lang/gcc10/patches/patch-gcc_config.gcc:1.1
--- /dev/null   Sat Apr 24 09:35:31 2021
+++ pkgsrc/lang/gcc10/patches/patch-gcc_config.gcc      Sat Apr 24 09:35:31 2021
@@ -0,0 +1,236 @@
+$NetBSD: patch-gcc_config.gcc,v 1.1 2021/04/24 09:35:31 mrg Exp $
+
+Match what is in NetBSD src.  Fixes at least aarch64eb, and
+probably several others.
+
+--- gcc/config.gcc.orig        2021-04-08 04:56:28.033740243 -0700
++++ gcc/config.gcc     2021-04-24 00:16:20.082096330 -0700
+@@ -462,6 +462,16 @@
+         cpu_type=m32r
+       extra_options="${extra_options} g.opt"
+         ;;
++m5200-*-*|m5407-*-*)
++      cpu_type=m68k
++      extra_headers=math-68881.h
++      extra_options="${extra_options} m68k/m68k-tables.opt"
++      ;;
++m680[012]0-*-*)
++      cpu_type=m68k
++      extra_headers=math-68881.h
++      extra_options="${extra_options} m68k/m68k-tables.opt"
++      ;;
+ m68k-*-*)
+       extra_headers=math-68881.h
+       extra_options="${extra_options} m68k/m68k-tables.opt"
+@@ -877,6 +887,11 @@
+   case ${enable_threads} in
+     "" | yes | posix) thread_file='posix' ;;
+   esac
++  case ${target} in
++    arm*-* | i[34567]86-* | powerpc*-* | sparc*-* | x86_64-*)
++      default_gnu_indirect_function=yes
++      ;;
++  esac
+   nbsd_tm_file="netbsd.h netbsd-stdint.h netbsd-elf.h"
+   default_use_cxa_atexit=yes
+   target_has_targetdm=yes
+@@ -1111,6 +1126,11 @@
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
+       tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      case $target in
++      aarch64_be-*)
++              tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
++              ;;
++      esac
+       ;;
+ aarch64*-*-linux*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
+@@ -1252,7 +1272,6 @@
+       with_tls=${with_tls:-gnu}
+       ;;
+ arm*-*-netbsdelf*)
+-      target_cpu_cname="strongarm"
+       tmake_file="${tmake_file} arm/t-arm"
+       tm_file="dbxelf.h elfos.h ${nbsd_tm_file} arm/elf.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+@@ -1261,26 +1280,33 @@
+       esac
+       case ${target} in
+       arm*-*-netbsdelf-*eabi*)
+-          tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
+-          tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
++          tm_file="${tm_file} arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
++          # GCC 7 vs NetBSD/eabi -> avoid arm unwinder
++          #tmake_file="$tmake_file arm/t-bpabi"
++          tmake_file="$tmake_file arm/t-netbsdeabi"
++          # The EABI requires the use of __cxa_atexit.
++          default_use_cxa_atexit=yes
+           ;;
+       *)
+-          tm_file="$tm_file arm/netbsd-elf.h"
++          tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h"
++          #tmake_file="$tmake_file arm/t-bpabi arm/t-netbsdeabi"
+           tmake_file="$tmake_file arm/t-netbsd"
+           ;;
+       esac
+       tm_file="${tm_file} arm/aout.h arm/arm.h"
+       case ${target} in
+       arm*-*-netbsdelf-*eabihf*)
+-          # Hard-float requires at least Arm v5te
+-          target_cpu_cname="arm10e"
+           tm_defines="${tm_defines} TARGET_DEFAULT_FLOAT_ABI=ARM_FLOAT_ABI_HARD"
+           ;;
+       esac
+       case ${target} in
+-      armv6*) target_cpu_cname="arm1176jzf-s";;
+-      armv7*) target_cpu_cname="generic-armv7-a";;
++      armv4*) with_cpu=${with_cpu:-strongarm};;
++      armv6*) with_cpu=${with_cpu:-arm1176jzf-s};;
++      armv7*) with_cpu=${with_cpu:-cortex-a8};;
++      arm*eabihf*) with_cpu=${with_cpu:-arm10e};;
++      arm*) with_cpu=${with_cpu:-arm9e};;
+       esac
++      target_cpu_cname="$with_cpu"
+       ;;
+ arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
+       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
+@@ -1928,6 +1954,7 @@
+       ;;
+ x86_64-*-netbsd*)
+       tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${nbsd_tm_file} i386/x86-64.h i386/netbsd64.h"
++      tmake_file="${tmake_file} i386/t-netbsd64"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+       ;;
+ i[34567]86-*-openbsd*)
+@@ -2250,6 +2277,16 @@
+               target_cpu_default="${target_cpu_default}|MASK_GNU_LD"
+       fi
+       ;;
++ia64*-*-netbsd*)
++      tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} ia64/sysv4.h ia64/netbsd.h"
++      target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
++      tmake_file="${tmake_file} ia64/t-ia64"
++      if test x$with_system_libunwind != xyes ; then
++              tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++      fi
++      extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
++      extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      ;;
+ ia64*-*-freebsd*)
+       tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file} ia64/sysv4.h ia64/freebsd.h"
+       target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+@@ -2362,8 +2399,25 @@
+               ;;
+       esac
+       ;;
+-m68k*-*-netbsdelf*)
++m68010-*-netbsdelf* | m68k-*-netbsdelf* | m5407-*-netbsdelf*)
+       default_m68k_cpu=68020
++      case ${target} in
++      m5407*)
++              with_arch=${with_arch:-cf}
++              target_cpu_default="mcf5475"
++#             target="`echo ${target} | sed 's/m68kcf/m68k/'`"
++              ;;
++      m68010*)
++              target_cpu_default="m68010"
++              tmake_file="${tmake_file} m68k/t-m68kelf m68k/t-m68010-netbsd"
++              default_m68k_cpu=68010
++              tmake_file="${tmake_file} m68k/t-floatlib"
++              ;;
++      *)
++              with_arch=${with_arch:-m68k}
++              tmake_file="${tmake_file} m68k/t-floatlib"
++              ;;
++      esac
+       default_cf_cpu=5475
+       tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file} m68k/netbsd-elf.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+@@ -2503,6 +2557,26 @@
+       # automatically detect that GAS supports it, yet we require it.
+       gcc_cv_initfini_array=yes
+       ;;
++riscv*-*-netbsd*)                     # NetBSD RISC-V
++      tm_file="elfos.h ${tm_file} ${nbsd_tm_file} riscv/netbsd.h"
++      tm_defines="${tm_defines} CHAR_FAST8=1 SHORT_FAST16=1"
++      case ${target} in
++        riscv32*) tm_defines="${tm_defines} TARGET_64BIT_DEFAULT=0" ;;
++        *) tmake_file="${tmake_file} riscv/t-netbsd64" ;;
++      esac
++      extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      tmake_file="${tmake_file} riscv/t-riscv"
++      gnu_ld=yes
++      gas=yes
++      gcc_cv_initfini_array=yes
++      ;;
++mips64*-*-netbsd*)                    # NetBSD/mips64, either endian.
++      target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_SOFT_FLOAT_ABI"
++      tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h mips/netbsd64.h"
++      tmake_file="${tmake_file} mips/t-netbsd64"
++      tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
++      extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
++      ;;
+ mips*-*-netbsd*)                      # NetBSD/mips, either endian.
+       target_cpu_default="MASK_ABICALLS"
+       tm_file="elfos.h ${tm_file} mips/elf.h ${nbsd_tm_file} mips/netbsd.h"
+@@ -2918,11 +2992,24 @@
+               ;;
+       esac
+       ;;
+-powerpc-*-netbsd*)
+-      tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h rs6000/sysv4.h rs6000/netbsd.h"
++powerpc*-*-netbsd*)
++      tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h ${nbsd_tm_file} freebsd-spec.h"
++      case ${target} in
++          powerpc64*)
++              tm_file="rs6000/biarch64.h ${tm_file}"
++              tm_file="${tm_file} rs6000/sysv4.h rs6000/default64.h rs6000/netbsd64.h"
++              tmake_file="${tmake_file} rs6000/t-netbsd64"
++              ;;
++          *)
++              tm_file="${tm_file} rs6000/sysv4.h rs6000/netbsd.h"
++              tmake_file="${tmake_file} rs6000/t-netbsd"
++              ;;
++      esac
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+-      tmake_file="${tmake_file} rs6000/t-netbsd"
+-      extra_options="${extra_options} rs6000/sysv4.opt"
++      extra_options="${extra_options} rs6000/sysv4.opt rs6000/linux64.opt"
++      if test x${enable_secureplt} != xno; then
++          tm_file="rs6000/secureplt.h ${tm_file}"
++      fi
+       ;;
+ powerpc-*-eabisimaltivec*)
+       tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/eabisim.h rs6000/eabialtivec.h"
+@@ -3394,9 +3481,11 @@
+ sparc64-*-netbsd*)
+       tm_file="sparc/biarch64.h ${tm_file}"
+       tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h ${nbsd_tm_file} sparc/netbsd-elf.h"
++      tm_file="${tm_file} sparc/default64.h"
+       extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
+       extra_options="${extra_options} sparc/long-double-switch.opt"
+       tmake_file="${tmake_file} sparc/t-sparc sparc/t-netbsd64"
++      with_cpu=ultrasparc
+       ;;
+ sparc64-*-openbsd*)
+       tm_file="sparc/openbsd1-64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp64-elf.h"
+@@ -3911,6 +4000,9 @@
+     frv550-*-*linux*)
+       with_cpu=fr550
+       ;;
++    m5200-*-*|m5407-*-*)
++      with_cpu=${default_cf_cpu}
++      ;;
+     m68k*-*-*)
+       case "$with_arch" in
+       "cf")
+@@ -4421,7 +4513,7 @@
+               esac
+               ;;
+ 
+-      fido-*-* | m68k*-*-*)
++      fido-*-* | m68k*-*-* | m5200-*-* | m5407-*-*)
+               supported_defaults="arch cpu"
+               case "$with_arch" in
+               "" | "m68k"| "cf")
Index: pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_aarch64-netbsd.h
diff -u /dev/null pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_aarch64-netbsd.h:1.1
--- /dev/null   Sat Apr 24 09:35:31 2021
+++ pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_aarch64-netbsd.h Sat Apr 24 09:35:31 2021
@@ -0,0 +1,18 @@
+$NetBSD: patch-gcc_config_aarch64_aarch64-netbsd.h,v 1.1 2021/04/24 09:35:31 mrg Exp $
+
+Match what is in NetBSD src.  Fixes at least aarch64eb, and
+probably several others.
+
+--- gcc/config/aarch64/aarch64-netbsd.h.orig   2021-04-08 04:56:28.033740243 -0700
++++ gcc/config/aarch64/aarch64-netbsd.h        2021-04-24 00:16:41.451665444 -0700
+@@ -20,6 +20,10 @@
+ #ifndef GCC_AARCH64_NETBSD_H
+ #define GCC_AARCH64_NETBSD_H
+ 
++/* NetBSD malloc(3) does 64, not 128 bytes. */
++#undef MALLOC_ABI_ALIGNMENT
++#define MALLOC_ABI_ALIGNMENT  64
++
+ #define TARGET_LINKER_BIG_EMULATION "aarch64nbsdb"
+ #define TARGET_LINKER_LITTLE_EMULATION "aarch64nbsd"
+ 
Index: pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_driver-aarch64.c
diff -u /dev/null pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_driver-aarch64.c:1.1
--- /dev/null   Sat Apr 24 09:35:31 2021
+++ pkgsrc/lang/gcc10/patches/patch-gcc_config_aarch64_driver-aarch64.c Sat Apr 24 09:35:31 2021
@@ -0,0 +1,184 @@
+$NetBSD: patch-gcc_config_aarch64_driver-aarch64.c,v 1.1 2021/04/24 09:35:31 mrg Exp $
+
+Match what is in NetBSD src.  Fixes at least aarch64eb, and
+probably several others.
+
+--- gcc/config/aarch64/driver-aarch64.c.orig   2021-04-08 04:56:28.041740341 -0700
++++ gcc/config/aarch64/driver-aarch64.c        2021-04-24 00:16:45.471750258 -0700
+@@ -25,6 +25,7 @@
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
++#include "diagnostic-core.h"
+ 
+ /* Defined in common/config/aarch64/aarch64-common.c.  */
+ std::string aarch64_get_extension_string_for_isa_flags (uint64_t, uint64_t);
+@@ -244,6 +245,14 @@
+    ARGC and ARGV are set depending on the actual arguments given
+    in the spec.  */
+ 
++#ifdef __NetBSD__
++/* The NetBSD/arm64 platform may not export linux-style /proc/cpuinfo,
++   but the data is available via a sysctl(3) interface.  */
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#include <aarch64/armreg.h>
++#endif
++
+ const char *
+ host_detect_local_cpu (int argc, const char **argv)
+ {
+@@ -282,6 +291,7 @@
+   if (!arch && !tune && !cpu)
+     goto not_found;
+ 
++#ifndef __NetBSD__
+   fcpu_info = getenv ("GCC_CPUINFO");
+   if (fcpu_info)
+     f = fopen (fcpu_info, "r");
+@@ -374,6 +384,145 @@
+ 
+   fclose (f);
+   f = NULL;
++#else
++  unsigned int curcpu;
++  size_t len;
++  char impl_buf[8];
++  int mib[2], ncpu;
++
++  mib[0] = CTL_HW;
++  mib[1] = HW_NCPU; 
++  len = sizeof(ncpu);
++  if (sysctl(mib, 2, &ncpu, &len, NULL, 0) == -1)
++    goto not_found;
++
++  for (curcpu = 0; curcpu < ncpu; curcpu++)
++    {
++      char path[128];
++      struct aarch64_sysctl_cpu_id id;
++
++      len = sizeof id;
++      snprintf(path, sizeof path, "machdep.cpu%d.cpu_id", curcpu);
++      if (sysctlbyname(path, &id, &len, NULL, 0) != 0)
++        goto not_found;
++
++      unsigned cimp = __SHIFTOUT(id.ac_midr, MIDR_EL1_IMPL);
++      if (cimp == INVALID_IMP)
++        goto not_found;
++
++      if (imp == INVALID_IMP)
++        imp = cimp;
++      /* FIXME: BIG.little implementers are always equal. */
++      else if (imp != cimp)
++        goto not_found;
++  
++      unsigned cvariant = __SHIFTOUT(id.ac_midr, MIDR_EL1_VARIANT);
++      if (!contains_core_p (variants, cvariant))
++        {
++          if (n_variants == 2)
++            goto not_found;
++  
++          variants[n_variants++] = cvariant;
++      }
++
++      unsigned ccore = __SHIFTOUT(id.ac_midr, MIDR_EL1_PARTNUM);
++      if (!contains_core_p (cores, ccore))
++      {
++        if (n_cores == 2)
++          goto not_found;
++  
++        cores[n_cores++] = ccore;
++      }
++
++      if (!tune && !processed_exts)
++        {
++          std::string exts;
++
++        /* These are all the extensions from aarch64-option-extensions.def.  */
++          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_FP) == ID_AA64PFR0_EL1_FP_IMPL)
++          exts += "fp ";
++          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_ADVSIMD) == ID_AA64PFR0_EL1_ADV_SIMD_IMPL)
++          exts += "asimd ";
++#ifdef ID_AA64ISAR0_EL1_RDM
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_RDM) == ID_AA64ISAR0_EL1_RDM_SQRDML)
++          exts += "asimdrdm ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_DP) == ID_AA64ISAR0_EL1_DP_UDOT)
++          exts += "asimddp ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_FHM) == ID_AA64ISAR0_EL1_FHM_FMLAL)
++          exts += "asimdfml ";
++#endif
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) == ID_AA64ISAR0_EL1_AES_AES)
++          exts += "aes ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_AES) == ID_AA64ISAR0_EL1_AES_PMUL)
++          exts += "aes pmull ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_CRC32) == ID_AA64ISAR0_EL1_CRC32_CRC32X)
++          exts += "crc32 ";
++#ifdef ID_AA64ISAR0_EL1_ATOMIC
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_ATOMIC) == ID_AA64ISAR0_EL1_ATOMIC_SWP)
++          exts += "atomics ";
++#endif
++          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA1) & ID_AA64ISAR0_EL1_SHA1_SHA1CPMHSU) != 0)
++          exts += "sha1 ";
++          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) & ID_AA64ISAR0_EL1_SHA2_SHA256HSU) != 0)
++          exts += "sha2 ";
++#ifdef ID_AA64ISAR0_EL1_SHA2_SHA512HSU
++          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA2) & ID_AA64ISAR0_EL1_SHA2_SHA512HSU) != 0)
++          exts += "sha512 ";
++          if ((__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SHA3) & ID_AA64ISAR0_EL1_SHA3_EOR3) != 0)
++          exts += "sha3 ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SM3) == ID_AA64ISAR0_EL1_SM3_SM3)
++          exts += "sm3 ";
++          if (__SHIFTOUT(id.ac_aa64isar0, ID_AA64ISAR0_EL1_SM4) == ID_AA64ISAR0_EL1_SM4_SM4)
++          exts += "sm4 ";
++          if (__SHIFTOUT(id.ac_aa64pfr0, ID_AA64PFR0_EL1_SVE) == ID_AA64PFR0_EL1_SVE_IMPL)
++          exts += "sve ";
++          if (__SHIFTOUT(id.ac_aa64isar1, ID_AA64ISAR1_EL1_LRCPC) == ID_AA64ISAR1_EL1_LRCPC_PR)
++          exts += "lrcpc ";
++#endif
++
++          for (i = 0; i < num_exts; i++)
++            {
++            const char *p = aarch64_extensions[i].feat_string;
++
++            /* If the feature contains no HWCAPS string then ignore it for the
++               auto detection.  */
++            if (*p == '\0')
++              continue;
++
++            bool enabled = true;
++
++            /* This may be a multi-token feature string.  We need
++               to match all parts, which could be in any order.  */
++            size_t len = strlen (exts.c_str());
++            do
++              {
++                const char *end = strchr (p, ' ');
++                if (end == NULL)
++                  end = strchr (p, '\0');
++                if (memmem (exts.c_str(), len, p, end - p) == NULL)
++                  {
++                    /* Failed to match this token.  Turn off the
++                       features we'd otherwise enable.  */
++                    enabled = false;
++                    break;
++                  }
++                if (*end == '\0')
++                  break;
++                p = end + 1;
++              }
++            while (1);
++
++              if (enabled)
++                extension_flags |= aarch64_extensions[i].flag;
++              else
++                extension_flags &= ~(aarch64_extensions[i].flag);
++            }
++
++          processed_exts = true;
++      }
++    }
++  /* End of NetBSD specific section.  */
++#endif
+ 
+   /* Weird cpuinfo format that we don't know how to handle.  */
+   if (n_cores == 0



Home | Main Index | Thread Index | Old Index