Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm64/include/asm/cpucaps.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0-only */
2
3
#ifndef __ASM_CPUCAPS_H
4
#define __ASM_CPUCAPS_H
5
6
#include <asm/cpucap-defs.h>
7
8
#ifndef __ASSEMBLY__
9
#include <linux/types.h>
10
/*
11
* Check whether a cpucap is possible at compiletime.
12
*/
13
static __always_inline bool
14
cpucap_is_possible(const unsigned int cap)
15
{
16
compiletime_assert(__builtin_constant_p(cap),
17
"cap must be a constant");
18
compiletime_assert(cap < ARM64_NCAPS,
19
"cap must be < ARM64_NCAPS");
20
21
switch (cap) {
22
case ARM64_HAS_PAN:
23
return IS_ENABLED(CONFIG_ARM64_PAN);
24
case ARM64_HAS_EPAN:
25
return IS_ENABLED(CONFIG_ARM64_EPAN);
26
case ARM64_SVE:
27
return IS_ENABLED(CONFIG_ARM64_SVE);
28
case ARM64_SME:
29
case ARM64_SME2:
30
case ARM64_SME_FA64:
31
return IS_ENABLED(CONFIG_ARM64_SME);
32
case ARM64_HAS_CNP:
33
return IS_ENABLED(CONFIG_ARM64_CNP);
34
case ARM64_HAS_ADDRESS_AUTH:
35
case ARM64_HAS_GENERIC_AUTH:
36
return IS_ENABLED(CONFIG_ARM64_PTR_AUTH);
37
case ARM64_HAS_GIC_PRIO_MASKING:
38
return IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI);
39
case ARM64_MTE:
40
return IS_ENABLED(CONFIG_ARM64_MTE);
41
case ARM64_BTI:
42
return IS_ENABLED(CONFIG_ARM64_BTI);
43
case ARM64_HAS_TLB_RANGE:
44
return IS_ENABLED(CONFIG_ARM64_TLB_RANGE);
45
case ARM64_HAS_S1POE:
46
return IS_ENABLED(CONFIG_ARM64_POE);
47
case ARM64_HAS_GCS:
48
return IS_ENABLED(CONFIG_ARM64_GCS);
49
case ARM64_HAFT:
50
return IS_ENABLED(CONFIG_ARM64_HAFT);
51
case ARM64_UNMAP_KERNEL_AT_EL0:
52
return IS_ENABLED(CONFIG_UNMAP_KERNEL_AT_EL0);
53
case ARM64_WORKAROUND_843419:
54
return IS_ENABLED(CONFIG_ARM64_ERRATUM_843419);
55
case ARM64_WORKAROUND_1742098:
56
return IS_ENABLED(CONFIG_ARM64_ERRATUM_1742098);
57
case ARM64_WORKAROUND_2645198:
58
return IS_ENABLED(CONFIG_ARM64_ERRATUM_2645198);
59
case ARM64_WORKAROUND_2658417:
60
return IS_ENABLED(CONFIG_ARM64_ERRATUM_2658417);
61
case ARM64_WORKAROUND_CAVIUM_23154:
62
return IS_ENABLED(CONFIG_CAVIUM_ERRATUM_23154);
63
case ARM64_WORKAROUND_NVIDIA_CARMEL_CNP:
64
return IS_ENABLED(CONFIG_NVIDIA_CARMEL_CNP_ERRATUM);
65
case ARM64_WORKAROUND_REPEAT_TLBI:
66
return IS_ENABLED(CONFIG_ARM64_WORKAROUND_REPEAT_TLBI);
67
case ARM64_WORKAROUND_SPECULATIVE_SSBS:
68
return IS_ENABLED(CONFIG_ARM64_ERRATUM_3194386);
69
case ARM64_MPAM:
70
/*
71
* KVM MPAM support doesn't rely on the host kernel supporting MPAM.
72
*/
73
return true;
74
case ARM64_HAS_PMUV3:
75
return IS_ENABLED(CONFIG_HW_PERF_EVENTS);
76
}
77
78
return true;
79
}
80
#endif /* __ASSEMBLY__ */
81
82
#endif /* __ASM_CPUCAPS_H */
83
84