diff options
Diffstat (limited to 'util/cpuinfo-ppc.c')
-rw-r--r-- | util/cpuinfo-ppc.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/util/cpuinfo-ppc.c b/util/cpuinfo-ppc.c index b2d8893..4d3d3aa 100644 --- a/util/cpuinfo-ppc.c +++ b/util/cpuinfo-ppc.c @@ -6,11 +6,21 @@ #include "qemu/osdep.h" #include "host/cpuinfo.h" -#include <asm/cputable.h> -#ifdef CONFIG_GETAUXVAL +#ifdef CONFIG_LINUX +# include <asm/cputable.h> +# ifdef CONFIG_GETAUXVAL +# include <sys/auxv.h> +# else +# include "elf.h" +# endif +#endif +#if defined(CONFIG_ELF_AUX_INFO) # include <sys/auxv.h> -#else -# include "elf.h" +# include <machine/cpu.h> +# ifndef PPC_FEATURE2_ARCH_3_1 +# define PPC_FEATURE2_ARCH_3_1 0 +# endif +# define PPC_FEATURE2_VEC_CRYPTO PPC_FEATURE2_HAS_VEC_CRYPTO #endif unsigned cpuinfo; @@ -19,16 +29,17 @@ unsigned cpuinfo; unsigned __attribute__((constructor)) cpuinfo_init(void) { unsigned info = cpuinfo; - unsigned long hwcap, hwcap2; if (info) { return info; } - hwcap = qemu_getauxval(AT_HWCAP); - hwcap2 = qemu_getauxval(AT_HWCAP2); info = CPUINFO_ALWAYS; +#if defined(CONFIG_LINUX) || defined(CONFIG_ELF_AUX_INFO) + unsigned long hwcap = qemu_getauxval(AT_HWCAP); + unsigned long hwcap2 = qemu_getauxval(AT_HWCAP2); + /* Version numbers are monotonic, and so imply all lower versions. */ if (hwcap2 & PPC_FEATURE2_ARCH_3_1) { info |= CPUINFO_V3_1 | CPUINFO_V3_0 | CPUINFO_V2_07 | CPUINFO_V2_06; @@ -58,6 +69,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) } } } +#endif cpuinfo = info; return info; |