| /* | 
 |  * 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); | 
 |     info |= (hwcap & HWCAP_LOONGARCH_LASX ? CPUINFO_LASX : 0); | 
 |  | 
 |     cpuinfo = info; | 
 |     return info; | 
 | } |