/* * 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; }