xref: /linux/arch/riscv/include/uapi/asm/hwprobe.h (revision e178bf146e4b8c774a7b00aa2419e400f4f7894f)
1ea3de9ceSEvan Green /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2ea3de9ceSEvan Green /*
3ea3de9ceSEvan Green  * Copyright 2023 Rivos, Inc
4ea3de9ceSEvan Green  */
5ea3de9ceSEvan Green 
6ea3de9ceSEvan Green #ifndef _UAPI_ASM_HWPROBE_H
7ea3de9ceSEvan Green #define _UAPI_ASM_HWPROBE_H
8ea3de9ceSEvan Green 
9ea3de9ceSEvan Green #include <linux/types.h>
10ea3de9ceSEvan Green 
11ea3de9ceSEvan Green /*
12ea3de9ceSEvan Green  * Interface for probing hardware capabilities from userspace, see
13ed843ae9SCosta Shulyupin  * Documentation/arch/riscv/hwprobe.rst for more information.
14ea3de9ceSEvan Green  */
15ea3de9ceSEvan Green struct riscv_hwprobe {
16ea3de9ceSEvan Green 	__s64 key;
17ea3de9ceSEvan Green 	__u64 value;
18ea3de9ceSEvan Green };
19ea3de9ceSEvan Green 
20ea3de9ceSEvan Green #define RISCV_HWPROBE_KEY_MVENDORID	0
21ea3de9ceSEvan Green #define RISCV_HWPROBE_KEY_MARCHID	1
22ea3de9ceSEvan Green #define RISCV_HWPROBE_KEY_MIMPID	2
2300e76e2cSEvan Green #define RISCV_HWPROBE_KEY_BASE_BEHAVIOR	3
2400e76e2cSEvan Green #define		RISCV_HWPROBE_BASE_BEHAVIOR_IMA	(1 << 0)
2500e76e2cSEvan Green #define RISCV_HWPROBE_KEY_IMA_EXT_0	4
2600e76e2cSEvan Green #define		RISCV_HWPROBE_IMA_FD		(1 << 0)
2700e76e2cSEvan Green #define		RISCV_HWPROBE_IMA_C		(1 << 1)
28162e4df1SAndy Chiu #define		RISCV_HWPROBE_IMA_V		(1 << 2)
2916252e01SPalmer Dabbelt #define		RISCV_HWPROBE_EXT_ZBA		(1 << 3)
3016252e01SPalmer Dabbelt #define		RISCV_HWPROBE_EXT_ZBB		(1 << 4)
3116252e01SPalmer Dabbelt #define		RISCV_HWPROBE_EXT_ZBS		(1 << 5)
329c7646d5SAndrew Jones #define		RISCV_HWPROBE_EXT_ZICBOZ	(1 << 6)
3362a31d6eSEvan Green #define RISCV_HWPROBE_KEY_CPUPERF_0	5
3462a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_UNKNOWN	(0 << 0)
3562a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_EMULATED	(1 << 0)
3662a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_SLOW		(2 << 0)
3762a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_FAST		(3 << 0)
3862a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_UNSUPPORTED	(4 << 0)
3962a31d6eSEvan Green #define		RISCV_HWPROBE_MISALIGNED_MASK		(7 << 0)
409c7646d5SAndrew Jones #define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE	6
41ea3de9ceSEvan Green /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */
42ea3de9ceSEvan Green 
43*e178bf14SAndrew Jones /* Flags */
44*e178bf14SAndrew Jones #define RISCV_HWPROBE_WHICH_CPUS	(1 << 0)
45*e178bf14SAndrew Jones 
46ea3de9ceSEvan Green #endif
47