1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (C) 2023 WANG Xuerui <git@xen0n.name>
4 *
5 * raid6/loongarch.h
6 *
7 * Definitions common to LoongArch RAID-6 code only
8 */
9
10#ifndef _LIB_RAID6_LOONGARCH_H
11#define _LIB_RAID6_LOONGARCH_H
12
13#ifdef __KERNEL__
14
15#include <asm/cpu-features.h>
16#include <asm/fpu.h>
17
18#else /* for user-space testing */
19
20#include <sys/auxv.h>
21
22/* have to supply these defines for glibc 2.37- and musl */
23#ifndef HWCAP_LOONGARCH_LSX
24#define HWCAP_LOONGARCH_LSX	(1 << 4)
25#endif
26#ifndef HWCAP_LOONGARCH_LASX
27#define HWCAP_LOONGARCH_LASX	(1 << 5)
28#endif
29
30#define kernel_fpu_begin()
31#define kernel_fpu_end()
32
33#define cpu_has_lsx	(getauxval(AT_HWCAP) & HWCAP_LOONGARCH_LSX)
34#define cpu_has_lasx	(getauxval(AT_HWCAP) & HWCAP_LOONGARCH_LASX)
35
36#endif /* __KERNEL__ */
37
38#endif /* _LIB_RAID6_LOONGARCH_H */
39