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 | |