d: Merge upstream dmd ff57fec515, druntime ff57fec515, phobos 17bafda79.
[official-gcc.git] / libphobos / libdruntime / core / sys / linux / sys / auxv.d
blob1099fae497f3582019ff6c864d23928c00b4d7c4
1 /**
2 * D header file for GNU/Linux.
4 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
5 * Authors: Kai Nacke
6 */
7 module core.sys.linux.sys.auxv;
9 import core.stdc.config;
11 version (linux):
12 extern (C):
14 version (MIPS32) version = MIPS_Any;
15 version (MIPS64) version = MIPS_Any;
16 version (LoongArch64) version = LoongArch_Any;
17 version (PPC) version = PPC_Any;
18 version (PPC64) version = PPC_Any;
19 version (S390) version = IBMZ_Any;
20 version (SPARC) version = SPARC_Any;
21 version (SPARC64) version = SPARC_Any;
22 version (SystemZ) version = IBMZ_Any;
24 c_ulong getauxval(c_ulong type) nothrow pure @nogc @system;
26 version (ARM)
28 // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/bits/hwcap.h
30 enum HWCAP_ARM_SWP = 1;
31 enum HWCAP_ARM_HALF = 2;
32 enum HWCAP_ARM_THUMB = 4;
33 enum HWCAP_ARM_26BIT = 8;
34 enum HWCAP_ARM_FAST_MULT = 16;
35 enum HWCAP_ARM_FPA = 32;
36 enum HWCAP_ARM_VFP = 64;
37 enum HWCAP_ARM_EDSP = 128;
38 enum HWCAP_ARM_JAVA = 256;
39 enum HWCAP_ARM_IWMMXT = 512;
40 enum HWCAP_ARM_CRUNCH = 1024;
41 enum HWCAP_ARM_THUMBEE = 2048;
42 enum HWCAP_ARM_NEON = 4096;
43 enum HWCAP_ARM_VFPv3 = 8192;
44 enum HWCAP_ARM_VFPv3D16 = 16384;
45 enum HWCAP_ARM_TLS = 32768;
46 enum HWCAP_ARM_VFPv4 = 65536;
47 enum HWCAP_ARM_IDIVA = 131072;
48 enum HWCAP_ARM_IDIVT = 262144;
49 enum HWCAP_ARM_VFPD32 = 524288;
50 enum HWCAP_ARM_LPAE = 1048576;
51 enum HWCAP_ARM_EVTSTRM = 2097152;
53 else version (AArch64)
55 // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h
57 enum HWCAP_FP = 1;
58 enum HWCAP_ASIMD = 2;
59 enum HWCAP_EVTSTRM = 4;
60 enum HWCAP_AES = 8;
61 enum HWCAP_PMULL = 16;
62 enum HWCAP_SHA1 = 32;
63 enum HWCAP_SHA2 = 64;
64 enum HWCAP_CRC32 = 128;
65 enum HWCAP_ATOMICS = 256;
66 enum HWCAP_FPHP = 512;
67 enum HWCAP_ASIMDHP = 1024;
69 else version (PPC_Any)
71 // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/powerpc/bits/hwcap.h
73 enum PPC_FEATURE_32 = 0x80000000;
74 enum PPC_FEATURE_64 = 0x40000000;
75 enum PPC_FEATURE_601_INSTR = 0x20000000;
76 enum PPC_FEATURE_HAS_ALTIVEC = 0x10000000;
77 enum PPC_FEATURE_HAS_FPU = 0x08000000;
78 enum PPC_FEATURE_HAS_MMU = 0x04000000;
79 enum PPC_FEATURE_HAS_4xxMAC = 0x02000000;
80 enum PPC_FEATURE_UNIFIED_CACHE = 0x01000000;
81 enum PPC_FEATURE_HAS_SPE = 0x00800000;
82 enum PPC_FEATURE_HAS_EFP_SINGLE = 0x00400000;
83 enum PPC_FEATURE_HAS_EFP_DOUBLE = 0x00200000;
84 enum PPC_FEATURE_NO_TB = 0x00100000;
85 enum PPC_FEATURE_POWER4 = 0x00080000;
86 enum PPC_FEATURE_POWER5 = 0x00040000;
87 enum PPC_FEATURE_POWER5_PLUS = 0x00020000;
88 enum PPC_FEATURE_CELL_BE = 0x00010000;
89 enum PPC_FEATURE_BOOKE = 0x00008000;
90 enum PPC_FEATURE_SMT = 0x00004000;
92 enum PPC_FEATURE_ICACHE_SNOOP = 0x00002000;
93 enum PPC_FEATURE_ARCH_2_05 = 0x00001000;
94 enum PPC_FEATURE_PA6T = 0x00000800;
95 enum PPC_FEATURE_HAS_DFP = 0x00000400;
96 enum PPC_FEATURE_POWER6_EXT = 0x00000200;
97 enum PPC_FEATURE_ARCH_2_06 = 0x00000100;
98 enum PPC_FEATURE_HAS_VSX = 0x00000080;
99 enum PPC_FEATURE_PSERIES_PERFMON_COMPAT = 0x00000040;
100 enum PPC_FEATURE_TRUE_LE = 0x00000002;
101 enum PPC_FEATURE_PPC_LE = 0x00000001;
103 enum PPC_FEATURE2_ARCH_2_07 = 0x80000000;
104 enum PPC_FEATURE2_HAS_HTM = 0x40000000;
105 enum PPC_FEATURE2_HAS_DSCR = 0x20000000;
106 enum PPC_FEATURE2_HAS_EBB = 0x10000000;
107 enum PPC_FEATURE2_HAS_ISEL = 0x08000000;
108 enum PPC_FEATURE2_HAS_TAR = 0x04000000;
109 enum PPC_FEATURE2_HAS_VEC_CRYPTO = 0x02000000;
111 else version (SPARC_Any)
113 // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/sparc/bits/hwcap.h
115 enum HWCAP_SPARC_FLUSH = 0x00000001;
116 enum HWCAP_SPARC_STBAR = 0x00000002;
117 enum HWCAP_SPARC_SWAP = 0x00000004;
118 enum HWCAP_SPARC_MULDIV = 0x00000008;
119 enum HWCAP_SPARC_V9 = 0x00000010;
120 enum HWCAP_SPARC_ULTRA3 = 0x00000020;
121 enum HWCAP_SPARC_BLKINIT = 0x00000040;
122 enum HWCAP_SPARC_N2 = 0x00000080;
123 enum HWCAP_SPARC_MUL32 = 0x00000100;
124 enum HWCAP_SPARC_DIV32 = 0x00000200;
125 enum HWCAP_SPARC_FSMULD = 0x00000400;
126 enum HWCAP_SPARC_V8PLUS = 0x00000800;
127 enum HWCAP_SPARC_POPC = 0x00001000;
128 enum HWCAP_SPARC_VIS = 0x00002000;
129 enum HWCAP_SPARC_VIS2 = 0x00004000;
130 enum HWCAP_SPARC_ASI_BLK_INIT = 0x00008000;
131 enum HWCAP_SPARC_FMAF = 0x00010000;
132 enum HWCAP_SPARC_VIS3 = 0x00020000;
133 enum HWCAP_SPARC_HPC = 0x00040000;
134 enum HWCAP_SPARC_RANDOM = 0x00080000;
135 enum HWCAP_SPARC_TRANS = 0x00100000;
136 enum HWCAP_SPARC_FJFMAU = 0x00200000;
137 enum HWCAP_SPARC_IMA = 0x00400000;
138 enum HWCAP_SPARC_ASI_CACHE_SPARING = 0x00800000;
139 enum HWCAP_SPARC_PAUSE = 0x01000000;
140 enum HWCAP_SPARC_CBCOND = 0x02000000;
141 enum HWCAP_SPARC_CRYPTO = 0x04000000;
143 else version (IBMZ_Any)
145 // See https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/s390/bits/hwcap.h
147 enum HWCAP_S390_ESAN3 = 1;
148 enum HWCAP_S390_ZARCH = 2;
149 enum HWCAP_S390_STFLE = 4;
150 enum HWCAP_S390_MSA = 8;
151 enum HWCAP_S390_LDISP = 16;
152 enum HWCAP_S390_EIMM = 32;
153 enum HWCAP_S390_DFP = 64;
154 enum HWCAP_S390_HPAGE = 128;
155 enum HWCAP_S390_ETF3EH = 256;
156 enum HWCAP_S390_HIGH_GPRS = 512;
157 enum HWCAP_S390_TE = 1024;
158 enum HWCAP_S390_VX = 2048;
160 else version (LoongArch_Any)
162 enum HWCAP_LOONGARCH_CPUCFG = 0x00000001;
163 enum HWCAP_LOONGARCH_LAM = 0x00000002;
164 enum HWCAP_LOONGARCH_UAL = 0x00000004;
165 enum HWCAP_LOONGARCH_FPU = 0x00000008;
166 enum HWCAP_LOONGARCH_LSX = 0x00000010;
167 enum HWCAP_LOONGARCH_LASX = 0x00000020;
168 enum HWCAP_LOONGARCH_CRC32 = 0x00000040;
169 enum HWCAP_LOONGARCH_COMPLEX = 0x00000080;
170 enum HWCAP_LOONGARCH_CRYPTO = 0x00000100;
171 enum HWCAP_LOONGARCH_LVZ = 0x00000200;
172 enum HWCAP_LOONGARCH_LBT_X86 = 0x00000400;
173 enum HWCAP_LOONGARCH_LBT_ARM = 0x00000800;
174 enum HWCAP_LOONGARCH_LBT_MIPS = 0x00001000;