| /* cpu_features.h -- CPU architecture feature check |
| * Copyright (C) 2017 Hans Kristian Rosbach |
| * For conditions of distribution and use, see copyright notice in zlib.h |
| */ |
| |
| #ifndef CPU_FEATURES_H_ |
| #define CPU_FEATURES_H_ |
| |
| #if defined(X86_FEATURES) |
| # include "arch/x86/x86_features.h" |
| #elif defined(ARM_FEATURES) |
| # include "arch/arm/arm_features.h" |
| #elif defined(PPC_FEATURES) || defined(POWER_FEATURES) |
| # include "arch/power/power_features.h" |
| #elif defined(S390_FEATURES) |
| # include "arch/s390/s390_features.h" |
| #elif defined(RISCV_FEATURES) |
| # include "arch/riscv/riscv_features.h" |
| #endif |
| |
| #include "arch/generic/generic_features.h" |
| |
| struct cpu_features { |
| #if defined(X86_FEATURES) |
| struct x86_cpu_features x86; |
| #elif defined(ARM_FEATURES) |
| struct arm_cpu_features arm; |
| #elif defined(PPC_FEATURES) || defined(POWER_FEATURES) |
| struct power_cpu_features power; |
| #elif defined(S390_FEATURES) |
| struct s390_cpu_features s390; |
| #elif defined(RISCV_FEATURES) |
| struct riscv_cpu_features riscv; |
| #else |
| char empty; |
| #endif |
| }; |
| |
| void cpu_check_features(struct cpu_features *features); |
| |
| #endif |