~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/arch/powerpc/elf_hwcaps.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 .. _elf_hwcaps_powerpc:
  2 
  3 ==================
  4 POWERPC ELF HWCAPs
  5 ==================
  6 
  7 This document describes the usage and semantics of the powerpc ELF HWCAPs.
  8 
  9 
 10 1. Introduction
 11 ---------------
 12 
 13 Some hardware or software features are only available on some CPU
 14 implementations, and/or with certain kernel configurations, but have no other
 15 discovery mechanism available to userspace code. The kernel exposes the
 16 presence of these features to userspace through a set of flags called HWCAPs,
 17 exposed in the auxiliary vector.
 18 
 19 Userspace software can test for features by acquiring the AT_HWCAP or
 20 AT_HWCAP2 entry of the auxiliary vector, and testing whether the relevant
 21 flags are set, e.g.::
 22 
 23         bool floating_point_is_present(void)
 24         {
 25                 unsigned long HWCAPs = getauxval(AT_HWCAP);
 26                 if (HWCAPs & PPC_FEATURE_HAS_FPU)
 27                         return true;
 28 
 29                 return false;
 30         }
 31 
 32 Where software relies on a feature described by a HWCAP, it should check the
 33 relevant HWCAP flag to verify that the feature is present before attempting to
 34 make use of the feature.
 35 
 36 HWCAP is the preferred method to test for the presence of a feature rather
 37 than probing through other means, which may not be reliable or may cause
 38 unpredictable behaviour.
 39 
 40 Software that targets a particular platform does not necessarily have to
 41 test for required or implied features. For example if the program requires
 42 FPU, VMX, VSX, it is not necessary to test those HWCAPs, and it may be
 43 impossible to do so if the compiler generates code requiring those features.
 44 
 45 2. Facilities
 46 -------------
 47 
 48 The Power ISA uses the term "facility" to describe a class of instructions,
 49 registers, interrupts, etc. The presence or absence of a facility indicates
 50 whether this class is available to be used, but the specifics depend on the
 51 ISA version. For example, if the VSX facility is available, the VSX
 52 instructions that can be used differ between the v3.0B and v3.1B ISA
 53 versions.
 54 
 55 3. Categories
 56 -------------
 57 
 58 The Power ISA before v3.0 uses the term "category" to describe certain
 59 classes of instructions and operating modes which may be optional or
 60 mutually exclusive, the exact meaning of the HWCAP flag may depend on
 61 context, e.g., the presence of the BOOKE feature implies that the server
 62 category is not implemented.
 63 
 64 4. HWCAP allocation
 65 -------------------
 66 
 67 HWCAPs are allocated as described in Power Architecture 64-Bit ELF V2 ABI
 68 Specification (which will be reflected in the kernel's uapi headers).
 69 
 70 5. The HWCAPs exposed in AT_HWCAP
 71 ---------------------------------
 72 
 73 PPC_FEATURE_32
 74     32-bit CPU
 75 
 76 PPC_FEATURE_64
 77     64-bit CPU (userspace may be running in 32-bit mode).
 78 
 79 PPC_FEATURE_601_INSTR
 80     The processor is PowerPC 601.
 81     Unused in the kernel since f0ed73f3fa2c ("powerpc: Remove PowerPC 601")
 82 
 83 PPC_FEATURE_HAS_ALTIVEC
 84     Vector (aka Altivec, VMX) facility is available.
 85 
 86 PPC_FEATURE_HAS_FPU
 87     Floating point facility is available.
 88 
 89 PPC_FEATURE_HAS_MMU
 90     Memory management unit is present and enabled.
 91 
 92 PPC_FEATURE_HAS_4xxMAC
 93     The processor is 40x or 44x family.
 94     Unused in the kernel since 732b32daef80 ("powerpc: Remove core support for 40x")
 95 
 96 PPC_FEATURE_UNIFIED_CACHE
 97     The processor has a unified L1 cache for instructions and data, as
 98     found in NXP e200.
 99     Unused in the kernel since 39c8bf2b3cc1 ("powerpc: Retire e200 core (mpc555x processor)")
100 
101 PPC_FEATURE_HAS_SPE
102     Signal Processing Engine facility is available.
103 
104 PPC_FEATURE_HAS_EFP_SINGLE
105     Embedded Floating Point single precision operations are available.
106 
107 PPC_FEATURE_HAS_EFP_DOUBLE
108     Embedded Floating Point double precision operations are available.
109 
110 PPC_FEATURE_NO_TB
111     The timebase facility (mftb instruction) is not available.
112     This is a 601 specific HWCAP, so if it is known that the processor
113     running is not a 601, via other HWCAPs or other means, it is not
114     required to test this bit before using the timebase.
115     Unused in the kernel since f0ed73f3fa2c ("powerpc: Remove PowerPC 601")
116 
117 PPC_FEATURE_POWER4
118     The processor is POWER4 or PPC970/FX/MP.
119     POWER4 support dropped from the kernel since 471d7ff8b51b ("powerpc/64s: Remove POWER4 support")
120 
121 PPC_FEATURE_POWER5
122     The processor is POWER5.
123 
124 PPC_FEATURE_POWER5_PLUS
125     The processor is POWER5+.
126 
127 PPC_FEATURE_CELL
128     The processor is Cell.
129 
130 PPC_FEATURE_BOOKE
131     The processor implements the embedded category ("BookE") architecture.
132 
133 PPC_FEATURE_SMT
134     The processor implements SMT.
135 
136 PPC_FEATURE_ICACHE_SNOOP
137     The processor icache is coherent with the dcache, and instruction storage
138     can be made consistent with data storage for the purpose of executing
139     instructions with the sequence (as described in, e.g., POWER9 Processor
140     User's Manual, 4.6.2.2 Instruction Cache Block Invalidate (icbi))::
141 
142         sync
143         icbi (to any address)
144         isync
145 
146 PPC_FEATURE_ARCH_2_05
147     The processor supports the v2.05 userlevel architecture. Processors
148     supporting later architectures DO NOT set this feature.
149 
150 PPC_FEATURE_PA6T
151     The processor is PA6T.
152 
153 PPC_FEATURE_HAS_DFP
154     DFP facility is available.
155 
156 PPC_FEATURE_POWER6_EXT
157     The processor is POWER6.
158 
159 PPC_FEATURE_ARCH_2_06
160     The processor supports the v2.06 userlevel architecture. Processors
161     supporting later architectures also set this feature.
162 
163 PPC_FEATURE_HAS_VSX
164     VSX facility is available.
165 
166 PPC_FEATURE_PSERIES_PERFMON_COMPAT
167     The processor supports architected PMU events in the range 0xE0-0xFF.
168 
169 PPC_FEATURE_TRUE_LE
170     The processor supports true little-endian mode.
171 
172 PPC_FEATURE_PPC_LE
173     The processor supports "PowerPC Little-Endian", that uses address
174     munging to make storage access appear to be little-endian, but the
175     data is stored in a different format that is unsuitable to be
176     accessed by other agents not running in this mode.
177 
178 6. The HWCAPs exposed in AT_HWCAP2
179 ----------------------------------
180 
181 PPC_FEATURE2_ARCH_2_07
182     The processor supports the v2.07 userlevel architecture. Processors
183     supporting later architectures also set this feature.
184 
185 PPC_FEATURE2_HTM
186     Transactional Memory feature is available.
187 
188 PPC_FEATURE2_DSCR
189     DSCR facility is available.
190 
191 PPC_FEATURE2_EBB
192     EBB facility is available.
193 
194 PPC_FEATURE2_ISEL
195     isel instruction is available. This is superseded by ARCH_2_07 and
196     later.
197 
198 PPC_FEATURE2_TAR
199     TAR facility is available.
200 
201 PPC_FEATURE2_VEC_CRYPTO
202     v2.07 crypto instructions are available.
203 
204 PPC_FEATURE2_HTM_NOSC
205     System calls fail if called in a transactional state, see
206     Documentation/arch/powerpc/syscall64-abi.rst
207 
208 PPC_FEATURE2_ARCH_3_00
209     The processor supports the v3.0B / v3.0C userlevel architecture. Processors
210     supporting later architectures also set this feature.
211 
212 PPC_FEATURE2_HAS_IEEE128
213     IEEE 128-bit binary floating point is supported with VSX
214     quad-precision instructions and data types.
215 
216 PPC_FEATURE2_DARN
217     darn instruction is available.
218 
219 PPC_FEATURE2_SCV
220     The scv 0 instruction may be used for system calls, see
221     Documentation/arch/powerpc/syscall64-abi.rst.
222 
223 PPC_FEATURE2_HTM_NO_SUSPEND
224     A limited Transactional Memory facility that does not support suspend is
225     available, see Documentation/arch/powerpc/transactional_memory.rst.
226 
227 PPC_FEATURE2_ARCH_3_1
228     The processor supports the v3.1 userlevel architecture. Processors
229     supporting later architectures also set this feature.
230 
231 PPC_FEATURE2_MMA
232     MMA facility is available.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php