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