1 /* Linux/sparc version of processor capability information handling macros.
2    Copyright (C) 1999-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #ifndef _DL_PROCINFO_H
20 #define _DL_PROCINFO_H	1
21 
22 #include <ldsodefs.h>
23 #include <sysdep.h>
24 
25 #define _DL_HWCAP_COUNT 28
26 
27 static inline int
28 __attribute__ ((unused))
_dl_procinfo(unsigned int type,unsigned long int word)29 _dl_procinfo (unsigned int type, unsigned long int word)
30 {
31   int i;
32 
33   /* Fallback to generic output mechanism.  */
34   if (type != AT_HWCAP)
35     return -1;
36 
37   _dl_printf ("AT_HWCAP:   ");
38 
39   for (i = 0; i < _DL_HWCAP_COUNT; ++i)
40     if (word & (1 << i))
41       _dl_printf (" %s", GLRO(dl_sparc_cap_flags)[i]);
42 
43   _dl_printf ("\n");
44 
45   return 0;
46 }
47 
48 static inline const char *
49 __attribute__ ((unused))
_dl_hwcap_string(int idx)50 _dl_hwcap_string (int idx)
51 {
52   return GLRO(dl_sparc_cap_flags)[idx];
53 };
54 
55 static inline int
56 __attribute__ ((unused, always_inline))
_dl_string_hwcap(const char * str)57 _dl_string_hwcap (const char *str)
58 {
59   int i;
60   for (i = 0; i < _DL_HWCAP_COUNT; i++)
61     {
62       if (strcmp (str, GLRO(dl_sparc_cap_flags) [i]) == 0)
63 	return i;
64     }
65   return -1;
66 };
67 
68 #include <bits/wordsize.h>
69 #define HWCAP_IMPORTANT_V9	(__WORDSIZE == 64 ? 0 : HWCAP_SPARC_V9)
70 #define HWCAP_IMPORTANT		(HWCAP_IMPORTANT_V9 | HWCAP_SPARC_ULTRA3 \
71 				 | HWCAP_SPARC_BLKINIT | HWCAP_SPARC_N2)
72 
73 /* There're no platforms to filter out.  */
74 #define _DL_HWCAP_PLATFORM 0
75 
76 #define _dl_string_platform(str) (-1)
77 
78 #endif /* dl-procinfo.h */
79