1  /* Data for AArch64 version of processor capability information.
       2     Linux version.
       3     Copyright (C) 2017-2023 Free Software Foundation, Inc.
       4     This file is part of the GNU C Library.
       5  
       6     The GNU C Library is free software; you can redistribute it and/or
       7     modify it under the terms of the GNU Lesser General Public
       8     License as published by the Free Software Foundation; either
       9     version 2.1 of the License, or (at your option) any later version.
      10  
      11     The GNU C Library is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14     Lesser General Public License for more details.
      15  
      16     You should have received a copy of the GNU Lesser General Public
      17     License along with the GNU C Library; if not, see
      18     <https://www.gnu.org/licenses/>.  */
      19  
      20  /* If anything should be added here check whether the size of each string
      21     is still ok with the given array size.
      22  
      23     All the #ifdefs in the definitions are quite irritating but
      24     necessary if we want to avoid duplicating the information.  There
      25     are three different modes:
      26  
      27     - PROCINFO_DECL is defined.  This means we are only interested in
      28       declarations.
      29  
      30     - PROCINFO_DECL is not defined:
      31  
      32       + if SHARED is defined the file is included in an array
      33         initializer.  The .element = { ... } syntax is needed.
      34  
      35       + if SHARED is not defined a normal array initialization is
      36         needed.
      37    */
      38  
      39  #ifndef PROCINFO_CLASS
      40  # define PROCINFO_CLASS
      41  #endif
      42  
      43  #if !IS_IN (ldconfig)
      44  # if !defined PROCINFO_DECL && defined SHARED
      45    ._dl_aarch64_cpu_features
      46  # else
      47  PROCINFO_CLASS struct cpu_features _dl_aarch64_cpu_features
      48  # endif
      49  # ifndef PROCINFO_DECL
      50  = { }
      51  # endif
      52  # if !defined SHARED || defined PROCINFO_DECL
      53  ;
      54  # else
      55  ,
      56  # endif
      57  #endif
      58  
      59  /* Number of HWCAP bits set.  */
      60  #define _DL_HWCAP_COUNT 32
      61  
      62  #if !defined PROCINFO_DECL && defined SHARED
      63    ._dl_aarch64_cap_flags
      64  #else
      65  PROCINFO_CLASS const char _dl_aarch64_cap_flags[_DL_HWCAP_COUNT][10]
      66  #endif
      67  #ifndef PROCINFO_DECL
      68  /* Matches the names in arch/arm64/kernel/cpuinfo.c of Linux.  */
      69  = { "fp", "asimd", "evtstrm", "aes", "pmull", "sha1", "sha2", "crc32",
      70      "atomics", "fphp", "asimdhp", "cpuid", "asimdrdm", "jscvt", "fcma",
      71      "lrcpc", "dcpop", "sha3", "sm3", "sm4", "asimddp", "sha512", "sve",
      72      "asimdfhm", "dit", "uscat", "ilrcpc", "flagm", "ssbs", "sb", "paca",
      73      "pacg" }
      74  #endif
      75  #if !defined SHARED || defined PROCINFO_DECL
      76  ;
      77  #else
      78  ,
      79  #endif
      80  
      81  #undef PROCINFO_DECL
      82  #undef PROCINFO_CLASS