|
7 | 7 |
|
8 | 8 | #include <cpuinfo.h> |
9 | 9 | #include <cpuinfo/common.h> |
10 | | -#include <powerpc/api.h> |
11 | 10 | #include <linux/api.h> |
| 11 | +#include <powerpc/api.h> |
12 | 12 |
|
13 | 13 | /* No hard limit in the kernel, maximum length observed on non-rogue kernels is 64 */ |
14 | 14 | #define CPUINFO_HARDWARE_VALUE_MAX 64 |
15 | 15 |
|
16 | 16 | /* from /arch/powerpc/kernel/cputable.c */ |
17 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_64 UINT32_C(0x40000000) |
18 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_ALTIVEC UINT32_C(0x10000000) |
19 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_FPU UINT32_C(0x08000000) |
20 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_MMU UINT32_C(0x04000000) |
21 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_NO_TB UINT32_C(0x00100000) |
22 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_SMT UINT32_C(0x00004000) |
23 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_DFP UINT32_C(0x00000400) |
24 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_POWER6_EXT UINT32_C(0x00000200) |
25 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_VSX UINT32_C(0x00000080) |
26 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_TRUE_LE UINT32_C(0x00000002) |
| 17 | +#define CPUINFO_POWERPC_LINUX_FEATURE_64 UINT32_C(0x40000000) |
| 18 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_ALTIVEC UINT32_C(0x10000000) |
| 19 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_FPU UINT32_C(0x08000000) |
| 20 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_MMU UINT32_C(0x04000000) |
| 21 | +#define CPUINFO_POWERPC_LINUX_FEATURE_NO_TB UINT32_C(0x00100000) |
| 22 | +#define CPUINFO_POWERPC_LINUX_FEATURE_SMT UINT32_C(0x00004000) |
| 23 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_DFP UINT32_C(0x00000400) |
| 24 | +#define CPUINFO_POWERPC_LINUX_FEATURE_POWER6_EXT UINT32_C(0x00000200) |
| 25 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_VSX UINT32_C(0x00000080) |
| 26 | +#define CPUINFO_POWERPC_LINUX_FEATURE_TRUE_LE UINT32_C(0x00000002) |
27 | 27 | #define CPUINFO_POWERPC_LINUX_FEATURE_PPC_LE UINT32_C(0x00000001 |
28 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_2_07 UINT32_C(0x80000000) |
29 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HTM UINT32_C(0x40000000) |
30 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_DSCR UINT32_C(0x20000000) |
31 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_EBB UINT32_C(0x10000000) |
32 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_ISEL UINT32_C(0x08000000) |
33 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_TAR UINT32_C(0x04000000) |
34 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_VEC_CRYPTO UINT32_C(0x02000000) |
35 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HTM_NOSC UINT32_C(0x01000000) |
36 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_3_00 UINT32_C(0x00800000) |
37 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_IEEE128 UINT32_C(0x00400000) |
38 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_DARN UINT32_C(0x00200000) |
39 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_SCV UINT32_C(0x00100000) |
40 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HTM_NO_SUSPEND UINT32_C(0x00080000) |
41 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_3_1 UINT32_C(0x00040000) |
42 | | -#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_MMA UINT32_C(0x00020000) |
| 28 | +#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_2_07 UINT32_C(0x80000000) |
| 29 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HTM UINT32_C(0x40000000) |
| 30 | +#define CPUINFO_POWERPC_LINUX_FEATURE_DSCR UINT32_C(0x20000000) |
| 31 | +#define CPUINFO_POWERPC_LINUX_FEATURE_EBB UINT32_C(0x10000000) |
| 32 | +#define CPUINFO_POWERPC_LINUX_FEATURE_ISEL UINT32_C(0x08000000) |
| 33 | +#define CPUINFO_POWERPC_LINUX_FEATURE_TAR UINT32_C(0x04000000) |
| 34 | +#define CPUINFO_POWERPC_LINUX_FEATURE_VEC_CRYPTO UINT32_C(0x02000000) |
| 35 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HTM_NOSC UINT32_C(0x01000000) |
| 36 | +#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_3_00 UINT32_C(0x00800000) |
| 37 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_IEEE128 UINT32_C(0x00400000) |
| 38 | +#define CPUINFO_POWERPC_LINUX_FEATURE_DARN UINT32_C(0x00200000) |
| 39 | +#define CPUINFO_POWERPC_LINUX_FEATURE_SCV UINT32_C(0x00100000) |
| 40 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HTM_NO_SUSPEND UINT32_C(0x00080000) |
| 41 | +#define CPUINFO_POWERPC_LINUX_FEATURE_ARCH_3_1 UINT32_C(0x00040000) |
| 42 | +#define CPUINFO_POWERPC_LINUX_FEATURE_HAS_MMA UINT32_C(0x00020000) |
43 | 43 |
|
44 | 44 | #define CPUINFO_POWERPC_LINUX_VALID_ARCHITECTURE UINT32_C(0x00010000) |
45 | | -#define CPUINFO_POWERPC_LINUX_VALID_IMPLEMENTER UINT32_C(0x00020000) |
46 | | -#define CPUINFO_POWERPC_LINUX_VALID_REVISION UINT32_C(0x00040000) |
47 | | -#define CPUINFO_POWERPC_LINUX_VALID_PROCESSOR UINT32_C(0x00080000) |
48 | | -#define CPUINFO_POWERPC_LINUX_VALID_VERSION UINT32_C(0x00100000) |
49 | | -#define CPUINFO_POWERPC_LINUX_VALID_FEATURES UINT32_C(0x00200000) |
50 | | -#define CPUINFO_POWERPC_LINUX_VALID_PVR UINT32_C(0x001F0000) |
| 45 | +#define CPUINFO_POWERPC_LINUX_VALID_IMPLEMENTER UINT32_C(0x00020000) |
| 46 | +#define CPUINFO_POWERPC_LINUX_VALID_REVISION UINT32_C(0x00040000) |
| 47 | +#define CPUINFO_POWERPC_LINUX_VALID_PROCESSOR UINT32_C(0x00080000) |
| 48 | +#define CPUINFO_POWERPC_LINUX_VALID_VERSION UINT32_C(0x00100000) |
| 49 | +#define CPUINFO_POWERPC_LINUX_VALID_FEATURES UINT32_C(0x00200000) |
| 50 | +#define CPUINFO_POWERPC_LINUX_VALID_PVR UINT32_C(0x001F0000) |
51 | 51 |
|
52 | 52 | /** |
53 | 53 | * Definition of a powerpc64 Linux processor. It is composed of the base processor |
@@ -99,10 +99,14 @@ struct cpuinfo_powerpc_linux_processor { |
99 | 99 | * @param[isa] - Reference to cpuinfo_powerpc_isa structure to populate. |
100 | 100 | */ |
101 | 101 | void cpuinfo_powerpc_linux_hwcap_from_getauxval(uint32_t isa_feature[]); |
102 | | -CPUINFO_INTERNAL void cpuinfo_ppc64_linux_decode_isa_from_hwcap(uint32_t hwcap, uint32_t hwcap2, struct cpuinfo_powerpc_isa isa[restrict static 1]); |
| 102 | +CPUINFO_INTERNAL void cpuinfo_ppc64_linux_decode_isa_from_hwcap( |
| 103 | + uint32_t hwcap, |
| 104 | + uint32_t hwcap2, |
| 105 | + struct cpuinfo_powerpc_isa isa[restrict static 1]); |
103 | 106 |
|
104 | 107 | bool cpuinfo_powerpc_linux_parse_proc_cpuinfo( |
105 | | - uint32_t max_processors_count,struct cpuinfo_powerpc_linux_processor processors[restrict static max_processors_count]); |
| 108 | + uint32_t max_processors_count, |
| 109 | + struct cpuinfo_powerpc_linux_processor processors[restrict static max_processors_count]); |
106 | 110 |
|
107 | 111 | /* Used to determine which uarch is associated with the current thread. */ |
108 | 112 | extern CPUINFO_INTERNAL const uint32_t* cpuinfo_linux_cpu_to_uarch_index_map; |
0 commit comments