Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/riscv/include/uapi/asm/hwprobe.h
26513 views
1
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2
/*
3
* Copyright 2023-2024 Rivos, Inc
4
*/
5
6
#ifndef _UAPI_ASM_HWPROBE_H
7
#define _UAPI_ASM_HWPROBE_H
8
9
#include <linux/types.h>
10
11
/*
12
* Interface for probing hardware capabilities from userspace, see
13
* Documentation/arch/riscv/hwprobe.rst for more information.
14
*/
15
struct riscv_hwprobe {
16
__s64 key;
17
__u64 value;
18
};
19
20
#define RISCV_HWPROBE_KEY_MVENDORID 0
21
#define RISCV_HWPROBE_KEY_MARCHID 1
22
#define RISCV_HWPROBE_KEY_MIMPID 2
23
#define RISCV_HWPROBE_KEY_BASE_BEHAVIOR 3
24
#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
25
#define RISCV_HWPROBE_KEY_IMA_EXT_0 4
26
#define RISCV_HWPROBE_IMA_FD (1 << 0)
27
#define RISCV_HWPROBE_IMA_C (1 << 1)
28
#define RISCV_HWPROBE_IMA_V (1 << 2)
29
#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
30
#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
31
#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
32
#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
33
#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
34
#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
35
#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
36
#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
37
#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
38
#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
39
#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
40
#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
41
#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
42
#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
43
#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
44
#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
45
#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
46
#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
47
#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
48
#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
49
#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
50
#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
51
#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
52
#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
53
#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
54
#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
55
#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
56
#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
57
#define RISCV_HWPROBE_EXT_ZVFHMIN (1ULL << 31)
58
#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
59
#define RISCV_HWPROBE_EXT_ZTSO (1ULL << 33)
60
#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
61
#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
62
#define RISCV_HWPROBE_EXT_ZIHINTPAUSE (1ULL << 36)
63
#define RISCV_HWPROBE_EXT_ZVE32X (1ULL << 37)
64
#define RISCV_HWPROBE_EXT_ZVE32F (1ULL << 38)
65
#define RISCV_HWPROBE_EXT_ZVE64X (1ULL << 39)
66
#define RISCV_HWPROBE_EXT_ZVE64F (1ULL << 40)
67
#define RISCV_HWPROBE_EXT_ZVE64D (1ULL << 41)
68
#define RISCV_HWPROBE_EXT_ZIMOP (1ULL << 42)
69
#define RISCV_HWPROBE_EXT_ZCA (1ULL << 43)
70
#define RISCV_HWPROBE_EXT_ZCB (1ULL << 44)
71
#define RISCV_HWPROBE_EXT_ZCD (1ULL << 45)
72
#define RISCV_HWPROBE_EXT_ZCF (1ULL << 46)
73
#define RISCV_HWPROBE_EXT_ZCMOP (1ULL << 47)
74
#define RISCV_HWPROBE_EXT_ZAWRS (1ULL << 48)
75
#define RISCV_HWPROBE_EXT_SUPM (1ULL << 49)
76
#define RISCV_HWPROBE_EXT_ZICNTR (1ULL << 50)
77
#define RISCV_HWPROBE_EXT_ZIHPM (1ULL << 51)
78
#define RISCV_HWPROBE_EXT_ZFBFMIN (1ULL << 52)
79
#define RISCV_HWPROBE_EXT_ZVFBFMIN (1ULL << 53)
80
#define RISCV_HWPROBE_EXT_ZVFBFWMA (1ULL << 54)
81
#define RISCV_HWPROBE_EXT_ZICBOM (1ULL << 55)
82
#define RISCV_HWPROBE_EXT_ZAAMO (1ULL << 56)
83
#define RISCV_HWPROBE_EXT_ZALRSC (1ULL << 57)
84
#define RISCV_HWPROBE_EXT_ZABHA (1ULL << 58)
85
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
86
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
87
#define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
88
#define RISCV_HWPROBE_MISALIGNED_SLOW (2 << 0)
89
#define RISCV_HWPROBE_MISALIGNED_FAST (3 << 0)
90
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
91
#define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
92
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
93
#define RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS 7
94
#define RISCV_HWPROBE_KEY_TIME_CSR_FREQ 8
95
#define RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF 9
96
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNKNOWN 0
97
#define RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED 1
98
#define RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW 2
99
#define RISCV_HWPROBE_MISALIGNED_SCALAR_FAST 3
100
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPORTED 4
101
#define RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF 10
102
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN 0
103
#define RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW 2
104
#define RISCV_HWPROBE_MISALIGNED_VECTOR_FAST 3
105
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED 4
106
#define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
107
#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
108
#define RISCV_HWPROBE_KEY_VENDOR_EXT_SIFIVE_0 13
109
/* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
110
111
/* Flags */
112
#define RISCV_HWPROBE_WHICH_CPUS (1 << 0)
113
114
#endif
115
116