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