2 * D header file for GNU/Linux.
4 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 module core
.sys
.linux
.sys
.auxv
;
9 import core
.stdc
.config
;
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;
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
59 enum HWCAP_EVTSTRM
= 4;
61 enum HWCAP_PMULL
= 16;
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;