/* | |
* SPDX-License-Identifier: GPL-2.0-or-later | |
* Host specific cpu identification for LoongArch. | |
*/ | |
#include "qemu/osdep.h" | |
#include "host/cpuinfo.h" | |
#ifdef CONFIG_GETAUXVAL | |
# include <sys/auxv.h> | |
#else | |
# include "elf.h" | |
#endif | |
#include <asm/hwcap.h> | |
unsigned cpuinfo; | |
/* Called both as constructor and (possibly) via other constructors. */ | |
unsigned __attribute__((constructor)) cpuinfo_init(void) | |
{ | |
unsigned info = cpuinfo; | |
unsigned long hwcap; | |
if (info) { | |
return info; | |
} | |
hwcap = qemu_getauxval(AT_HWCAP); | |
info = CPUINFO_ALWAYS; | |
info |= (hwcap & HWCAP_LOONGARCH_LSX ? CPUINFO_LSX : 0); | |
cpuinfo = info; | |
return info; | |
} |