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